Hướng Dẫn Thực Hành

Gỡ lỗi lệnh gọi API CAPTCHA bằng Charles Proxy

Khi tích hợp CAPTCHA của bạn trả về các lỗi không mong muốn, việc kiểm tra lưu lượng HTTP thô sẽ tiết lộ những gì thực sự được gửi và nhận. Charles Proxy nằm giữa mã của bạn và CaptchaAI, cho phép bạn xem mọi chi tiết yêu cầu, phản hồi và thời gian.


thiết lập

1. Cài đặt Charles Proxy

Tải xuống từcharlesproxy.com. Có sẵn trên Windows, macOS và Linux.

2. Kích hoạt proxy SSL

CaptchaAI sử dụng HTTPS. Để kiểm tra lưu lượng được mã hóa:

  1. ProxyCài đặt ủy quyền SSLThêm
  2. Máy chủ: ocr.captchaai.com, Cổng: 443
  3. Trợ giúpỦy quyền SSLCài đặt chứng chỉ Charles Root
  4. Tin cậy chứng chỉ trong kho chứng chỉ hệ điều hành của bạn

3. Định cấu hình mã của bạn để sử dụng Charles

Charles chạy trên localhost:8888 theo mặc định.

Trăn:

import requests

proxies = {
    "http": "http://localhost:8888",
    "https": "http://localhost:8888",
}

# Disable SSL verification for Charles (development only)
resp = requests.post(
    "https://ocr.captchaai.com/in.php",
    data={"key": "YOUR_API_KEY", "method": "userrecaptcha", "json": "1"},
    proxies=proxies,
    verify=False,
)

Node.js:

const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');

const agent = new HttpsProxyAgent('http://localhost:8888');

const resp = await axios.post('https://ocr.captchaai.com/in.php', null, {
  params: { key: 'YOUR_API_KEY', method: 'userrecaptcha', json: 1 },
  httpsAgent: agent,
});

Những gì cần kiểm tra

Gửi yêu cầu (POST /in.php)

Ở Charles, nhấp vào yêu cầu tới /in.php. Kiểm tra:

Thẻ Những gì cần xác minh
Yêu cầu → Tiêu đề Loại nội dung là chính xác
Yêu cầu -> Nội dung Tất cả các thông số cần thiết hiện diện
Phản hồi → Nội dung {"status":1,"request":"TASK_ID"} thành công
Thời gian Thời lượng yêu cầu (nên <1 giây)

Các vấn đề thường gặp ở Charles:

  • Thiếu tham số method -> ERROR_BAD_PARAMETERS
  • Loại nội dung sai → Các tham số không được phân tích cú pháp
  • googlekey trống -> ERROR_WRONG_GOOGLEKEY
  • Nội dung JSON không đúng định dạng -> Sử dụng dữ liệu biểu mẫu, không phải nội dung JSON

Yêu cầu thăm dò ý kiến (GET /res.php)

Kiểm tra các yêu cầu thăm dò ý kiến:

  • Thông số: key, action=get, id=TASK_ID
  • Phản hồi: CAPCHA_NOT_READY (tiếp tục bỏ phiếu) hoặc {"status":1,"request":"TOKEN"}
  • Thời gian: Mỗi cuộc thăm dò theo sau là khoảng thời gian ngủ của bạn

Gỡ lỗi các vấn đề phổ biến

Vấn đề: ERROR_WRONG_GOOGLEKEY

Ở Charles, hãy nhìn vào nội dung yêu cầu gửi. Tìm trường googlekey:

# What Charles shows:
key=YOUR_API_KEY&method=userrecaptcha&googlekey=&pageurl=https://example.com&json=1
                                      ^^^^^^^^ empty!

Khắc phục: Việc trích xuất khóa trang web không thành công ngược dòng. Kiểm tra mã trích xuất của bạn.

Vấn đề: Mã thông báo bị từ chối bởi trang web mục tiêu

So sánh những gì CaptchaAI trả về với những gì bạn đang tiêm:

  1. Ở Charles, tìm phản hồi /res.php với status: 1
  2. Sao chép mã thông báo đầy đủ từ trường request
  3. Tìm yêu cầu tiếp theo đến trang đích
  4. Xác minh mã thông báo có dạng nội dung là g-recaptcha-response

Vấn đề: Hết thời gian yêu cầu

