用腳本實現自動搶紅包

原文:http://laker.me/blog/2015/12/10/15_12010_auto_red_packet/
歡迎交換友鏈 Laker's Blog--進擊的程序媛
Github:https://github.com/younglaker
微博: 江小湖Lakerhtml

雙十一紅包沒在乎,聽朋友說搶到上百的紅包,雙十二彈出廣告隨便點了一下,心血來潮想寫了個腳本。jquery

雙十二紅包

道理都同樣,這裏以頁面 爲例,使用Chrome插件的方法(還有不少其餘實現方式,我這裏想嘗試Chrome插件的編寫)。只是作了模擬點擊。git

配置Chrome插件

本地新建一個目錄 click ,新建文件manifest.json,裏面定義了插件的配置。github

{ 
  "name": "click",
  "version": "1.0",
  "manifest_version":2,
  "description": "Red packet",
  "permissions": ["http://*/*"],
  "content_scripts":[
  {
      "matches":["https://www.taobao.com/markets/20151212/home/main-wf?mode=wow&refpid=mm_14428609_3290185_40982810&eh=fPCHhJ44zFBNUyfOh2k%2BHiZfdLHx8kQ31QInGOP2KCpZ4u2OgYu3W%2FmbDHCJJEP7X9iCfKlIJzkveuFnQMBXxMkbLKg8nWNj&ali_trackid=2:mm_14428609_3290185_40982810:1449725091_258_1788766137"],
      "js":["jquery-2.1.4.min.js","main.js"]
  }
  ]
}
  • name: 插件名json

  • manifest_version: 固定值2測試

  • content_scripts: 匹配的網站網站

  • js: 須要加載的腳本,目前manifest.json、jquery-2.1.4.min.js、main.js都放在同一目錄下。this

  • 其餘配置如ico之類都省略了,有須要請自行查找資料lua

寫腳本

先找到搶紅包的按鈕。這裏是這個圖片,沒有id、class等任何方便查詢的標記,因此採用XPath:spa

搶紅包的按鈕

同理找到再次搶紅包的按鈕的XPath:

再次搶紅包的按鈕

把如下代碼粘貼到 main.js:

$(document).ready(function() {
    
    var a = setInterval(function () {
      console.log("開始");
      
      // 點擊搶紅包
        $(document).xpathEvaluate('/html/body/div[11]/div[2]/img').click();
        
        // 點擊再來一次
        var b = setInterval(function () {
          $(document).xpathEvaluate('/html/body/div[11]/div[4]/div[2]/div[1]').click();
      }, 2000);
    }, 2000);
});

// 處理XPath
$.fn.xpathEvaluate = function (xpathExpression) {
   $this = this.first(); 

   xpathResult = this[0].evaluate(xpathExpression, this[0], null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);

   result = [];
   while (elem = xpathResult.iterateNext()) {
      result.push(elem);
   }

   $result = jQuery([]).pushStack( result );
   return $result;
}

上面的代碼已經能夠正常運行了,可是淘寶有反做弊機制,個人腳本刷了幾百下就被封了。爲了下降被封的風險,應改進代碼把間隔時間設爲隨機數,此處我就再也不寫出具體代碼了。

添加插件

Chrome開啓開發者模式,加載本身建的插件目錄便可

添加插件.png

測試

如今到搶紅包的頁面刷新後就能夠看到效果了,建議不要刷太頻繁,個人已經被封了。

反正我刷了幾百下也沒有出一個紅包,就當作練習了~

相關文章
相關標籤/搜索