想实现自动点赞,却不懂方法?这篇文章将详细讲解如何用Python实现这个功能。
再次发车
上一篇我们已实现点赞,但没做到“自动”。这次就来讲下,怎样实现自动点赞程序。在互联网时代,自动程序能提高效率,谁不想拥有这样一个自动点赞程序?接下来,就一步步揭开它的神秘面纱。
这次探索就像重新踏上旅程,再次深入研究QQ空间与浏览器的互动。我们要运用编程知识,开启新的发现之旅,为实现自动点赞做好准备。
探索交易
当我们在浏览器地址栏输入网址回车,或点击刷新时,浏览器和Qzone会有一番“交易”。就像两个熟人交换信息一样,它们间的数据传输是实现后续功能的关键。
这一次还和上一篇一样,我们先进行抓包。这时登场的“演员”还是我的两个小号。只有有了这俩配角,才能更好观察主角数据包的表现,为分析做好铺垫。
开始抓包
登录QQ空间后,打开抓包工具,刷新页面,Fiddler里顿时闪出一排数据包。这些数据包就像忙碌的小蚂蚁,各自有着使命,不过真正的主角只有一个。
这个主角就是我们“刷新”操作时发出去的数据包。它承载着重要信息,是我们实现自动点赞的重要线索。只要抓住它,离目标就更近一步。
分析数据包
按照惯例,接下来要分析这个包了。刷新页面后,浏览器会向user.qzone.qq.com的相对路径/3236556749,使用HTTP请求中的GET方法。GET和POST方法的区分网上一搜有很多,但理解起来有点复杂。
简单来讲,GET就是向服务器发个只有headers、body为空的数据包,里面含有Cookie,索要特定内容;而POST会发包含非空headers和非空body的数据包,body中有操作内容,服务器解读后实现操作。理解这些方法,对后续编程很重要。
代码实现
现在目标明确了,要用Python3的代码实现GET方法。和上一章的POST方法类似,使用同一个函数。不同的是Host改了,method为“GET”,url固定为QQ号,body为空,只有headers里的Host不同。
以为这样就能顺利实现,结果运行代码后,出现了一串以b'\x1f\x8b'开头的莫名其妙的字符,是byte类型的。这可让人犯难了,一堆字符看着就头疼,完全不知道怎么处理。
后续挑战
面对这一串奇怪的字符,我开始疯狂百度,脑子都乱了。尝试了很多方法,都没搞清楚这究竟是什么。看来实现自动点赞程序并非一帆风顺,还有很多问题等着解决。
from http import client;
from urllib import parse;
headers = {'Host': 'user.qzone.qq.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:49.0) Gecko/20100101 Firefox/49.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
'Accept-Encoding': 'gzip, deflate',
'Cookie': '',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': 1,
'Content-Type': 'application/x-www-form-urlencoded'
}
headers['Cookie']='*************';#(自己抓)
httpClient=client.HTTPConnection('user.qzone.qq.com') #host是user.qzone.qq.com
httpClient.request("GET","/3236556749",parse.urlencode({}),headers);
#输出获得的内容
response=httpClient.getresponse();
print(response.status);#状态,成功的话是200;常见的错误403表示权限不足,404表示页面不存在。
print(response.reason);#原因,成功的话是ok;失败的话,各种原因
html=response.read();
print(html);#获得的数据包内容
可能要进一步学习字符编码、解码等知识,也可能要换个思路重新分析代码。接下来的挑战还很多,但只要坚持,肯定能实现自动点赞的目标。
你在实现类似程序时,遇到过什么难题?如果你觉得这篇文章有用,欢迎点赞和分享!