验证码处理
当我们登陆某些门户网站时,如果用户连续登陆的次数超过一定次数时,就会在登陆页面中动态生成验证码,通过验证码达到分流和反爬的效果。所以我们可以借用打码平台来进行验证码的识别。
超级鹰处理验证码的实现流程:
1.对携带验证码的页面数据进行抓取;
2.可以将页面数据中验证码进行解析,验证码图片下载到本地;
3.可以将验证码图片提交给三方平台进行识别,返回验证码图片上的数据值
- 超级鹰平台:
1.在官网中进行注册(普通用户和开发者用户)
2. 在用户中心生成软件ID,主要用来接入接口的软件ID
- 1.实例代码的下载(开发文档 ---> Python实例下载)
3.使用示例代码中的源码文件中的代码进行修改,让其识别验证码图片中的数据值
代码展示:
import requests from lxml import etree from chaojiying import Chaojiying_Client # 利用超级鹰进行验证码识别 session = requests.Session() # 登陆页面url 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/75.0.3770.100 Safari/537.36" } page_text = session.get(url, headers=headers).text tree = etree.HTML(page_text) # 验证码获取地址 code_url = "https://so.gushiwen.org" + tree.xpath("//*[@id='imgCode']/@src")[0] # 动态参数获取 __VIEWSTATE = tree.xpath("//*[@id='__VIEWSTATE']/@value")[0] __VIEWSTATEGENERATOR = tree.xpath("//*[@id='__VIEWSTATEGENERATOR']/@value")[0] # 获取并保存二维码 code_data = session.get(code_url, headers=headers).content # 获取验证码时也需要携带cookie with open("./code.jpg", "wb")as f1: f1.write(code_data) # 超级鹰识别验证码 chaojiying = Chaojiying_Client('shy007', 'shy123456.', '900186') # 用户中心>>软件ID 生成一个替换 96001 im = open('code.jpg', 'rb').read() # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要// code = chaojiying.PostPic(im, 1902).get("pic_str") # 1902 验证码类型 官方网站>>价格体系 3.4+版 print 后要加() print(code) data = { "__VIEWSTATE": __VIEWSTATE, "__VIEWSTATEGENERATOR": __VIEWSTATEGENERATOR, "from": "http://so.gushiwen.org/user/collect.aspx", "email": "15364608478", "pwd": "shy123456.", "code": code, "denglu": "登录" } login_text = session.post(url=url, headers=headers, data=data).text with open("./gsww.html", "w", encoding="utf-8")as fp: fp.write(login_text)

浙公网安备 33010602011771号