微信刷票Python剧本教程

 
  在这个阶段,在微信同伙圈里举办的行为是无终点的,我相信许多学生都为此感到困扰,因为总会有小我(亲戚,同伙或其他)不时要求你帮手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 复制代码 把它做完。

投票请发投票链接,我们看后给您报价  微信咨询toupiaowin

微信客服