同一个网站向一位访问者显示英语的 reCAPTCHA 挑战,向另一位访问者显示日语的 reCAPTCHA 挑战。 Cloudflare Turnstile 小部件以浏览器语言呈现其加载文本。有些网站根据访问者检测到的区域提供完全不同的验证码类型。了解本地化如何影响验证码有助于您在自动化中正确处理它们。
区域设置有何变化
| 验证码提供商 | 什么本地化 | 什么保持不变 |
|---|---|---|
| 验证码 | UI文本、图像标签、音频语言 | Sitekey、验证流程、token格式 |
| 旋转门 | 小部件文本和错误消息 | Sitekey、token格式、解决机制 |
| h验证码 | 挑战说明、类别标签 | Sitekey、令牌格式 |
| 图片/OCR | 字符集、文本语言 | 图片格式,提交/poll流程 |
如何检测语言
验证码提供商通过多种信号确定语言:
1. Accept-Language 标头
Accept-Language: ja-JP,ja;q=0.9,en-US;q=0.8,en;q=0.7
这告诉服务器:首选日语(日本),然后是英语(美国),然后是通用英语。 reCAPTCHA 和 Turnstile 使用它来选择 UI 语言。
2. HTML hl 参数
reCAPTCHA 在加载时接受显式语言参数:
<!-- Force English reCAPTCHA -->
<script src="https://www.google.com/recaptcha/api.js?hl=en"></script>
<!-- Force Japanese -->
<script src="https://www.google.com/recaptcha/api.js?hl=ja"></script>
hl 参数覆盖 Accept-Language 标头。求解时,您不需要匹配此 — CaptchaAI 会返回一个标记,无论 UI 语言如何。
3.地理IP位置
一些验证码配置因地区而异:
| 信号 | 影响 |
|---|---|
| 来自中国的IP | 可能会得到 GeeTest 而不是 reCAPTCHA(reCAPTCHA 在中国被屏蔽) |
| 来自欧盟的知识产权 | 可能会在验证码之前看到 GDPR 同意 |
| 来自限制区域的 IP | 可能会面临更严峻的挑战 |
4.浏览器navigator.language
基于 JavaScript 的验证码读取浏览器的语言:
navigator.language // "en-US"
navigator.languages // ["en-US", "en", "ja"]
在无头浏览器中,这些默认为系统区域设置。明确设置它们以匹配您的目标:
// Playwright
const context = await browser.newContext({
locale: 'ja-JP',
});
// Puppeteer
const page = await browser.newPage();
await page.setExtraHTTPHeaders({
'Accept-Language': 'ja-JP,ja;q=0.9',
});
对求解的影响
基于令牌的验证码(reCAPTCHA、Turnstile、hCaptcha)
语言设置影响UI,但不影响令牌。 CaptchaAI 的求解过程与语言无关:
- 提交站点密钥和页面 URL
- CaptchaAI 返回有效令牌
- 无论验证码小部件显示哪种语言,令牌都有效
为基于令牌的验证码调用 CaptchaAI 时不需要语言参数。
图片验证码
语言直接影响图像中的人物:
| 网站语言 | 验证码内容 | CaptchaAI 语言参数 |
|---|---|---|
| 英语 | “输入文字:XKCD42” | 0(默认/Latin) |
| 俄语 | “ШКАФ” | 1(西里尔字母)或 2 |
| 中国人 | "请输入验证码: 汉字" | 2(非拉丁语) |
| 阿拉伯 | ” ????????????????????????????????????????????????????????? | 2(非拉丁语) |
| 日本人 | “文字を入力:ひらがな” | 2(非拉丁语) |
音频验证码
reCAPTCHA 音频挑战以与 hl 参数或 Accept-Language 标头匹配的语言进行。 CaptchaAI 通过其标准 reCAPTCHA 解决流程来处理这些问题 - 解决方法不依赖于音频语言。
常见本地化问题
抓取器和目标之间的语言不匹配
如果您的抓取工具将 Accept-Language: en-US 发送到日语网站,则验证码可能会以英语呈现 - 这对于基于令牌的验证码来说很好,但如果网站验证语言一致性,则可能会导致问题。
区域验证码提供商差异
一些国家/地区使用不同的验证码提供商:
| 地区 | 典型提供商 |
|---|---|
| 西方市场 | reCAPTCHA、Turnstile、hCaptcha |
| 中国 | GeeTest、腾讯验证码、自定义图片 |
| 俄罗斯/CIS | 自定义图像验证码、reCAPTCHA |
| 韩国 | 自定义滑块、图像验证码 |
故障排除
| 问题 | 原因 | 处理方式 |
|---|---|---|
| reCAPTCHA 显示的语言与预期不同 | 脚本标记中的 hl 参数与 Accept-Language 不匹配 |
令牌与语言无关——不影响解决 |
| 图像验证码识别出错误的字符 | 语言参数与验证码脚本不匹配 | 为非拉丁验证码设置 language=2 |
| 网站按地区提供不同的验证码类型 | 基于地理 IP 的提供商选择 | 使用与目标区域匹配的代理 |
| 无头浏览器显示错误的区域设置 | 使用的默认系统区域设置 | 在浏览器上下文中显式设置区域设置 |
| 采用意想不到的语言的音频验证码 | hl 参数覆盖标头 |
不影响CaptchaAI基于代币的解决 |
常问问题
CaptchaAI 需要知道验证码的显示语言吗?
对于基于令牌的验证码(reCAPTCHA、Turnstile、hCaptcha),否。求解过程与语言无关。对于 Image/OCR 验证码,是 — 设置 language 参数以匹配图像中显示的字符集。
我应该将 Accept-Language 标头与目标站点相匹配吗?
这是保持一致性的好习惯。一些站点会检查标头和其他信号之间的语言不匹配。设置您的 Accept-Language 标头以匹配网站的主要语言,以最大限度地降低检测风险。
相同的站点密钥可以根据区域设置显示不同的验证码难度吗?
是的。验证码提供商可能会根据区域风险评分调整难度。来自某些地区的流量可能面临更严峻的挑战。这并不影响 CaptchaAI 的解决——API 可以处理任何难度的挑战。
下一步
在任何语言环境中处理验证码 —获取您的 CaptchaAI API 密钥并正确配置语言设置。
相关指南:
- 多语言图像验证码字符集
- 解决中文网站上的验证码
- 解决日语和韩语网站上的验证码