当前位置: 首页 > news >正文

dp自动化登陆之hCaptcha 验证码

hCaptcha 是一种常见的验证码服务,用于区分人类用户和自动化程序。由于其基于图像识别和行为分析,下面介绍如何使用自动化点击验证码完成登陆。
思路:登陆目标网站触发验证码,截图并发给打码平台返回坐标,模拟人工点击完成验证

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

在这里插入图片描述

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、登陆目标网站,触发网站验证码

在这里插入图片描述

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编码

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返回目标坐标,模拟完成点击

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)

相关文章:

  • websocketpp 安装及使用
  • wordpress主题分享
  • Datawhale AI春训营 day
  • 每日算法刷题Day4 5.12:leetcode数组4道题,用时1h
  • IDEA 插件推荐:提升编程效率
  • LeetCode 2094.找出 3 位偶数:遍历3位偶数
  • 101alpha---第10
  • 16.three官方示例+编辑器+AI快速学习webgl_buffergeometry_lines_indexed
  • 嵌入式软件--stm32 DAY 6 USART串口通讯(下)
  • js fetch流式请求 AI动态生成文本,实现逐字生成渲染效果
  • 「光域」系列激光测距传感器:以光为尺,重构空间认知边界
  • Python 处理图像并生成 JSONL 元数据文件 - 固定text版本
  • Oracle19c中的全局临时表
  • 使用vite重构vue-cli的vue3项目
  • TDengine 在金融领域的应用
  • 《Head First 设计模式》第一章 - 笔记
  • 【ASR学习笔记】:语音识别领域基本术语
  • web 自动化之 Unittest 四大组件
  • 一个.Net开发的、用于自动化测试Windows应用程序的开源框架
  • Wpf学习片段
  • 海北州委常委、常务副州长桑本履新青海省供销社理事会主任
  • 哈佛新论文揭示 Transformer 模型与人脑“同步纠结”全过程!AI也会犹豫、反悔?
  • 学者纠错遭网暴,人民锐评:“饭圈”该走出畸形的怪圈了
  • 梅花奖在上海|穿上初演时的服装,“鹮仙”朱洁静再起飞
  • 普京提议恢复直接谈判,泽连斯基:望俄明日停火,乌愿谈判
  • 第19届威尼斯建筑双年展开幕,中国案例呈现“容·智慧”