前言

现在部分比赛为了推广赞助商或者比赛本身,需要参赛队伍进行网上拉票,甚至票数还会占一定比例的成绩。因此,刷票也就应运而生了。此次我们团队参加一个比赛,就需要网上投票决出前几名,作为一位技术人员,当然是得“解决”技术能解决的问题嘛,所以就写了个刷投票插件来刷一刷。

原理

 刷票的原理很简单,就是相当于模拟人登录网站去投票,只是把这个过程程序化,让程序代替人到网站去投票。具体一点说把,首先是客户端(我们)发出请求(Request)给服务端(投票网站),跟他们说,我们需要看他们网站的信息,然后服务端就会回复(Respose)我们,我们再把填好的表单发给他们(Request),他们收到后就会回复我们(Respose)。

主要内容

  • 分析网站
  • 表单提交
  • 构造代理IP池

1. 分析网站

由于每个网站需要提交的信息都不一样,那么首先我们需要对目标网站进行相对应的分析,找出他们的表单接口(也就是URL或者叫网址)以及我们需要提交的信息。

1.1 收集信息

首先我们登录目标网站

使用F12,打开审核元素,点击Network,真实地进行一次表单提交

框住的两个内容就是我们需要知道的一部分表单信息
- Request URL:请求网址,我们提交的信息就是传到这个url里面去
- Request method:请求方法,我们提交的方法

下面有两个框分别框住两个不同的信息区域,具体有什么用呢?下面就来详细解释一下这个
- Request Headers:请求头,当我们访问网站的时候,我们都需要提交一个请求头过去,以证明我们不是爬虫,而是真实的访问,所以我们要把这个拿到,以便假装我们不是爬虫。
- From Data:这就是我们要提交的数据了,现在提交的数据都是以json格式提交,按照这些信息写好我们需要提交的json数据就好

以上就是需要获得的基本信息,根据这些信息我们就可以编写刷票插件了,但作为一个对自身有高标准严要求的程序员来说,仅仅这样就足够吗?当然不会啦,我们得找一找这个提交过程有没有什么漏洞。

怎么找?分析源代码,找了找,果真还让我找到了!

看出什么没有,它这里有两个致命的漏洞:
1. 它允许提交3支或3支以上的队伍,并且没有限制最大数量,只限制了最少数量。
2. 它没有进行相同数据的筛选。

意思就是说,我们可以一次提交几百上千个,甚至上万个==相同的==数据。但我会这么做吗?考虑到后果的话肯定不会,因为没有人可以在很短时间内投很多票,要是他们追查起来,那发现还不简单?毕竟我们是在模拟真实微信刷投票,所以就投3票给自己好了,隐藏功与名。

2. 表单提交

好了,既然把收集到的数据都整理好了,那么就开始写代码进行表单提交了。

2.1 运用到的库

  • requests:非常好用的第三方库,用于表单提交

Requests库官方技术文档

把它看一遍,所有操作就没问题了,下面就来写代码吧!

2.2 构造表单信息

拿着这个代码就能去刷微信投票啦,开不开心?

# 请求头信息
headers = {'Accept': '*/*','Accept-Encoding': 'gzip','Accept-Language': 'zh-CN','Connection': 'keep-alive','Content-Length': '16','Content-Type': 'application/x-www-form-urlencoded','Host': 'www.dingnf.com','Origin': 'http://www.dingnf.com','Referer': 'http://www.dingnf.com/active/wxws_s','User-Agent': 'Mozilla/4.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.3029.110 Safari/537.36','X-Requested-With': 'XMLHttpRequest'
}# post表单网址
url = "http://www.dingnf.com/active/wxws_t"
params = {'ids': ['22', '22', '22']}
r = requests.post(url=url, data=params, headers=headers, proxies=proxies)

突然发现问题来了,只能提交一次!这是为什么?

3. 构造代理IP池

大部分投票网站都会记录投票的IP地址,避免同一个IP多次投票,那怎么办?我们能模仿真实投票,还换不了IP地址?换IP地址是可以的,不过比较麻烦,我们有一种更加简便的方法:使用代理服务器去爬去某个网站的内容,那对方网站上显示的就不是我们真实的IP地址了,而是代理服务器的IP地址,在python中,使用代理服务器设置很简单。微信拓客

3.1 找到代理IP

这里推荐西刺免费代理IP,西刺,值得你拥有

使用API可以快速获得我们需要的IP地址,当然,我们也可以做个爬虫,去爬它网站上的URL,这里就不展开说了。

3.2 构造IP代理容器

由于从API上获得的数据多出一些换行符和回车符,不利于直接提取IP地址,所以就先用正则表达式直接提取需要的信息,再写进列表里面,方便之后读取。

def WriteIPadress():all_url = [] # 存储IP地址的容器# 代理IP的网址url = "http://api.xicidaili.com/free2016.txt"r = requests.get(url=url)all_url = re.findall("\d+\.\d+\.\d+\.\d+\:\d+",r.text)with open("D:\\code\\python\\new\\Brush ticket\\IP.txt",'w') as f:for i in all_url:f.write(i)f.write('\n')return all_url

4. 主函数

count = 0 # 计数器
while count < 4000:all_url = WriteIPadress()for i in all_url:proxies = {"http": i}try:r = requests.post(url=url, data=params, headers=headers, proxies=proxies)if(r.json()['flag'] == True):count += 1print("成功投票%d次!" % (count))print(r.json())except Exception as reason:print("错误原因是:",reason)

