代码可以在 https://pan.baidu.com/s/1uN120-18hvAzELpJCQfbXA 处下载
说思路
- 页面加载一段时间后,判断页面有没有宝箱,如果没有就停止注入js,如果有则 激活一个timer
- timer 循环判断是否还有宝箱,如果有,则把宝箱信息 写 入document.title用于提醒用户,并判断是否为验证页面,如不是则不断点击宝箱的领取按钮与进行验证按钮。
好,加入一个js 目录,添加一个 treasureBox.js,代码如下
1 function getBoxInfo() { 2 try{ 3 if ($("#treasure").css("display") == "block") { //"none"无, "block"有 4 var openBoxTimer=setInterval(function(){ 5 if ( $("#treasure").css("display") == "block") { 6 document.title =$(".peck-cdn").text(); //宝箱信息显示在网页标题上 7 //从未开过宝箱undefined,开过"none",正在开"block" 8 if ($(".geetest_fullpage_click.geetest_float.geetest_wind.geetest_click").css("display") != "block") { 9 $(".peck-cdn").click(); //点击领取 10 $(".geetest_radar_tip").click(); //点击按钮进行验证 11 } 12 }else{ 13 this.close(); 14 } 15 },800); 16 } 17 }catch(err){ 18 } 19 }; 20 21 $(document).ready(function(){ 22 if (roomObj.getRoomId() =="") { 23 return; 24 } 25 var boxInfoTimer=setTimeout("getBoxInfo()",8000); 26 });
manifest.json 加入 引用的文件
"content_scripts":[{ "js": [ … "js/treasureBox.js" ], //要注入的js … }],
就完成了,结果发现,,宝箱 并为自动打开,,要鼠标悬浮 在宝箱上面才行!
这怎么可以忍呢?? 去查查什么原因
然后,我就 搜 关键字”运气不佳,宝箱已被洗劫一空T_T”,定位到文件https://shark.douyucdn.cn/app/douyu/js/page/room/normal/mod-all2.js?v8.173 内,继续关键字 “mouseover”,” mouseenter”,” treasure”,
drawTreasure: function() { var e = this, t = e.doms, i = e.config, ... t.$treasure.on("click", function() { ... if (i.isTrueasureDraw && i.isTreasureHover && !(i.bindStatus > 0)) return ... }) },
i.isTreasureHover 就是检测了 鼠标状态,想办法删除或使之为ture都行,
好了,把 修改后的 mod-all1.js 放入 jsRedirectJs内,
去manifest.json 加入扩展 可访问 磁盘文件的相对路径。
修改 background.js, 在要阻止的urls 列表里加入 "https://shark.douyucdn.cn/app/douyu/js/page/room/normal/mod-all1.js?v*", 这样,才会进入回调函数callback,然后 判断是否是 mod-all1.js 的网络路径,如果是则返回 本地的js.
然后 重新加载。可以愉快地 抢鱼丸了。网页标题 显示 开箱时间,到领取时,会打开到点汉字认证 那个页面 (只能到 这个页面了)。