AZCaptcha và CaptchaAI đều sử dụng định dạng API tương thích 2Captcha, giúp việc di chuyển trở nên đơn giản. Bạn hầu như sẽ thay đổi URL cơ sở và khóa API — định dạng yêu cầu vẫn giữ nguyên.
Ánh xạ điểm cuối
| hành động | AZCaptcha | CaptchaAI |
|---|---|---|
| Gửi nhiệm vụ | https://azcaptcha.com/in.php |
https://ocr.captchaai.com/in.php |
| Nhận kết quả | https://azcaptcha.com/res.php |
https://ocr.captchaai.com/res.php |
| Kiểm tra số dư | res.php?action=getbalance |
res.php?action=getbalance |
| Báo cáo sai | res.php?action=reportbad |
res.php?action=reportbad |
Khả năng tương thích thông số
Hầu hết các thông số đều giống hệt nhau. Sự khác biệt chính:
| tham số | AZCaptcha | CaptchaAI | Ghi chú |
|---|---|---|---|
key |
Khóa API | Khóa API | Khóa khác — nhận khóa của bạn tại captchaai.com |
method |
userrecaptcha |
userrecaptcha |
giống nhau |
googlekey |
Khóa trang web | Khóa trang web | giống nhau |
pageurl |
URL trang | URL trang | giống nhau |
json |
1 |
1 |
giống nhau |
proxy |
user:pass@host:port |
user:pass@host:port |
Cùng định dạng |
proxytype |
HTTP/1ZZ |
HTTP/1ZZ |
giống nhau |
Các bước di chuyển
Bước 1: Nhận khóa API CaptchaAI
- Đăng ký tạicaptchaai.com
- Thêm tiền vào tài khoản của bạn
- Sao chép khóa API của bạn từ bảng điều khiển
Bước 2: Cập nhật mã của bạn
Python - Trước (AZCaptcha)
import requests
API_KEY = "your_azcaptcha_key"
def solve_recaptcha(sitekey, pageurl):
# Submit
resp = requests.post("https://azcaptcha.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"json": 1
})
data = resp.json()
if data["status"] != 1:
return {"error": data["request"]}
captcha_id = data["request"]
# Poll
import time
for _ in range(60):
time.sleep(5)
result = requests.get("https://azcaptcha.com/res.php", params={
"key": API_KEY, "action": "get", "id": captcha_id, "json": 1
}).json()
if result["status"] == 1:
return {"solution": result["request"]}
if result["request"] != "CAPCHA_NOT_READY":
return {"error": result["request"]}
return {"error": "TIMEOUT"}
Python - Sau (CaptchaAI)
import os
import time
import requests
API_KEY = os.environ["CAPTCHAAI_API_KEY"] # Changed: use env var
def solve_recaptcha(sitekey, pageurl):
# Submit — only URL changed
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": API_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"json": 1
})
data = resp.json()
if data.get("status") != 1:
return {"error": data.get("request")}
captcha_id = data["request"]
# Poll — only URL changed
for _ in range(60):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": captcha_id, "json": 1
}).json()
if result.get("status") == 1:
return {"solution": result["request"]}
if result.get("request") != "CAPCHA_NOT_READY":
return {"error": result.get("request")}
return {"error": "TIMEOUT"}
JavaScript — Trước (AZCaptcha)
const axios = require("axios");
const API_KEY = "your_azcaptcha_key";
async function solveRecaptcha(sitekey, pageurl) {
const submit = await axios.post("https://azcaptcha.com/in.php", null, {
params: { key: API_KEY, method: "userrecaptcha", googlekey: sitekey, pageurl, json: 1 },
});
if (submit.data.status !== 1) return { error: submit.data.request };
const captchaId = submit.data.request;
for (let i = 0; i < 60; i++) {
await new Promise((r) => setTimeout(r, 5000));
const poll = await axios.get("https://azcaptcha.com/res.php", {
params: { key: API_KEY, action: "get", id: captchaId, json: 1 },
});
if (poll.data.status === 1) return { solution: poll.data.request };
if (poll.data.request !== "CAPCHA_NOT_READY") return { error: poll.data.request };
}
return { error: "TIMEOUT" };
}
JavaScript — Sau (CaptchaAI)
const axios = require("axios");
const API_KEY = process.env.CAPTCHAAI_API_KEY; // Changed: env var
async function solveRecaptcha(sitekey, pageurl) {
// Only URLs changed
const submit = await axios.post("https://ocr.captchaai.com/in.php", null, {
params: { key: API_KEY, method: "userrecaptcha", googlekey: sitekey, pageurl, json: 1 },
});
if (submit.data.status !== 1) return { error: submit.data.request };
const captchaId = submit.data.request;
for (let i = 0; i < 60; i++) {
await new Promise((r) => setTimeout(r, 5000));
const poll = await axios.get("https://ocr.captchaai.com/res.php", {
params: { key: API_KEY, action: "get", id: captchaId, json: 1 },
});
if (poll.data.status === 1) return { solution: poll.data.request };
if (poll.data.request !== "CAPCHA_NOT_READY") return { error: poll.data.request };
}
return { error: "TIMEOUT" };
}
Bước 3: Tóm tắt nhà cung cấp
Để di chuyển an toàn hơn, hãy tạo trình bao bọc bất khả tri của nhà cung cấp:
import os
import time
import requests
class CaptchaProvider:
def __init__(self, base_url, api_key):
self.submit_url = f"{base_url}/in.php"
self.result_url = f"{base_url}/res.php"
self.api_key = api_key
self.session = requests.Session()
def solve(self, sitekey, pageurl, method="userrecaptcha"):
resp = self.session.post(self.submit_url, data={
"key": self.api_key,
"method": method,
"googlekey": sitekey,
"pageurl": pageurl,
"json": 1
})
data = resp.json()
if data.get("status") != 1:
return {"error": data.get("request")}
captcha_id = data["request"]
for _ in range(60):
time.sleep(5)
result = self.session.get(self.result_url, params={
"key": self.api_key, "action": "get",
"id": captcha_id, "json": 1
}).json()
if result.get("status") == 1:
return {"solution": result["request"]}
if result.get("request") != "CAPCHA_NOT_READY":
return {"error": result.get("request")}
return {"error": "TIMEOUT"}
# Switch by changing one line:
# provider = CaptchaProvider("https://azcaptcha.com", "old_key")
provider = CaptchaProvider(
"https://ocr.captchaai.com",
os.environ["CAPTCHAAI_API_KEY"]
)
Bước 4: Kiểm tra song song
Chạy đồng thời cả hai nhà cung cấp để so sánh:
def parallel_test(sitekey, pageurl, runs=10):
azcaptcha = CaptchaProvider("https://azcaptcha.com", "old_key")
captchaai = CaptchaProvider(
"https://ocr.captchaai.com",
os.environ["CAPTCHAAI_API_KEY"]
)
results = {"azcaptcha": [], "captchaai": []}
for i in range(runs):
start = time.time()
az_result = azcaptcha.solve(sitekey, pageurl)
results["azcaptcha"].append({
"success": "solution" in az_result,
"time": time.time() - start
})
start = time.time()
cai_result = captchaai.solve(sitekey, pageurl)
results["captchaai"].append({
"success": "solution" in cai_result,
"time": time.time() - start
})
for provider, data in results.items():
successes = sum(1 for r in data if r["success"])
avg_time = sum(r["time"] for r in data) / len(data)
print(f"{provider}: {successes}/{runs} success, {avg_time:.1f}s avg")
Danh sách kiểm tra di chuyển
| Bước | Trạng thái |
|---|---|
| Tạo tài khoản CaptchaAI và nạp tiền vào tài khoản đó | ☐ |
| Thay thế URL cơ sở trong tất cả các tệp | ☐ |
| Cập nhật khóa API (sử dụng env var) | ☐ |
| Chạy thử nghiệm song song (10+ giải) | ☐ |
| So sánh tỷ lệ thành công | ☐ |
| So sánh thời gian giải quyết | ☐ |
| Cập nhật giám sát/alerting cho các điểm cuối mới | ☐ |
| Chuyển đổi lưu lượng sản xuất | ☐ |
| Giám sát trong 24 giờ | ☐ |
| Ngừng hoạt động khóa AZCaptcha | ☐ |
Khắc phục sự cố
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
ERROR_KEY_DOES_NOT_EXIST |
Khóa API sai | Xác minh khóa API CaptchaAI từ bảng điều khiển |
ERROR_ZERO_BALANCE |
Không có tiền trong tài khoản mới | Nạp tiền tại captchaai.com |
| Mã lỗi khác nhau | Sự khác biệt nhỏ về mã lỗi | Mã lỗi bản đồ; hầu hết đều giống hệt nhau |
| Tỷ lệ giải quyết khác nhau | Nhóm giải pháp khác nhau | Chạy hơn 50 bài kiểm tra để so sánh có giá trị thống kê |
Câu hỏi thường gặp
CaptchaAI có phải là giải pháp thay thế sẵn có cho AZCaptcha không?
Gần như vậy. Cả hai đều sử dụng định dạng API tương thích 2Captcha. Thay đổi URL cơ sở và khóa API — các tham số và định dạng phản hồi giống nhau.
Cấu hình proxy hiện tại của tôi có hoạt động không?
Vâng. CaptchaAI sử dụng cùng tham số proxy và proxytype. Không cần thay đổi để giải quyết dựa trên proxy.
Quá trình di chuyển mất bao lâu?
Đối với một cơ sở mã duy nhất, 15–30 phút. Hầu hết việc đó là cập nhật URL cơ sở bằng tính năng tìm kiếm và thay thế, đồng thời chạy thử nghiệm song song để xác minh.
Các bước tiếp theo
Chuyển sang giải pháp CAPTCHA nhanh hơn, đáng tin cậy hơn —lấy khóa API CaptchaAI của bạnvà di chuyển trong vài phút.
Hướng dẫn liên quan:
- Ánh xạ điểm cuối API
- Kiểm tra chạy song song
- Tại sao các nhóm chuyển đổi nhà cung cấp