tysontxli / QIANGGUO

QG-Database
125 stars 38 forks source link

这个怎么得分? #10

Open tingsking opened 5 years ago

tingsking commented 5 years ago

扫一遍文章就能得分了,分没见增加啊

tysontxli commented 5 years ago

现在这里只有爬虫程序呀,得分有两种方法,一是利用api发送请求过去,二是利用自动化测试框架模拟观看的动作得分,现在挺多人已经用第二种方法在测试,不过貌似得分机制有点迷

napoleon1021 commented 5 years ago

有的时候观看页面没关闭的时候不显示份数,关闭以后过了几分钟就又有分数了

tingsking commented 5 years ago

这里只有文章url啊,看20篇,也只能得6分

mtnobody commented 5 years ago

时长的计算是会检测鼠标状态的,网页大概会每隔几秒检测获取一次鼠标当前位置,只有当鼠标在网页上才能正常计时。同理视频也是,播放是没用的,要鼠标放在上面播放才行。

skdwangming commented 5 years ago

时长的计算是会检测鼠标状态的,网页大概会每隔几秒检测获取一次鼠标当前位置,只有当鼠标在网页上才能正常计时。同理视频也是,播放是没用的,要鼠标放在上面播放才行。

我在前端并没有找到相关代码,你确定有检测指针位置的机制吗?

mtnobody commented 5 years ago

时长的计算是会检测鼠标状态的,网页大概会每隔几秒检测获取一次鼠标当前位置,只有当鼠标在网页上才能正常计时。同理视频也是,播放是没用的,要鼠标放在上面播放才行。

我在前端并没有找到相关代码,你确定有检测指针位置的机制吗?

有的,对网页下断点,然后就会断在一个laydate.js脚本里面,然后f10走几步你就会跳到一个神奇的contentscript.js里面,里面有段代码是这样的:

/*
 * Interval checks
 * See specific sections above for reasons why this is necessary.
 */

var forgotToRenderIntervalCheckPrefs = null;

// `elem` is optional. If not provided, the focused element will be checked.
function intervalCheck(elem) {
  var focusedElem = elem || markdownHere.findFocusedElem(window.document);
  if (!focusedElem) {
    return;
  }

  hotkeyIntervalCheck(focusedElem);
  buttonIntervalCheck(focusedElem);

  // Don't retrieve options every time. Doing so was probably causing the memory
  // leak of #108 and the errors of #113.
  if (!forgotToRenderIntervalCheckPrefs) {
    Utils.makeRequestToPrivilegedScript(
      document,
      { action: 'get-options' },
      function(prefs) {
        forgotToRenderIntervalCheckPrefs = prefs;
      });
  }
  else {
    CommonLogic.forgotToRenderIntervalCheck(
      focusedElem,
      markdownHere,
      MdhHtmlToText,
      marked,
      forgotToRenderIntervalCheckPrefs);
  }
}
setInterval(intervalCheck, 2000);
mtnobody commented 5 years ago

我也不确定上面这个是不是检测的代码,我觉得markdownHere.findFocusedElem这个函数有点可疑,不过我实验过确实要鼠标放在上面才计时。

napoleon1021 commented 5 years ago

关于视频播放,如果是弹出窗口并前置播放的话,是会一直计算时间的

mokizzz commented 5 years ago

现在这里只有爬虫程序呀,得分有两种方法,一是利用api发送请求过去,二是利用自动化测试框架模拟观看的动作得分,现在挺多人已经用第二种方法在测试,不过貌似得分机制有点迷

得分机制是焦点在网页上时每半分钟进行的一次Post包发送。

wingeva1986 commented 5 years ago

抓了一下包,阅读文章需要将滚动条拉至文章末端(或者还有其他一些行为条件判定),才会向服务器post一个log数据包。但log数据包的加密字段太多,不花点时间去分析的话,不好构造呀

wingeva1986 commented 5 years ago

