dp自动化登陆之hCaptcha 验证码

hCaptcha 是一种常见的验证码服务,用于区分人类用户和自动化程序。由于其基于图像识别和行为分析,下面介绍如何使用自动化点击验证码完成登陆。

思路:登陆目标网站触发验证码,截图并发给打码平台返回坐标,模拟人工点击完成验证

1、注册识别 hCaptcha API,获取授权

python 复制代码
import requests
def get_rect(base64_list, title_list):
	url = "https://api.acedata.cloud/captcha/recognition/hcaptcha"
	headers = {
	    "accept": "application/json",
	    "authorization": "授权码",
	    "content-type": "application/json"
	}
	payload = {
	      "queries": base64_list,
	      "question": ",".join(title_list)
	}
	response = requests.post(url, json=payload, headers=headers).json()
	return response

2、登陆目标网站,触发网站验证码

python 复制代码
co = ChromiumOptions().headless(False).auto_port()
co.set_argument('--enable-translate')
page = ChromiumPage(co)
co.incognito()
page.get('https://www.ebay.com/sh/ord/?filter=status%3AALL_ORDERS%2Ctimerange%3APREVIOUSMONTH')
if page.title != "Security Measure":
    login(page, username_str, password_str)

3、将验证码截图获取图片并转为base64编码

python 复制代码
def land():
	page.get_screenshot(path='tmp', name='pic.jpg', full_page=True)
	rangle = (74, 10, 474, 610)  # 左、上、右、下
	img = Image.open(r'tmp/pic.jpg')
	cropped_img = img.crop(rangle)
	# 保存裁剪后的图片
	cropped_img.save(r'tmp/cropped_image.png')
	title = (79, 15, 464, 130)
	img.crop(title).save(r"tmp/title.png")
	reader = easyocr.Reader(['ch_sim', 'en'])
    result = reader.readtext(img)
    title_list = []
    for detection in result:
        print(detection[1])
        title_list.append(detection[1])
	img1 = (79, 135, 209, 260)
	img.crop(img1).save(r"tmp/img1.png")
	img2 = (209, 135, 339, 260)
	img.crop(img2).save(r"tmp/img2.png")
	img3 = (339, 135, 469,260)
	img.crop(img3).save(r"tmp/img3.png")
	img4 = (79, 265, 209, 395)
	img.crop(img4).save(r"tmp/img4.png")
	img5 = (209, 265, 339, 395)
	img.crop(img5).save(r"tmp/img5.png")
	img6 = (339, 265, 469, 395)
	img.crop(img6).save(r"tmp/img6.png")
	img7 = (79, 395, 209, 525)
	img.crop(img7).save(r"tmp/img7.png")
	img8 = (209, 395, 339, 525)
	img.crop(img8).save(r"tmp/img8.png")
	img9 = (339, 395, 469, 525)
	img.crop(img9).save(r"tmp/img9.png")
	base64_list = []
	for i in range(1, 10):
	    with  open(f'tmp/img{i}.png', "rb") as img_file:
	        encoded_string = base64.b64encode(img_file.read()).decode('utf-8')
	        base64_list.append(encoded_string)
	return base64_list,title_list

4、将图片列表和标题传入图片识别api返回目标坐标,模拟完成点击

python 复制代码
res = get_rect(base64_list, 'tmp/title.png')
objects = res["solution"]["objects"]
img_list = [img1, img2, img3, img4, img5, img6, img7, img8, img9]
print("1111", objects)
for i in range(9):
    if objects[i]:
        target = ((int(img_list[i][0]) + int(img_list[i][2])) / 2, (int(img_list[i][1]) + int(img_list[i][3])) / 2)
        page.actions.move_to(target).click()
        time.sleep(1)
相关推荐
吴名氏.21 分钟前
Java转AI Agent教程(第二周)超时重试与错误分类
java·人工智能·python·分类·ai agent
青少儿编程课堂23 分钟前
2026蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:堆排序与优先队列解析
c++·python·算法·bfs·信息学竞赛
Eiceblue24 分钟前
用 Python 给 Word 文档加水印:文字、图片与批量处理
开发语言·vscode·python·word
Android小码家37 分钟前
framework&framework-minus-apex&android.jar的区别
android·python·jar
lee_curry41 分钟前
第十周完整学习笔记:继续升级为“检索更准、权限安全、索引可维护、失败可恢复、长期可运行”的企业级 RAG 系统
python·ai·langchain·agent·langgraph
Ivanqhz1 小时前
MoE + LLM 应用
数据库·人工智能·pytorch·python·深度学习·算法·1024程序员节
Mr. zhihao1 小时前
Deep Agent 架构深度解析:主Agent与子Agent完整交互机制与核心参数作用
python·ai·langgraph·deepagent
狗凯之家源码网2 小时前
iOS C2 V2 与 Python FastAPI 全链路远控系统深度评测
python·ios·fastapi
超级架构师2 小时前
让 Fortran 模型自己调用 Agent:原生 Fortran 2008 实现深度剖析
人工智能·python·架构·机器人·开源·fortran
小蒜学长2 小时前
基于Django+Vue喵汪联盟宠物领养系统的设计与实现(代码+数据库+LW)
后端·python·django·宠物领养系统·流程规范化