微信刷投票脚本,微信投票刷投票脚本工作室

在这个阶段,在微信朋友圈里举行的投票活动是无止境的,我相信很多学生都为此感到困扰,因为总会有个人(亲戚,朋友或其他)不时要求你帮助TA投票。本文不打算从道德或情感层面探讨这个问题。我感兴趣的是,目前大多数投票活动实际上都是明显的漏洞,“刷票”可以通过简单的技术手段实现。

第一步是弄清楚具体的投票过程和可能的限制。 经过研究,总结如下: 投票需要登录 注册帐户需要验证电子邮件地址 登录不需要验证码 每个账户每天可以投票一次,投票数可以选择,从0到10 投票不需要验证码 请注意红字,是的,这是最关键的地方。

这语言必须是我喜欢的Python。 在工具的情况下,我实际上之前做过模拟登录。简单地说,我使用了一个模拟浏览器的Python插件,然后执行各种模拟用户操作,例如单击按钮并输入信息。 2,但这种类型的插件有两个主要问题: 很小的无头 基本上,HTML页面的操作只能应用于表单。 什么是无头的它可以简单地理解为后台操作。如果你不能做无头,你仍然需要在运行时打开浏览器,但脚本将操作浏览器。 所以我们可以看到,如果你不能做无头,它看起来不是很低端(想象一下电脑屏幕上的浏览器,然后自动输入东西,你只能坐在任何东西上,什么也做不了) ,并且使用起来非常不方便,例如没有图形界面的系统。 4,什么只能应用于表单,我们采取jQuery来比较它。 jQuery可以从HTML中出现的所有内容中进行选择,但只应用于表单意味着您只能操作表单,而您无法对其他元素做任何事情。我不知道为什么会这样。可能是对底层插件有一些限制。无论如何,大多数插件只能操纵表单。

Ghost.py支持无头并且可以操纵所有元素,甚至运行js,你知道它有多强大。唯一的缺点是依靠PyQt或PySide,你知道这两个项目,你会折磨死者。因此,如果您不想折腾,请不要再使用它。 Splinter半支持无头 splinter默认不支持headless,但在使用zope插件的前提下可以无头,因为我使用默认,所以如何做无头没有研究,有兴趣自己动手做我们开始做吧。但是,估计80%不强。 。 。 Splinter也非常强大,可以处理所有元素。 Mechanize支持无头但只能操作形式

重复我们的想法: 登录投票 因为我决定采用无头解决方案,所以我使用机械化。 如果您登录,则没有问题。登录框最初是一个表单。投票。 。 。先走吧!我们首先登录。 直接在代码上: 复制代码 #coding: utf-8 导入cookielib 导入机械化 导入urllib Br=mechanize.Browser() Cj=cookielib.LWPCookieJar() Br.set_cookiejar(CJ) Br.open() Br.select_form(NR=0) Br.form [mail]= Br.form [password]=xxxxxxx Br.submit() 复制代码 Cookielib用于操纵cookie。因为我们需要在登录后跳转到投票页面,如果我们不保留cookie,那么网站会将我们视为未登录别忘了,你正在使用代码来模拟登录,所以不要以为他会自动给你保存cookie。 代码很简单,我不解释。简而言之,打开页面输入用户名和密码提交 您可以输出结果以查看: …..同上…… Response=br.submit() 打印response.read() 我们可以看到输出HTML的单词“xxx,welcome you”,表示您已成功登录。 这是的重点。如何投票。 首先指定投票操作: 从下拉列表中选择“10”,然后单击“确定”。 我们已经知道机械化只能操纵形式,它对其他元素无能为力,所以我们无法直接模拟人类操作。 那该怎么办 让我们先考虑5秒。 。 。 。 。 。 。 。 好的,我知道你拒绝了。 那个时候我想了很久! ! ! 我们可以改变主意,投票,表面上是人工操作,但发送到服务器的最终消息实际上是一个POST请求!所以,我们可以跳过模拟并直接发送请求! 好的,这是一个明确的想法。让我们从开始吧我们POST什么 投票,告诉服务器我们投了票。 但代码是一个非常严格的事情,如果格式错误,服务器无法识别它! 好的,这次不要考虑,直接告诉你答案。 我们先投票一次,然后查看POST请求中的数据格式。 我用firebug,打开firebug,然后选择投票数,按OK按钮,你可以在firebug中看到这个POST请求的具体信息。 我们可以打开信息,您可以看到数据的格式: Z_data: 10 Id: 99 希德: 78 现在我可以看到它! Z_data是投票数,id是项目编号,sid。 。 。好的,我不知道这是什么。简而言之,写78. 获取数据格式,让我们回到代码并模拟POST请求: 参数={z_data:10, id:99, sid:78 }# POST数据 Data=urllib.urlencode(参数) 响应=br.open(,数据) 非常简单 别忘了导入urllib! 好的,让我们试验前面的代码并看看效果。 发现的投票数确实增加了,我们的方法是可行的。 然后,让我们改变它,添加一个for循环,这样我们就可以自动登录所有用户并根据我们设置的用户名和密码进行投票。 基本功能是这样的,但在使用它几天之后,我发现了一个不好的地方:如果我想在投票后检查投票,我必须手动打开页面。如果你能直接显示当前的票数,就好了! 所以我们继续这个旅程。

首先,这个想法是: 打开项目页面获得投票数显示 打开我们已经拥有的页面,br.open()将会这样做。显示也很简单,打印。那你怎么得票呢 介绍一种新工具 BeautifulSoup,汤! 我承认名字有点。 。 。 。 无论如何,继续我们的编程路径。 汤是一个解析HTML的插件,并被介绍。 我们可以用汤解析获得的HTML,然后找到与我们需要的票数相对应的元素,我们就可以得到票数。 这很简单!我们将HTML放入汤中。 。 。 。 我怎么能弄错 谷歌很长一段时间,原来HTML中有不规则的标签,分析失败了。 微软的网页最初并不符合标准。 。 。 好的,我无法解决,我该怎么办 有人给出了一个解决方案:使用lxml。 什么是lxml Lxml是一个用于解析xml的插件,但它可以解析HTML和注意力,并忽略不受管制的标记。 它恰好是我们需要的! 好的,使用官方文档?

Br=mechanize.Browser() Response=br.open() Page=etree.HTML(response.read()。lower()。decode(utf-8)) hrefs=page.xpath(uquot; //span [@ class=number n_99]quot;) 打印“当前投票:” + hrefs [0] .text 还是很简单,不解释,看看吧。 好的,所以我们整个刷票脚本完成了~~ 拍下所有代码的照片 复制代码 #coding: utf-8 导入cookielib 导入机械化 导入urllib 来自lxml import etree All_data=[[username1,password1],[username2,password2]] 对于all_data:中的i br=mechanize.Browser() cj=cookielib.LWPCookieJar() br.set_cookiejar(cj) br.open() br.select_form(nr=0) br.form [mail]=i [0] br.form [password]=i [1] br.submit() response=br.open() parameters={z_data:10, id:99, sid:78 }# POST数据 data=urllib.urlencode(参数) response=br.open(,数据) printquot;%s已成功投票! %i [0] Br=mechanize.Browser() Response=br.open() Page=etree.HTML(response.read()。lower()。decode(utf-8)) hrefs=page.xpath(uquot; //span [@ class=number n_99]quot;) 打印“当前投票:” + hrefs [0] .text 复制代码 把它做完。

发表评论

您的电子邮箱地址不会被公开。