导入所需模块和库: 导入了用于发送HTTP请求、处理正则表达式、Base64编码等功能的Python模块。 python
import requests import time import json import re import base64 定义函数解析Cookie字符串: 定义了一个函数 parseCookiestr,用于解析Cookie字符串并返回Cookie字典。 python
def parseCookiestr(cookie_str): """解析cookie""" cookielist = [] for item in cookie_str.split(';'): try: cookie={} itemname=item.split('=')[0] iremvalue=item.split('=')[1] cookie['name']=itemname cookie['value']=urllib.parse.unquote(iremvalue) cookielist.append(cookie) except: pass return cookielist 定义函数调用打码API识别验证码: 定义了一个函数 dama_api,用于调用第三方打码接口识别验证码图片,并返回识别结果。 python
def dama_api(img_b64): token = '打码token' # 打码接口非常便宜,有需要请联系 v:466867714 api = f'http://api.h3blog.com/yzm_api/xuanzhuan/{token}/b64' result = requests.post(api,data={"img":img_b64}).text print('打码返回数据:', result) result = json.loads(result) return result['data'] 定义类BaiduAiqichaRotate并初始化: 定义了一个类 BaiduAiqichaRotate,包含了获取验证码图片和验证的相关方法,以及初始化函数。在初始化函数中设置了请求头和Cookie,并创建了一个会话 session。 python Copy code class BaiduAiqichaRotate: def init(self): self.session = requests.session() self.headers = { # 设置请求头 } cookie = requests.cookies.RequestsCookieJar() cookies = '百度cookie' cookielist = parseCookiestr(cookies) for item in cookielist: cookie.set(item['name'], item['value']) self.session.cookies.update(cookie) 获取图片请求数据: 定义了一个方法 get_image_request_data,用于发送请求获取需要获取图片的参数,并解析响应,提取关键参数。 python
def get_image_request_data(self): # 发送请求获取需要获取图片的参数 # 解析响应,提取关键参数 # 返回关键参数字典 获取图片并识别验证码: 定义了一个方法 get_img,用于构造请求获取验证码图片和相关参数,并调用打码API识别验证码图片。 python Copy code def get_img(self, item): # 构造请求,获取验证码图片和相关参数 # 下载验证码图片并保存 # 返回验证码图片路径和相关参数字典 构造轨迹和验证参数: 定义了一个方法 verify_data,用于根据获取的验证码旋转角度和其他参数,构造轨迹和验证参数,然后提交验证请求。
def verify_data(self, item): # 构造轨迹和验证参数 # 提交验证请求 # 返回验证结果 主程序入口,执行整个流程: 在主程序中实例化类 BaiduAiqichaRotate,调用各个方法执行整个流程。 python
if name == 'main': bs = BaiduAiqichaRotate() item = bs.get_image_request_data() item_img = bs.get_img(item) with open('img.png',mode='rb') as f : content = f.read() base64_data = base64.b64encode(content) angle = dama_api(base64_data) item_img['angle'] = angle ret_data = bs.verify_data(item_img) if 1 == ret_data['data']['op']: print("验证通过") 更多内容联系q1436423940