自动化测试与 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

相关推荐
北域码匠18 小时前
高通滤波算法深度解析(High-Pass Filter)
stm32·算法·c#·数字信号处理·嵌入式开发·滤波算法·高通滤波
问天_观心19 小时前
大模型微调学习(二)
人工智能·python·深度学习·学习·语言模型·transformer
洋洋不叫杨杨19 小时前
揭秘当下知名的SEO优化渠道,你知道几个?
大数据·python
阿童木写作19 小时前
跨境图片翻译工具推荐:批量处理视频字幕与智能抠图
python·音视频
指掀涛澜天下惊19 小时前
强化学习进阶篇八 策略梯度算法
深度学习·学习·算法·强化学习
平头哥技术团队19 小时前
Day 10 | 工欲善其事:VS Code 配置与项目归档
android·开发语言·前端·javascript·html·交互
乌萨奇也要立志学C++19 小时前
【洛谷】kmp算法
开发语言·算法
梦想的颜色19 小时前
OCR 识别原理与 Python 识图全实战:从文字提取到图像内容理解
python·计算机视觉·ocr·图像识别·python 识图
禹凕19 小时前
Dijkstra算法详解与应用
python·算法
yume_sibai20 小时前
Element Plus 数据展示组件完全指南(15个核心组件)
前端·javascript·vue.js