由于某些IP地址是存在问题的,所以需要设置异常处理,以便让程序能够正常运行,而API的数据每15分钟更新一次,我们每跑完一遍列表的时间也差不多,因此也就不做其他处理了。

运行日志

源代码

完整源代码

注:以上教程仅供学习交流参考。请勿用于其它。

更多请查看:

python 自动化刷投票脚本开发 【刷微信投票】付源码相关推荐

  1. Python自动化刷投票脚本开发,微信投票再也不需要发红包了

    前言 现在部分比赛为了推广赞助商或者比赛本身,需要参赛队伍进行网上拉票,甚至票数还会占一定比例的成绩.因此,刷票也就应运而生了.此次我们团队参加一个比赛,就需要网上投票决出前几名,作为一位技术人员,当 ...

  2. 投票助力源码_微信投票助手源码

    "这感觉,实在是爽!"秦齐感受着体内充沛的力量,乃是前所未有的强悍,这比之前实在是强太多了.微信投票助手源码 "天狐雪霓裳--"小白双眼顿时变得晶亮无比,她没有 ...

  3. 微信投票系统源码开源版 投票活动制作平台源码

    分享一个微信投票系统源码,系统基于微信公众平台,含完整搭建教程和程序包,可以任意制作各种投票活动. 主要功能一览: 01.界面配色后台自定义,轻松搭建不同风格,我们后台还内置3套模板,一键随意切换 0 ...

  4. 仿京细菜谱微信小程序源码 云开发菜谱微信小程序源码

    京细菜谱是一个美食分享网站,提供优质的家常菜谱大全,仿京细菜谱小程序源码为喜欢美食的朋友提供了很多的美食烹饪教程 让您轻松学会做美食.对不同食材和地域的饮食做了不同的分类和详细的做菜方法 分类十分详细 ...

  5. 微信投票系统源码--微信投票系统开发功能介绍以及源码分享

    微信投票系统功能进行简单介绍: 1.可以自定义设置报名和投票是否需要关注. 2.除了姓名.手机.照片.参赛宣言外,自定义添加微信号.职业.年龄.地址等其他信息. 3.可以自定义设置每个微信用户投票的次 ...

  6. 报名 微信 投票 php,女神微信投票PHP源码带PC报名和手机报名吸粉做微信活动必备...

    适用规模: 萌娃投票|女神微信投票新版 带PC报名和手机报名模式 吸粉做微信活动必备工具 优化代码 运行情况: 5.3/5.4+Mysql+伪静态 安装步调: -------------------- ...

  7. 最新UI云开发壁纸微信小程序源码/+在线审核+视频教程+支持用户投稿

    目录 程序介绍 特点: 本次版本集合了前两个版本所有的功能并有以下的更新 首页截图 程序介绍 本壁纸表情包头像小程序采用(dcloud云开发)所以无需服务器与域名 支持微信QQ双端小程序也就是说可以打 ...

  8. 仿京细菜谱微信小程序源码/云开发菜谱微信小程序源码

    ☑️ 编号:ym405 ☑️ 品牌:无 ☑️ 语言:小程序 ☑️ 大小:1.8MB ☑️ 类型:云开发菜谱 ☑️ 支持:小程序

  9. 云计算Python自动化运维开发实战 三、python文件类型

    为什么80%的码农都做不了架构师?>>>    云计算Python自动化运维开发实战 三.python文件类型 导语: python常用的有3种文件类型 1. 源代码     py ...

  10. 2018python培训-2018年5月python自动化运维开发课程新班正式开课!

    2018年5月python自动化运维开发课程新班正式开课! 作者: 更新时间::2018-05-16 新推出的ansible是新出现的 自动化 运维工具 , 基于Python研发 . 糅合了众多老牌运 ...

最新文章

  1. python绘制三维曲面图-python中Matplotlib实现绘制3D图的示例代码
  2. c语言的非法字符常量,判断C语言数值常量是否合法?为什么不合法?
  3. boost :: swap交换整数数组的数组
  4. 机器学习入门必备的13张“小抄”(附下载)
  5. springBoot shiro
  6. File类的用法总结,及文件过滤器的介绍。
  7. Vue keep-alive实践总结
  8. C++ STL之min_element()与max_element()(取容器中的最大最小值)
  9. 新书问答:Agile Management
  10. linux+shell+整数计算,Shell expr命令进行整数计算的实现
  11. Atiit 常见功能 常用功能与模块的最快速解决方案
  12. 凤凰刷机,强刷 Flashing finalization failed
  13. mysql handler socket_mysql-handlersocket
  14. Python 条件语句(If else)
  15. AVR单片机(ATmega128)单片机运算乘除法大约所需时间
  16. Nature、science、cell旗下刊物
  17. 分享我用H5打造微信公众号吸粉引流的恶搞方法
  18. 思科网院 Routing and Switching Essentials ( 版本 6.00) - RSE 6.0 第 1 章考试答案
  19. 关于grafana的界面操作展示loki
  20. [IT与培训]IT培训与企业建设的思路

热门文章

  1. select2 取值 遍历 设置默认值
  2. 单相电枢绕组产生的磁通势
  3. Java之消息推送浅入浅出
  4. tiktok 手机验证_TikTok经过验证的硅谷正在创新
  5. 33款可用来抓数据的开源爬虫软件工具
  6. GitHub快速学习-一
  7. Android Studio 3.0+ 新Dex编译器D8 Desugar R8
  8. 《R语言数据挖掘》读书笔记:三、分类
  9. 新能源汽车应该何去何从?
  10. 最新推出SAP ECC EHP7最新版本IDES带演示数据,带开发ACCESS KEY。