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

自动化测试与 CAPTCHA 识别指南

在进行自动化测试或 Web 爬取时,CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)是一个常见的挑战,旨在防止机器人自动访问某些网站。对于开发者而言,如何在合法合规的前提下处理 CAPTCHA 是一个关键问题。

CAPTCHA 的常见类型

  1. reCAPTCHA v2:要求用户点击“我不是机器人”或选择图片验证。
  2. reCAPTCHA v3:基于用户行为评分,无需用户交互。
  3. Cloudflare Turnstile:类似 reCAPTCHA,专注于无感验证。
  4. hCaptcha:类似于 reCAPTCHA,但更多用于隐私保护场景。
  5. 文本 CAPTCHA:用户需要输入图片中扭曲的字符。

处理 CAPTCHA 的常见方法

1. 使用第三方解决方案

市场上有多个 CAPTCHA 解决方案提供商,可以帮助自动化测试绕过验证,包括:

  • nocaptcha.io(解决验证码recaptcha、cloudflare、incapsula)

这些服务通常基于人工或 AI 解析 CAPTCHA,提供 API 供自动化工具调用。

2. 采用 Headless 浏览器优化策略

在 Selenium 或 Puppeteer 等自动化框架中,可以通过以下方法优化行为,降低被 CAPTCHA 拦截的概率:

  • 模拟真实用户行为
    • 随机鼠标移动、点击和键盘输入。
    • 适当调整访问间隔,避免固定频率操作。
  • 使用最新的浏览器指纹技术
    • 伪装 User-Agent,避免被识别为机器人。
    • 适当启用 Cookies 和 LocalStorage 记录。
  • 降低 API 请求频率
    • 避免短时间内大量访问同一页面。
    • 采用分布式 IP 或代理服务(如 BrightData、Smartproxy)。

3. 手动辅助与人工识别

对于关键任务,可以结合人工干预来解决 CAPTCHA:

  • 远程桌面手动输入:通过 RDP/VNC 远程控制,人工完成验证。
  • 团队协作:多人分工处理 CAPTCHA,以提高效率。

代码示例:Selenium 结合第三方服务

以下示例演示如何在 Selenium 中调用 2Captcha API 解决 reCAPTCHA v2:

from selenium import webdriver
import time
import requests

API_KEY = "your_2captcha_api_key"
SITE_KEY = "目标网站的reCAPTCHA_SITE_KEY"
PAGE_URL = "https://example.com"

def solve_captcha():
    response = requests.post(
        f"http://xxx.com/in.php?key={API_KEY}&method=userrecaptcha&googlekey={SITE_KEY}&pageurl={PAGE_URL}&json=1"
    ).json()
    captcha_id = response["request"]
    time.sleep(20)  # 等待解析
    result = requests.get(
        f"http://xxx.com/res.php?key={API_KEY}&action=get&id={captcha_id}&json=1"
    ).json()
    return result.get("request")

# Selenium 自动化
browser = webdriver.Chrome()
browser.get(PAGE_URL)

captcha_solution = solve_captcha()
if captcha_solution:
    browser.execute_script(f'document.getElementById("g-recaptcha-response").innerHTML = "{captcha_solution}";')
    time.sleep(2)
    browser.find_element("submit_button_selector").click()

browser.quit()

结论

在 Web 自动化中,CAPTCHA 是一道重要的安全屏障。合法合规的应对方法包括使用第三方 API、优化自动化策略、采用人工干预等。在实际应用时,建议遵守网站的使用政策,避免恶意爬取或滥用资源。

详情请见:解决验证码recaptcha、cloudflare、incapsula

相关文章:

  • notepad++ 正则表达式
  • Python第六章16:字典(dict)的常用操作
  • 如何为 Debian 和 Kali 系统更换软件源并更新系统
  • transform 3d学习简单示例
  • Mysql-DML
  • 基于dify平台批量分析excel格式信息
  • Android 12系统源码_系统启动(三)SystemServer进程
  • 启山智软实现b2c单商户商城对比传统单商户的优势在哪里?
  • C++ 中将函数作为参数传递
  • 推荐系统(十六):基于ESMM的商品召回/推荐系统
  • Burp Suite抓包实战:SQL注入漏洞挖掘
  • 18491 岛屿的数量
  • nn.BCELoss 介绍
  • 基于 Qt / HTTP/JSON 的智能天气预报系统测试报告
  • HCIA【NAT】
  • 机器学习和深度学习的关系
  • Cent OS7+Docker+Dify
  • 网络通信协议浅析:TCP/IP、UDP、HTTP 和 MQTT
  • 《Linux运维实战:Ubuntu 22.04修改root用户默认名并禁止登录》
  • Android Logcat总结
  • 申伟强任上海申通地铁集团有限公司副总裁
  • 网约车司机猝死,平台和保险公司均拒绝赔偿,法院判了
  • 第1现场|俄媒称乌克兰网上出售北约对乌军培训手册
  • 4月22城新房价格上涨:上海一二手房价环比均上涨,核心城市土地热带动市场热度提升
  • 音著协宣布胜诉,虎牙公司终审被判侵权
  • 盲人不能刷脸认证、营业厅拒人工核验,央媒:别让刷脸困住尊严