代碼可以在 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 放入 js\RedirectJs內,
去manifest.json 加入擴展 可訪問 磁盤文件的相對路徑。
修改 background.js, 在要阻止的urls 列表里加入 "https://shark.douyucdn.cn/app/douyu/js/page/room/normal/mod-all1.js?v*", 這樣,才會進入回調函數callback,然后 判斷是否是 mod-all1.js 的網絡路徑,如果是則返回 本地的js.
然后 重新加載。可以愉快地 搶魚丸了。網頁標題 顯示 開箱時間,到領取時,會打開到點漢字認證 那個頁面 (只能到 這個頁面了)。