当验证码解决失败并且您的日志没有显示足够的详细信息时,拦截实际的 HTTP 流量可以揭示发生的情况。 Fiddler 捕获代码和 CaptchaAI API 之间的每个请求和响应,让您查看准确的负载、标头和时间。
何时使用 Fiddler 进行调试
| 设想 | Fiddler 揭示了什么 |
|---|---|
| API 返回错误,但您的代码日志很少 | 完整的请求正文、标头和响应 |
| 解决请求似乎挂起 | 请求是否到达服务器或超时 |
| 注入时令牌显示无效 | 确切的令牌内容和任何编码问题 |
| 与代理相关的故障 | 请求是否通过预期代理路由 |
| 速率限制问题 | 请求计时和 429 响应模式 |
为 HTTPS 流量设置 Fiddler
第1步:安装并配置HTTPS解密
Fiddler 充当拦截 HTTPS 流量的本地代理。您需要启用 HTTPS 解密才能查看 CaptchaAI API 负载:
到处都是提琴手:
- 打开设置 → HTTPS
- 启用“捕获 HTTPS 流量”
- 出现提示时安装 Fiddler 根证书
- 信任操作系统证书存储中的证书
Fiddler 经典(Windows):
- 工具 → 选项 → HTTPS
- 勾选“解密 HTTPS 流量”
- 点击“操作”→“信任根证书”
步骤 2:配置您的代码以使用 Fiddler 的代理
Fiddler 在 127.0.0.1:8866 (Fiddler Everywhere) 或 127.0.0.1:8888 (Fiddler Classic) 上收听。
Python(请求):
import requests
proxies = {
"http": "http://127.0.0.1:8866",
"https": "http://127.0.0.1:8866",
}
# Submit CAPTCHA task through Fiddler
response = requests.post(
"https://ocr.captchaai.com/in.php",
data={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": "SITE_KEY",
"pageurl": "https://example.com",
"json": 1,
},
proxies=proxies,
verify=False, # Required for Fiddler's self-signed cert
)
print(response.json())
JavaScript(带有 axios 的 Node.js):
const axios = require("axios");
const HttpsProxyAgent = require("https-proxy-agent");
const agent = new HttpsProxyAgent("http://127.0.0.1:8866");
async function submitTask() {
const response = await axios.post(
"https://ocr.captchaai.com/in.php",
new URLSearchParams({
key: "YOUR_API_KEY",
method: "userrecaptcha",
googlekey: "SITE_KEY",
pageurl: "https://example.com",
json: 1,
}),
{
httpsAgent: agent,
proxy: false, // Disable axios default proxy handling
}
);
console.log(response.data);
}
submitTask();
注意:
verify=False(Python) 禁用 Fiddler 拦截证书的 SSL 验证。仅在调试期间使用它 - 在生产中将其删除。
过滤 CaptchaAI 流量
添加过滤器以仅查看繁忙会话中的 CaptchaAI 请求。
Fiddler 无处不在的过滤器
- 单击过滤器选项卡
- 添加规则:主机 →
contains→ocr.captchaai.com - 应用过滤器
Fiddler 经典过滤器
- 单击过滤器选项卡
- 勾选“使用过滤器”
- 在“主机”下,选择“仅显示以下主机”
- 输入:
ocr.captchaai.com
现在会话列表中仅显示 CaptchaAI API 请求。
检查请求和响应
提交请求(in.php)
当您捕获任务提交时,请在 Fiddler 中检查这些字段:
| 控制板 | 检查什么 |
|---|---|
| 标题 | 内容类型应为 application/x-www-form-urlencoded |
| 请求正文 | 验证 key、method、googlekey/res.php、pageurl 是否正确 |
| 响应正文 | 成功时应返回 {"status":1,"request":"TASK_ID"} |
| 响应代码 | 200 = 正常,403 = 关键问题,429 = 速率受限 |
投票请求 (res.php)
轮询结果时:
| 控制板 | 检查什么 |
|---|---|
| 请求正文 | key、action=get、id=TASK_ID、json=1 |
| 响应正文 | CAPCHA_NOT_READY 处理时,{"status":1,"request":"TOKEN"} 成功 |
| 定时 | 检查轮询之间的间隔 - 应为 5 秒以上 |
Fiddler 中常见的问题
| 你所看到的 | 意义 |
|---|---|
请求正文为空 googlekey |
上游站点密钥提取失败 |
响应:{"status":0,"request":"ERROR_WRONG_USER_KEY"} |
API 密钥无效 |
响应:{"status":0,"request":"ERROR_ZERO_BALANCE"} |
账户没有资金 |
响应:{"status":0,"request":"ERROR_NO_SLOT_AVAILABLE"} |
服务器繁忙 – 重试 |
| 无响应(超时) | Network/proxy 阻止连接 |
| 429 状态码 | 请求太多——减慢轮询速度 |
使用断点
断点会在请求发送之前暂停请求,以便您修改它们:
设置断点
到处都是提琴手:
- 规则 → 添加规则
- 匹配:URL 包含
ocr.captchaai.com/in.php - 操作:“发送前暂停”
提琴手经典:
- 规则 → 自动断点 → 请求之前
- 或者在 QuickExec 栏中输入
bpu ocr.captchaai.com
在断点处做什么
当请求暂停时:
- 检查请求正文 – 验证所有参数是否正确
- 编辑参数 – 更改
method、googlekey或pageurl以测试不同的值 - 恢复 – 单击“运行至完成”发送修改后的请求
- 检查响应 – 查看您的更改是否解决了问题
这对于在不更改代码的情况下测试参数值是否导致故障非常有用。
重放失败的请求
当请求失败时,您可以从 Fiddler 重放它:
- 右键单击失败的会话
- 选择 重播 → 重新发出请求
- 使用相同的标头和正文再次发送相同的请求
修改后重播:
- 右键单击 → 在 Composer 中编辑
- 修改参数
- 单击执行
这使您可以在不重新启动应用程序的情况下测试修复。
编写测试请求
使用 Fiddler 的 Composer 从头开始构建 CaptchaAI 请求:
任务提交:
POST https://ocr.captchaai.com/in.php
Content-Type: application/x-www-form-urlencoded
key=YOUR_API_KEY&method=userrecaptcha&googlekey=SITE_KEY&pageurl=https://example.com&json=1
投票结果:
GET https://ocr.captchaai.com/res.php?key=YOUR_API_KEY&action=get&id=TASK_ID&json=1
当您只想验证 API 是否正常工作时,这比编写代码更快。
分析时序
Fiddler 的时间轴视图显示请求持续时间:
| 公制 | 健康价值 | 问题指示器 |
|---|---|---|
| DNS查询 | < 50 毫秒 | > 500ms = DNS 问题 |
| TCP连接 | <100毫秒 | > 1000ms = 网络问题 |
| TLS 握手 | <200毫秒 | > 1000ms = 证书颁发 |
| 服务器响应(in.php) | < 500 毫秒 | > 2000ms = 服务器拥塞 |
| 服务器响应(res.php) | <200毫秒 | > 1000ms = 异常 - 检查状态 |
导出会话以获取支持
如果您需要与 CaptchaAI 支持共享调试数据:
- 在Fiddler中选择相关会话
- 文件 → 导出会话 → 选定的会话
- 选择 HTTPArchive (.har) 格式
- 在共享之前从导出的文件中删除您的 API 密钥
Find and replace your actual API key with "REDACTED" in the .har file
故障排除
| 问题 | 原因 | 处理方式 |
|---|---|---|
| Fiddler显示没有流量 | 代码不通过 Fiddler 的代理路由 | 将代理设置为 127.0.0.1:8866(无处不在)或 8888(经典) |
| SSL 证书错误 | Fiddler 的根证书不受信任 | 重新安装Fiddler证书;添加到受信任的根 |
| Fiddler 显示乱码响应正文 | 响应被压缩 | 启用工具栏中的“解码”按钮(或规则 → 删除所有编码) |
| 断点不触发 | 过滤器或规则不匹配 | 验证 URL 模式与 ocr.captchaai.com 完全匹配 |
| 交通出现但车身空空如也 | 内容长度不匹配或流响应 | 单击会话并等待加载完整响应 |
常问问题
使用 Fiddler 会影响验证码解决时间吗?
至少。由于代理跃点,Fiddler 会为每个请求增加约 1-5 毫秒的延迟。与 CAPTCHA 解决时间(10-60 秒)相比,这是可以忽略不计的。对于时间关键型调试,请注意 Fiddler 的时间戳反映的是 Fiddler 接收数据的时间,而不是代码发送数据的时间。
我可以使用 Fiddler 进行基于浏览器的验证码解决吗?
是的。配置您的浏览器以使用 Fiddler 作为其代理,您将看到所有与 CAPTCHA 相关的请求 - 包括小部件加载、质询检索和令牌提交。这对于了解完整的 CAPTCHA 生命周期非常有用。
我应该使用 Fiddler Classic 还是 Fiddler Everywhere?
Fiddler Everywhere 是跨平台的(Windows、macOS、Linux),具有现代 UI。 Fiddler Classic 仅适用于 Windows,但具有更高级的脚本功能 (FiddlerScript)。对于基本的 CaptchaAI 调试,两者都有效。
相关文章
下一步
清晰的 API 错误消息使调试速度更快 –”以 CaptchaAI 开头当您需要更深入的请求级别检查时,请使用 Fiddler。
相关指南: