ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 一、反爬思路 登录时要求输入验证码,每次验证码都不会一样,一次来识别人和机 普通验证码是指一般是几个数字、中文、字母的验证码,需要识别后把验证码输入到旁边的输入框中 # 二、识别思路 这类验证码的破解思路是: 1. 初始化一个session请求 2. 带上session,请求获取网页信息 3. 解析出验证码的网址 4. 带上session访问验证码 5. 将验证码图片存到本地 6. 通过超级鹰等平台在线解析验证码 7. 找到登录post的网址及参数 8. 处理参数、验证码 9. 带上带上session、参数提交post 10. 完成 # 三、识别常规验证码 第三方平台:超级鹰 [验证码类型对应参数](http://www.chaojiying.com/price.html) 先不用session,模拟获取验证码并解析验证码 ```python # 1.导入模块,超级鹰的模块需要自己下载并放到本地 import requests from lxml import etree from chaojiying import Chaojiying_Client # 2. 处理url和headers,发起请求 url='https://so.gushiwen.org/user/login.aspx?from=http://so.gushiwen.org/user/collect.aspx' headers={ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36' } pageinfo=requests.get(url=url,headers=headers).text # 3. 实例化xpath对象,解析出验证码内容 tree=etree.HTML(pageinfo) image_url='https://so.gushiwen.org/'+tree.xpath('//*[@id="imgCode"]/@src')[0] image_content=requests.get(url=image_url,headers=headers).content # 4. 验证码保存的本地 with open('a.jpg','wb') as fp: fp.write(image_content) # 实例化超级鹰对象,传入账号、密码、验证码类型,并解析验证码内容 cjy=Chaojiying_Client('noah666', 'password', '904156') im = open('a.jpg', 'rb').read() image_code=cjy.PostPic(im, 1902)['pic_str'] print(image_code) ```