Sử dụng chế độ xem Charles Trình tự để xem thời gian:

POST /in.php     → 234ms ✓
GET  /res.php    → 189ms (CAPCHA_NOT_READY)
GET  /res.php    → 201ms (CAPCHA_NOT_READY)
GET  /res.php    → 195ms (CAPCHA_NOT_READY)
... 23 more ...
GET  /res.php    → 188ms (CAPCHA_NOT_READY)  ← never resolves

Nếu vấn đề không bao giờ được giải quyết: hãy kiểm tra xem khóa trang và URL trang có chính xác hay không.


Charles có tính năng gỡ lỗi CAPTCHA

Lặp lại yêu cầu

Nhấp chuột phải vào bất kỳ yêu cầu nào †’ Lặp lại để gửi lại. Hữu ích để kiểm tra các yêu cầu thăm dò ý kiến ​​mà không cần chạy lại toàn bộ tập lệnh của bạn.

Điểm dừng

Đặt điểm dừng trên /in.php để kiểm tra và sửa đổi yêu cầu trước khi gửi:

  1. ProxyCài đặt điểm dừngThêm
  2. Máy chủ: ocr.captchaai.com, Đường dẫn: /in.php
  3. Kiểm tra Yêu cầu
  4. Bây giờ mã của bạn tạm dừng trước khi gửi - bạn có thể chỉnh sửa tham số

Bản đồ địa phương

Thay thế phản hồi API bằng các tệp cục bộ để kiểm tra:

  1. Công cụ -> Bản đồ địa phương -> Thêm
  2. Ánh xạ https://ocr.captchaai.com/res.php tới tệp JSON cục bộ
  3. Tạo mock_response.json:
{"status": 1, "request": "mock_token_for_testing"}

Điều này cho phép bạn kiểm tra mã chèn mã thông báo của mình mà không cần sử dụng tín dụng API.

ga

Mô phỏng kết nối chậm:

  1. ProxyCài đặt bướm ga → Bật
  2. Đặt giá trị đặt trước thành tốc độ 3G hoặc cấp EDGE
  3. Kiểm tra xem mã của bạn có xử lý phản hồi chậm và thời gian chờ chính xác không

Các lựa chọn thay thế cho Charles

Công cụ Nền tảng HTTPS Chi phí
Charles ủy quyền Win/Mac/Linux Yêu cầu cài đặt chứng chỉ Trả phí (dùng thử miễn phí)
mitmproxy Win/Mac/Linux Yêu cầu cài đặt chứng chỉ miễn phí
người chơi vĩ cầm cửa sổ Giải mã HTTPS tích hợp miễn phí
Người ủy quyền macOS Thiết lập HTTPS bằng một cú nhấp chuột Freemium

thiết lập nhanh mitmproxy

# Install
pip install mitmproxy

# Run
mitmproxy --listen-port 8080

# Configure Python
proxies = {"https": "http://localhost:8080"}

Khắc phục sự cố

Vấn đề Nguyên nhân Cách xử lý
Lỗi SSL trong mã Chứng chỉ Charles không đáng tin cậy Cài đặt chứng chỉ gốc Charles; sử dụng verify=False cho nhà phát triển
Không có yêu cầu nào được hiển thị Mã không sử dụng proxy Đặt proxy trong cấu hình request/axios
Phản hồi HTTPS bị cắt xén Proxy SSL chưa được bật Thêm ocr.captchaai.com vào cài đặt ủy quyền SSL
Charles làm chậm yêu cầu Đã bật điểm dừng Vô hiệu hóa điểm dừng khi không cần thiết

Câu hỏi thường gặp

Tôi có nên sử dụng Charles trong sản xuất không?

Không. Charles là một công cụ phát triển và gỡ lỗi. Sử dụng tính năng ghi nhật ký và giám sát có cấu trúc để có thể quan sát được quá trình sản xuất.

Việc định tuyến qua Charles có ảnh hưởng đến việc giải CAPTCHA không?

Không. CaptchaAI không coi Charles là người được ủy quyền - các yêu cầu của bạn được thực hiện một cách minh bạch.


Gỡ lỗi và tối ưu hóa tích hợp CaptchaAI của bạn

Nhận khóa API của bạn tạicaptchaai.com.


Hướng dẫn liên quan

Os comentários estão desativados para este artigo.