失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Python使用网络抓包的方式 利用超级鹰平台识别验证码登录爬取古诗文网 上篇--识别验证码

Python使用网络抓包的方式 利用超级鹰平台识别验证码登录爬取古诗文网 上篇--识别验证码

时间:2019-10-19 13:20:10

相关推荐

Python使用网络抓包的方式 利用超级鹰平台识别验证码登录爬取古诗文网 上篇--识别验证码

Python使用网络抓包的方式,利用超级鹰平台识别验证码登录,《爬取古诗文网》。

上篇–识别验证码

序言:

哈喽,各位小可爱们,我又来了,这次我新学习到的内容是python爬虫识别验证码。我这次用的是网络抓包工具来爬取,就是直接使用Requests模块进行抓取数据,除此之外还需要借助超级鹰平台进行验证码识别。

废话不多说,直接上代码:

import timeimport requestsfrom chaojiying import Chaojiying_Clienttime1=str(int(time.time()*1000))url="/RandCode.ashx?"f_url=url+time1headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.70"}params={"t":time1}response=requests.get(url=url,headers=headers,params=params)img=response.contentwith open("img.jpg","wb") as f:f.write(img)chaojiying = Chaojiying_Client('用户名', '密码', '软件id')#用户中心>>软件ID 生成一个替换 96001im = open('img.jpg', 'rb').read()#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//print("识别结果:",chaojiying.PostPic(im, 1902)["pic_str"])

上面是全部代码,接下来就由我为大家进行详细地讲解…

1.导入相关模块

在这里我们需要调用的模块有time,requests,以及从本地文件中调取chaojiying相关类。

import timeimport requestsfrom chaojiying import Chaojiying_Clienttime1=str(int(time.time()*1000)) #导入相关模块

1.time是用来计算时间戳(关于时间戳的解释)的,以及time的具体用法。在这里我们主要用的是time.time()方法,来返回一个时间戳。

2.requests模块模拟浏览器发送请求,具体用到get方法,在我的爬取彼岸图网的这篇文章中已经解释了为什么用get方法而不是post方法。

3.从本地文件中引入相关模块。

2.利用网络抓包工具抓取url,并发起请求

首先,我们打开古诗文网,点击“我的”,进入登陆页面,明确我们此次的目的是识别验证码。

然后,打开我们的抓包工具,就是点击鼠标右键,会出现“检查”选项,点击“检查”,进入抓取界面。附图:

这是我们打开抓包界面之后的出现的界面:

点击验证码,查看抓包界面中的”network"或者是“网络”选项,之后会出现一张图片的链接(图片的格式一般是jpg或者gif):

再点击它,出现:

1.我们用到的具体信息就是红线圈出的部分。查看“请求URL”中的upl信息,我们可以发现问号之后的url信息就是我们上面列的第二张图的“t”!

2.再看一下发现,这是get请求。

3.“t”的信息是什么?我们了解到验证码它随时更换的,假如你在一段时间不输入验证码,就算有这个验证码,服务器也会给你报错“验证码错误”。所以我们猜想,“t”或许跟时间戳有关。

4.我们验证一下发现“t”就是时间戳*1000,再去掉小数位!!

所以就有了下面的代码:

time1=str(int(time.time()*1000))#将时间戳转化为params参数中的 “t”url="/RandCode.ashx?"f_url=url+time1 #验证码图片的url,运用到了字符串的拼接headers={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.70"}#UA伪装params={"t":time1}response=requests.get(url=url,headers=headers,params=params) #get方法发起请求

3.获取响应数据,并保存到本地

为什么要保存数据呢?

因为超级鹰平台有一个写好的文件里需要用到“这个文件路径”。超级鹰文件部分代码如下:

if __name__ == '__main__':chaojiying = Chaojiying_Client('用户名', '用户密码', '软件id')#用户中心>>软件ID 生成一个替换 96001im = open('文件路径', 'rb').read()#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//print (chaojiying.PostPic(im, 文件类型))#1902 验证码类型 官方网站>>价格体系 3.4+版 print 后要加()

保存数据的代码如下:

img=response.content #将数据转化成二进制字节流with open("img.jpg","wb") as f:f.write(img) #with open方法

4.导入chaojiying文件相关模块,获取验证码信息

chaojiying = Chaojiying_Client('c1234567', 'Wasd11314788', '919951')#用户中心>>软件ID 生成一个替换 96001im = open('img.jpg', 'rb').read()#本地图片文件路径 来替换 a.jpg 有时WIN系统须要//print("识别结果:",chaojiying.PostPic(im, 1902)["pic_str"] #获取验证码)

超级鹰获取的验证码信息在“chaojiying.PostPic(im,1902)”这个字典里,要想访问字典的值,就需输入字典的键。

好啦,今天的内容就到此结束了,谢谢你的阅读!!!如果觉得还行,就点个小小的赞吧!

文 | 戴眼镜的it小孩纸

如果觉得《Python使用网络抓包的方式 利用超级鹰平台识别验证码登录爬取古诗文网 上篇--识别验证码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。