jquery中防刷IP流量軟件影響統(tǒng)計(jì)的一點(diǎn)對(duì)策
遭遇刷IP、刷流量軟件的困擾
本以為有效控制同一天對(duì)同一個(gè)IP僅算一次的方案就能有效防止用戶(hù)多次刷新地址作弊的現(xiàn)象,我得承認(rèn)涉世未深孤陋寡聞 - -,一直忽視現(xiàn)在的刷流量軟件如此的強(qiáng)大,我們的項(xiàng)目也遭遇使用刷流量軟件的情況,因而產(chǎn)生不少垃圾數(shù)據(jù),甚至影響統(tǒng)計(jì)的準(zhǔn)確性。
為解決這種情況也特意下載了兩款知名度比較高的刷流量軟件“流量寶”和“流量精靈”了解一下,不用不知道,一用確實(shí)是個(gè)好東西。
這兩款軟件的原理都一樣,估計(jì)其它的也差不多吧,就是利用網(wǎng)絡(luò)互訪原理,利用網(wǎng)絡(luò)節(jié)點(diǎn)地域差異性,用戶(hù)隨機(jī)性,使訪問(wèn)效果真實(shí)有效,也就是你的電腦掛著一個(gè)刷流量的軟件的時(shí)候,你的地址會(huì)被也在掛機(jī)的所有用戶(hù)訪問(wèn),當(dāng)然人家?guī)湍闼⒌耐瑫r(shí)你也在幫人家刷,這一切功夫軟件都在背后幫你完成,掛上幾分鐘馬上就能看到流量慢慢上來(lái),說(shuō)了不少?gòu)U話,下面也說(shuō)說(shuō)對(duì)策。
應(yīng)對(duì)方案
鑒于部分網(wǎng)友不喜歡看全文就下斷論的情況,這里強(qiáng)調(diào)一下,所有提交的后臺(tái)的數(shù)據(jù)都有做IP檢查的,而本文討論的就是基于這種情況下被刷IP的應(yīng)對(duì)方案。
方案一:通過(guò)Ajax異步提交數(shù)據(jù)(無(wú)效)
起初推廣地址被點(diǎn)擊時(shí)在后臺(tái)解析頁(yè)面是會(huì)先記錄訪客的IP、時(shí)間等信息,這種方式顯然很難防不了刷流量軟件,因此便考慮通過(guò)Ajax異步提交數(shù)據(jù)的形式。
剛開(kāi)始還是低估這些流氓軟件,以為只是通過(guò)簡(jiǎn)單的模擬http請(qǐng)求不會(huì)觸發(fā)js腳本,所以第一種方案是通過(guò)頁(yè)面加載完成后,通過(guò)ajax異步提交記錄請(qǐng)求,結(jié)果無(wú)效,實(shí)驗(yàn)證明此方式僅對(duì)比較低級(jí)的機(jī)器人有效;
方案二:判斷請(qǐng)求的客戶(hù)端瀏覽器窗口寬度或高度(無(wú)效)
通過(guò)方案一可推測(cè)這些流量軟件不是單純的模擬http請(qǐng)求, 也就是通過(guò)真實(shí)的瀏覽器請(qǐng)求的,但我掛機(jī)“被”幫別人刷流量的同時(shí),并未看到任何網(wǎng)頁(yè)的打開(kāi),只能通過(guò)抓包工具看到不停的請(qǐng)求,那我猜想這些刷流量軟件是不是隱藏了一個(gè)瀏覽器窗口,或者將瀏覽器窗口設(shè)置得很小很小……對(duì)此猜想我通過(guò)js判斷客戶(hù)端當(dāng)前打開(kāi)的瀏覽器窗口區(qū)域是否大于某個(gè)值(如寬300px,高200px,相信沒(méi)什么人會(huì)用這么小的區(qū)域看網(wǎng)站吧~),超過(guò)一個(gè)下限值才通過(guò)Ajax提交數(shù)據(jù)。
結(jié)果還是無(wú)效,對(duì)此也特意寫(xiě)了小程序記錄每一個(gè)請(qǐng)求的瀏覽器類(lèi)型、窗口大小……,結(jié)果令我無(wú)語(yǔ),請(qǐng)求的瀏覽器可視區(qū)域都很正常,甚至分辨率很多比我的顯示器還高,自我鄙視ing……
方案三: 通過(guò)鼠標(biāo)事件作為正常訪問(wèn)的依據(jù) (有效)
通過(guò)幾番試驗(yàn),得出的結(jié)論是這些機(jī)器人并不簡(jiǎn)單,但畢竟是機(jī)器人,那就考慮通過(guò)鼠標(biāo)事件判斷是否機(jī)器人,如mousemove、mousedown、mouseover等,當(dāng)然也可以通過(guò)讓用戶(hù)選擇點(diǎn)擊按鈕等認(rèn)為操作作判斷依據(jù)(當(dāng)然要考慮操作體驗(yàn)好不好),下面放個(gè)簡(jiǎn)單腳本:
<script src="jquery-1.4.1.min.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function() {
var movetimes = 0; //移動(dòng)次數(shù)
$(document).mousemove(function(even) {
movetimes++;
if (movetimes > 100) { //事件被執(zhí)行次數(shù)大于n,設(shè)置個(gè)比較保守的值
$(document).unbind("mousemove"); //解除mousemove綁定
//此處執(zhí)行異步提交數(shù)據(jù)
alert("異步提交記錄請(qǐng)求!");
}
});
});
</script>
總結(jié):
經(jīng)過(guò)多番嘗試,最終在第三種方案取得成效,但也不排除日后這些機(jī)器人的不斷改進(jìn)而攻破這個(gè)簡(jiǎn)單檢驗(yàn)環(huán)節(jié),畢竟道高一尺魔高一丈。但機(jī)器人畢竟是機(jī)器人,不妨多增加點(diǎn)人為操作的條件因素作判斷,估計(jì)還是能防止這類(lèi)刷IP流量軟件影響統(tǒng)計(jì)的??赡苡捎陧?xiàng)目的特殊性,這些方案并不一定適合所有的情形,畢竟這些刷流量軟件大多都是些草根站長(zhǎng)使用并且通常都是刷自己的網(wǎng)站的:),這里也希望院子里的網(wǎng)友也提提好的建議,如何應(yīng)對(duì)這些刷流量軟件,分享下經(jīng)驗(yàn)。
- Jquery AJAX 用于計(jì)算點(diǎn)擊率(統(tǒng)計(jì))
- 基于jQuery實(shí)現(xiàn)表格數(shù)據(jù)的動(dòng)態(tài)添加與統(tǒng)計(jì)的代碼
- 統(tǒng)計(jì)jQuery中各字符串出現(xiàn)次數(shù)的工具
- jquery統(tǒng)計(jì)輸入文字的個(gè)數(shù)并對(duì)其進(jìn)行判斷
- php和jquery實(shí)現(xiàn)地圖區(qū)域數(shù)據(jù)統(tǒng)計(jì)展示數(shù)據(jù)示例
- jquery統(tǒng)計(jì)用戶(hù)選中的復(fù)選框的個(gè)數(shù)
- jQuery圓形統(tǒng)計(jì)圖開(kāi)發(fā)實(shí)例
- jquery實(shí)現(xiàn)動(dòng)靜態(tài)條形統(tǒng)計(jì)圖
相關(guān)文章
jQuery 劇場(chǎng)版 你必須知道的javascript
從零開(kāi)始學(xué)習(xí)jQuery(劇場(chǎng)版) 你必須知道的javascript2009-05-05JavaScript實(shí)現(xiàn)向select下拉框中添加和刪除元素的方法
這篇文章主要介紹了JavaScript實(shí)現(xiàn)向select下拉框中添加和刪除元素的方法,涉及jQuery中append()與remove()方法動(dòng)態(tài)操作表單元素的相關(guān)技巧,需要的朋友可以參考下2017-03-03jquery獲取table中的某行全部td的內(nèi)容方法
jquery獲取table中的某行全部td的內(nèi)容方法,需要的朋友可以參考一下2013-03-03jQuery插件zepto.js簡(jiǎn)單實(shí)現(xiàn)tab切換
這篇文章主要介紹了jQuery插件zepto.js簡(jiǎn)單實(shí)現(xiàn)tab切換的代碼,十分的簡(jiǎn)潔,有需要的小伙伴可以參考下2015-06-06jquery實(shí)現(xiàn)將獲取的顏色值轉(zhuǎn)換為十六進(jìn)制形式的方法
這篇文章主要介紹了jquery實(shí)現(xiàn)將獲取的顏色值轉(zhuǎn)換為十六進(jìn)制形式的方法,包含了完整的實(shí)例與關(guān)鍵代碼的注釋說(shuō)明,并附帶了所需知識(shí)點(diǎn)的參考文章地址,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12