當(dāng)我們需要對一個網(wǎng)頁上的某個按鈕進(jìn)行多次點擊以求得某種“好處”的時候,例如天貓的搶紅包活動,我們可能需要點擊N次之后才有可能獲得一個紅包,但是這個N是一個未知數(shù),有可能我們要不停地點擊半個小時甚至一個小時都還無法獲得,自己估計也會點鼠標(biāo)點得醉了。因此,針對這種情況,我們希望自己寫一個小工具來讓計算機(jī)幫我們做這件事。
既然是讓計算機(jī)模擬我們的點擊操作,其思路自然是找到指定的按鈕或圖片,循環(huán)對其執(zhí)行click事件。于是,我們開始對其做一個最簡單的實現(xiàn)來看看其基本思路。首先,我們準(zhǔn)備一個網(wǎng)站,這里我是用ASP.NET開發(fā)了一個網(wǎng)頁,其中有一張圖片作為搶紅包的按鈕圖片,然后寫了一個一般處理程序。
(1)前端網(wǎng)頁的HTML代碼:
其顯示效果如下圖所示:
?。?)后端一般處理程序代碼:
當(dāng)用戶點擊前端網(wǎng)頁中的圖片時,會發(fā)出一個AJAX請求到服務(wù)端,服務(wù)端會生成一個1到100之間的隨機(jī)數(shù)來模擬概率,只有在隨機(jī)生成的數(shù)字達(dá)到95以上(即5%的概率)才給用戶返回獲得紅包的效果。
?、贈]有獲得紅包的點擊后的效果:
?、讷@得紅包的點擊后的效果:
新建一個WindowsForm項目,拖入一個GroupPanel、TextBox、Button以及WebBrowser控件構(gòu)成下面的界面效果:
PS:這里假設(shè)我們已經(jīng)通過查看HTML代碼知道了要模擬點擊的按鈕的id,不要告訴我說你不會查看網(wǎng)頁的源代碼哦。
void btnGetMoney_Click(object sender, EventArgs e) { AutoClick(10); }void AutoClick(int count = 1) { HtmlDocument dom = webBrowser.Document;if(dom == null) {return; }var btn = dom.GetElementById("btnGetMoney");for (int i = 0; i < count; i++) { btn.InvokeMember("click"); } }
在C#中封裝了針對DOM樹的類:HtmlDocument,每一個Html標(biāo)簽都被封裝為HtmlElement。這里我們首先通過DOM操作(GetElementById)找到要點擊的button按鈕,然后一個循環(huán)操作,通過封裝的InvokeMember方法執(zhí)行click事件。默認(rèn)情況下,這個方法只會執(zhí)行一次,當(dāng)然這里我們模擬了10次。
Chrome是什么在此就不做贅述了,想必看到這篇文章的人對其都非常熟悉。Chrome一個突出的特點就是允許用戶開發(fā)第三方插件以擴(kuò)展瀏覽器功能。雖然IE、火狐也都支持第三方插件對瀏覽器功能進(jìn)行拓展,但對其開發(fā)遠(yuǎn)沒有Chrome瀏覽器插件方便,加之Chrome瀏覽器市場占有率持續(xù)增長,大家對Chrome瀏覽器插件的開發(fā)更加感興趣。下圖是迅雷針對Chrome瀏覽器開發(fā)的擴(kuò)展插件。
?。?)插件的總目錄:manifest.json
每個Chrome插件都包含一個manifest.json的文件,這是Chrome插件的總目錄,里面定義了每個資源都是做什么的。manifest.json文件里是一個json類型的數(shù)據(jù)。
按chrome開發(fā)規(guī)范,我們首先建一個文件夾,如D:\AutoClickDemo\,在該文件夾下新建一個名為manifest.json的文本文件,并按實際情況放一個圖片文件,作為插件的圖標(biāo)。然后新建一個名為myscript.js的js腳本文件,作為我們需要自定義模擬點擊的腳本文件。最后,如果需要用到j(luò)Query,還需要把jQuery放到文件夾目錄中:
該manifest.json文件的內(nèi)容和解釋如下:
具體代碼為:
{ "name": "刷紅包(演示)", "version": "1.0", "manifest_version":2, "description": "This is a auto click plug-in, you can use it in the web site", "icons":{"16":"16.png","48":"48.png","128":"128.png"}, "permissions": ["http://*/*"], "browser_action": { "default_icon": "16.png" }, "content_scripts":[ { "matches":["http://localhost:4351/*"], "js":["jquery-1.7.1.min.js","myscript.js"] } ]}
?。?)自定義的腳本:myscript.js
剛剛manifest.json只是幫我們生成了一個目錄給Chrome瀏覽器,具體的操作還得自定義一個js腳本來生成。代碼很簡單,就是每隔1秒鐘點擊一次按鈕。寫好自定義腳本后,在Chrome瀏覽器中添加這個擴(kuò)展插件,以后在打開指定網(wǎng)頁時都會加載我們的自定義腳本來完成我們想要的操作。
?。?)為Chrome添加擴(kuò)展插件
在Chrome菜單中,選擇 工具-擴(kuò)展程序 ,進(jìn)入以下界面。然后勾選住 開發(fā)者模式,然后加載正在開發(fā)的擴(kuò)展程序。
?。?)打開指定網(wǎng)頁體驗?zāi)M點擊效果
本次的小插件開發(fā)以模擬點擊一個“搶紅包”按鈕為場景,以兩種方式實現(xiàn)了一個簡單得不能再簡單的刷紅包效果,但是其基本思路都我們都已經(jīng)了解了。以后再面對這種應(yīng)用,可以自己寫一些功能豐富的插件或者程序來實現(xiàn)了。
作者:周旭龍
聯(lián)系客服