自动化测试与 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 解决方案提供商,可以帮助自动化测试绕过验证,包括:

这些服务通常基于人工或 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:

python 复制代码
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

相关推荐
一 乐5 小时前
婚纱摄影网站|基于ssm + vue婚纱摄影网站系统(源码+数据库+文档)
前端·javascript·数据库·vue.js·spring boot·后端
沈浩(种子思维作者)5 小时前
真的能精准医疗吗?癌症能提前发现吗?
人工智能·python·网络安全·健康医疗·量子计算
MM_MS5 小时前
Halcon变量控制类型、数据类型转换、字符串格式化、元组操作
开发语言·人工智能·深度学习·算法·目标检测·计算机视觉·视觉检测
独自破碎E6 小时前
【二分法】寻找峰值
算法
njsgcs6 小时前
ue python二次开发启动教程+ 导入fbx到指定文件夹
开发语言·python·unreal engine·ue
io_T_T6 小时前
迭代器 iteration、iter 与 多线程 concurrent 交叉实践(详细)
python
mit6.8246 小时前
位运算|拆分贪心
算法
华研前沿标杆游学6 小时前
2026年走进洛阳格力工厂参观游学
python
Carl_奕然7 小时前
【数据挖掘】数据挖掘必会技能之:A/B测试
人工智能·python·数据挖掘·数据分析
ghie90907 小时前
基于MATLAB的TLBO算法优化实现与改进
开发语言·算法·matlab