抓了一下包,阅读文章需要将滚动条拉至文章末端(或者还有其他一些行为条件判定),才会向服务器post一个log数据包。但log数据包的加密字段太多,不花点时间去分析的话,不好构造呀 下面是抓包内容,第一个是刚开始阅读,第二个数据包后才计积分 {"logs":"{\"e43e220633a65f9b6d8b53712cba9caa_3ec52970-204d-11e9-9e9f-d9c17bb309b8_1550199884223\":{\"url\":\"https://www.xuexi.cn/1baf0bef5337ff3d01ec88636ec41de8/e43e220633a65f9b6d8b53712cba9caa.html\",\"pt\":\"Graphic-article\",\"tags\":\"十九大时间\",\"pid\":\"e43e220633a65f9b6d8b53712cba9caa\",\"page_uuid\":\"1baf0bef5337ff3d01ec88636ec41de8\",\"ref_page_uuid\":\"f997e76a890b0e5a053c57b19f468436\",\"read_id\":\"e43e220633a65f9b6d8b53712cba9caa_3ec52970-204d-11e9-9e9f-d9c17bb309b8_1550199884223\",\"refer\":\"https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html\",\"item_id\":\"5bd9183ecf3b5f1e0dbb5470\",\"ext\":\"\",\"duration\":3,\"et\":2,\"track_id\":\"af612a6e-1354-48ce-9996-de6a919afecf\",\"tm\":1550200089671},\"018d244441062d8916dd472a4c6a0a0b_3ec52970-204d-11e9-9e9f-d9c17bb309b8_1550199875956\":{\"url\":\"https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html\",\"pt\":\"\",\"tags\":\"\",\"pid\":\"018d244441062d8916dd472a4c6a0a0b\",\"page_uuid\":\"f997e76a890b0e5a053c57b19f468436\",\"ref_page_uuid\":\"b0b2a39e854d4612c6858aea76861d98\",\"read_id\":\"018d244441062d8916dd472a4c6a0a0b_3ec52970-204d-11e9-9e9f-d9c17bb309b8_1550199875956\",\"refer\":\"https://www.xuexi.cn/b0b2a39e854d4612c6858aea76861d98/648fafc83297345be269377aefc53c9e.html\",\"item_id\":\"\",\"ext\":\"\",\"duration\":1,\"et\":2,\"track_id\":\"6b01800c-6d2b-4079-b8f3-62fb1c762a86\",\"tm\":1550200091933},\"e43e220633a65f9b6d8b53712cba9caa_3ec52970-204d-11e9-9e9f-d9c17bb309b8_1550200093747\":{\"url\":\"https://www.xuexi.cn/b3b8898c4f6d027a197ed183061bbf0e/e43e220633a65f9b6d8b53712cba9caa.html\",\"pt\":\"Graphic-article\",\"tags\":\"十九大时间\",\"pid\":\"e43e220633a65f9b6d8b53712cba9caa\",\"page_uuid\":\"b3b8898c4f6d027a197ed183061bbf0e\",\"ref_page_uuid\":\"f997e76a890b0e5a053c57b19f468436\",\"read_id\":\"e43e220633a65f9b6d8b53712cba9caa_3ec52970-204d-11e9-9e9f-d9c17bb309b8_1550200093747\",\"refer\":\"https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html\",\"item_id\":\"5b6dbeac8951df6091f9af53\",\"ext\":\"\",\"duration\":0,\"et\":1,\"track_id\":\"d7251e13-d65d-4c11-9759-26c26dbb1885\",\"tm\":1550200094253}}","uid":"3ec52970-204d-11e9-9e9f-d9c17bb309b8","token":"a68b407582f54d0e90fffb0106d8010c","sid":"bd053c14a9b4c45ea49026fc24f35687"}

{"logs":"{\"e43e220633a65f9b6d8b53712cba9caa_3ec52970-204d-11e9-9e9f-d9c17bb309b8_1550200093747\":{\"url\":\"https://www.xuexi.cn/b3b8898c4f6d027a197ed183061bbf0e/e43e220633a65f9b6d8b53712cba9caa.html\",\"pt\":\"Graphic-article\",\"tags\":\"十九大时间\",\"pid\":\"e43e220633a65f9b6d8b53712cba9caa\",\"page_uuid\":\"b3b8898c4f6d027a197ed183061bbf0e\",\"ref_page_uuid\":\"f997e76a890b0e5a053c57b19f468436\",\"read_id\":\"e43e220633a65f9b6d8b53712cba9caa_3ec52970-204d-11e9-9e9f-d9c17bb309b8_1550200093747\",\"refer\":\"https://www.xuexi.cn/f997e76a890b0e5a053c57b19f468436/018d244441062d8916dd472a4c6a0a0b.html\",\"item_id\":\"5b6dbeac8951df6091f9af53\",\"ext\":\"\",\"duration\":30,\"et\":2,\"track_id\":\"9fc66ee4-e8d7-4095-915f-9eb3de2937bc\",\"tm\":1550200132489}}","uid":"3ec52970-204d-11e9-9e9f-d9c17bb309b8","token":"a68b407582f54d0e90fffb0106d8010c","sid":"149ce04e7ec2756f6666d1a5f70da125"}

mokizzz commented 5 years ago

关于视频播放,如果是弹出窗口并前置播放的话,是会一直计算时间的

亲测即使视频没有开始播放,也是可以积分的。

wingeva1986 commented 5 years ago

post包算法在这个文件里面 https://source.xuexi.cn/script/laydate/laydate.js

pzqluck commented 5 years ago

logs里的track_id的算法在laydate.js里,但是不会分离调用,楼上能把laydate.js构造post包的代码端提出来吗?谢谢。

napoleon1021 commented 5 years ago

关于视频播放,如果是弹出窗口并前置播放的话,是会一直计算时间的

亲测即使视频没有开始播放,也是可以积分的。

的确,只要页面打开可以一直得分至上限,文章也是

cz1980 commented 5 years ago

我也不确定上面这个是不是检测的代码,我觉得markdownHere.findFocusedElem这个函数有点可疑,不过我实验过确实要鼠标放在上面才计时。

如果光是打开页面,确实是不行的。页面要滚动一下就可以了。