Open tingsking opened 5 years ago
现在这里只有爬虫程序呀,得分有两种方法,一是利用api发送请求过去,二是利用自动化测试框架模拟观看的动作得分,现在挺多人已经用第二种方法在测试,不过貌似得分机制有点迷
有的时候观看页面没关闭的时候不显示份数,关闭以后过了几分钟就又有分数了
这里只有文章url啊,看20篇,也只能得6分
时长的计算是会检测鼠标状态的,网页大概会每隔几秒检测获取一次鼠标当前位置,只有当鼠标在网页上才能正常计时。同理视频也是,播放是没用的,要鼠标放在上面播放才行。
时长的计算是会检测鼠标状态的,网页大概会每隔几秒检测获取一次鼠标当前位置,只有当鼠标在网页上才能正常计时。同理视频也是,播放是没用的,要鼠标放在上面播放才行。
我在前端并没有找到相关代码,你确定有检测指针位置的机制吗?
时长的计算是会检测鼠标状态的,网页大概会每隔几秒检测获取一次鼠标当前位置,只有当鼠标在网页上才能正常计时。同理视频也是,播放是没用的,要鼠标放在上面播放才行。
我在前端并没有找到相关代码,你确定有检测指针位置的机制吗?
有的,对网页下断点,然后就会断在一个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);
我也不确定上面这个是不是检测的代码,我觉得markdownHere.findFocusedElem这个函数有点可疑,不过我实验过确实要鼠标放在上面才计时。
关于视频播放,如果是弹出窗口并前置播放的话,是会一直计算时间的
现在这里只有爬虫程序呀,得分有两种方法,一是利用api发送请求过去,二是利用自动化测试框架模拟观看的动作得分,现在挺多人已经用第二种方法在测试,不过貌似得分机制有点迷
得分机制是焦点在网页上时每半分钟进行的一次Post包发送。
抓了一下包,阅读文章需要将滚动条拉至文章末端(或者还有其他一些行为条件判定),才会向服务器post一个log数据包。但log数据包的加密字段太多,不花点时间去分析的话,不好构造呀
{"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"}
关于视频播放,如果是弹出窗口并前置播放的话,是会一直计算时间的
亲测即使视频没有开始播放,也是可以积分的。
post包算法在这个文件里面 https://source.xuexi.cn/script/laydate/laydate.js
logs里的track_id的算法在laydate.js里,但是不会分离调用,楼上能把laydate.js构造post包的代码端提出来吗?谢谢。
关于视频播放,如果是弹出窗口并前置播放的话,是会一直计算时间的
亲测即使视频没有开始播放,也是可以积分的。
的确,只要页面打开可以一直得分至上限,文章也是
我也不确定上面这个是不是检测的代码,我觉得markdownHere.findFocusedElem这个函数有点可疑,不过我实验过确实要鼠标放在上面才计时。
如果光是打开页面,确实是不行的。页面要滚动一下就可以了。
扫一遍文章就能得分了,分没见增加啊