Cổng thông tin hồ sơ công cộng - hệ thống tòa án, thẩm định viên quận, thư ký lưu trữ hồ sơ tiểu bang, cơ sở dữ liệu hồ sơ quan trọng - phụ thuộc rất nhiều vào CAPTCHA Hình ảnh và OCR. Các cổng này thường sử dụng cách triển khai CAPTCHA cũ hơn với văn bản bị biến dạng, các bài toán hoặc các thử thách hình ảnh tùy chỉnh. Đây là cách xử lý chúng trên các loại bản ghi khác nhau.
Các loại CAPTCHA phổ biến theo cổng thông tin
| danh mục cổng thông tin | CAPTCHA điển hình | Ví dụ về thử thách |
|---|---|---|
| Tìm kiếm vụ án tại tòa án | CAPTCHA văn bản tùy chỉnh | Bị bóp méo 5–6 ký tự chữ và số |
| Hồ sơ tài sản của quận | CAPTCHA toán học | "4 + 7 là bao nhiêu?" |
| Tìm kiếm thực thể doanh nghiệp | Văn bản hình ảnh CAPTCHA | Các chữ cái bị biến dạng với tiếng ồn dòng |
| Hồ sơ quan trọng | reCAPTCHA v2 | Lựa chọn lưới hình ảnh |
| Giấy phép xây dựng | CAPTCHA văn bản đơn giản | Mã số gồm 4 chữ số |
| Hồ sơ UCC | CAPTCHA OCR tùy chỉnh | Các chữ cái viết hoa hỗn hợp với tiếng ồn nền |
Tìm kiếm hồ sơ công cộng bằng giải CAPTCHA
import requests
import base64
import time
from urllib.parse import urljoin
class PublicRecordsSearcher:
def __init__(self, api_key):
self.api_key = api_key
self.session = requests.Session()
self.session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
})
def search_court_records(self, portal_url, case_number):
"""Search court records, solving image CAPTCHAs as needed."""
# Load the search page
page = self.session.get(f"{portal_url}/search")
# Extract CAPTCHA image
captcha_img_url = self._extract_captcha_url(page.text, portal_url)
if not captcha_img_url:
# No CAPTCHA on this page
return self._submit_search(portal_url, case_number)
# Download and solve CAPTCHA
img_response = self.session.get(captcha_img_url)
captcha_text = self._solve_image_captcha(img_response.content)
# Submit search with solved CAPTCHA
return self._submit_search(portal_url, case_number, captcha_text)
def _extract_captcha_url(self, html, base_url):
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
# Look for common CAPTCHA image patterns
captcha_img = (
soup.find("img", {"id": "captchaImage"}) or
soup.find("img", {"class": "captcha"}) or
soup.find("img", attrs={"src": lambda s: s and "captcha" in s.lower()})
)
if captcha_img and captcha_img.get("src"):
return urljoin(base_url, captcha_img["src"])
return None
def _solve_image_captcha(self, image_bytes):
img_base64 = base64.b64encode(image_bytes).decode("utf-8")
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": self.api_key,
"method": "base64",
"body": img_base64,
"json": 1
})
task_id = resp.json()["request"]
for _ in range(30):
time.sleep(3)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": self.api_key,
"action": "get",
"id": task_id,
"json": 1
})
data = result.json()
if data["status"] == 1:
return data["request"]
raise TimeoutError("CAPTCHA solve timed out")
def _submit_search(self, portal_url, case_number, captcha_text=None):
form_data = {"caseNumber": case_number}
if captcha_text:
form_data["captcha"] = captcha_text
response = self.session.post(
f"{portal_url}/search/results",
data=form_data
)
return response.text
# Usage
searcher = PublicRecordsSearcher("YOUR_API_KEY")
results = searcher.search_court_records(
"https://courts.example.gov",
"2024-CV-12345"
)
Xử lý CAPTCHA toán học
Một số cổng thông tin chính phủ sử dụng CAPTCHA toán học đơn giản. CaptchaAI xử lý những điều này dưới dạng nhận dạng văn bản:
def solve_math_captcha(self, image_bytes):
"""Solve math CAPTCHAs like '4 + 7 = ?'"""
img_base64 = base64.b64encode(image_bytes).decode("utf-8")
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": self.api_key,
"method": "base64",
"body": img_base64,
"textinstructions": "solve the math equation and return only the number",
"json": 1
})
task_id = resp.json()["request"]
# Poll for result
for _ in range(30):
time.sleep(3)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": self.api_key,
"action": "get",
"id": task_id,
"json": 1
})
data = result.json()
if data["status"] == 1:
return data["request"]
raise TimeoutError("Math CAPTCHA solve timed out")
Tìm kiếm đa cổng (JavaScript)
class RecordsAggregator {
constructor(apiKey) {
this.apiKey = apiKey;
}
async searchAcrossPortals(query, portals) {
const results = [];
for (const portal of portals) {
try {
const data = await this.searchPortal(portal, query);
results.push({ portal: portal.name, records: data });
} catch (error) {
results.push({ portal: portal.name, error: error.message });
}
}
return results;
}
async searchPortal(portal, query) {
const pageResponse = await fetch(portal.searchUrl);
const html = await pageResponse.text();
// Check for image CAPTCHA
const captchaMatch = html.match(/captcha[^"]*\.(?:png|jpg|gif)/i);
let captchaAnswer = null;
if (captchaMatch) {
const imgUrl = new URL(captchaMatch[0], portal.searchUrl).href;
const imgData = await fetch(imgUrl);
const buffer = await imgData.arrayBuffer();
const base64 = Buffer.from(buffer).toString('base64');
captchaAnswer = await this.solveImageCaptcha(base64);
}
// Submit search
const formData = new URLSearchParams({ q: query });
if (captchaAnswer) formData.append('captcha', captchaAnswer);
const response = await fetch(portal.searchUrl, {
method: 'POST',
body: formData
});
return response.text();
}
async solveImageCaptcha(base64Image) {
const submitResp = await fetch('https://ocr.captchaai.com/in.php', {
method: 'POST',
body: new URLSearchParams({
key: this.apiKey,
method: 'base64',
body: base64Image,
json: '1'
})
});
const { request: taskId } = await submitResp.json();
for (let i = 0; i < 30; i++) {
await new Promise(r => setTimeout(r, 3000));
const result = await fetch(
`https://ocr.captchaai.com/res.php?key=${this.apiKey}&action=get&id=${taskId}&json=1`
);
const data = await result.json();
if (data.status === 1) return data.request;
}
throw new Error('CAPTCHA solve timed out');
}
}
// Usage
const aggregator = new RecordsAggregator('YOUR_API_KEY');
const results = await aggregator.searchAcrossPortals('Smith LLC', [
{ name: 'State Business Registry', searchUrl: 'https://sos.example.gov/search' },
{ name: 'County Court Records', searchUrl: 'https://courts.example.gov/search' }
]);
Tham số CAPTCHA cho Cổng thông tin chính phủ
| tham số | Giá trị | Khi nào nên sử dụng |
|---|---|---|
method |
base64 |
Hình ảnh được tải xuống dưới dạng byte |
method |
post |
Gửi file ảnh trực tiếp |
language |
0 |
Tiếng Anh/Latin văn bản CAPTCHA |
numeric |
1 |
CAPTCHA chỉ có chữ số |
min_len / max_len |
Khác nhau | Khi số lượng ký tự có thể dự đoán được |
textinstructions |
Lời nhắc tùy chỉnh | CAPTCHA toán học hoặc các định dạng cụ thể |
Khắc phục sự cố
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
| Hình ảnh CAPTCHA trả về 403 | Thiếu cookie phiên | Tải trang tìm kiếm trước, sau đó tìm nạp hình ảnh |
| Câu trả lời CAPTCHA sai | Chất lượng hình ảnh thấp | Tiền xử lý ảnh (tăng độ tương phản, loại bỏ nhiễu) |
| CAPTCHA làm mới khi gửi | Mã thông báo biểu mẫu đã hết hạn | Trích xuất các trường biểu mẫu ẩn bằng CAPTCHA |
| Tìm kiếm trả về trống sau CAPTCHA | POST chuyển hướng cookie bị mất | Sử dụng allow_redirects=True và duy trì phiên |
Câu hỏi thường gặp
Tại sao các cổng thông tin chính phủ vẫn sử dụng CAPTCHA hình ảnh?
Nhiều hệ thống của chính phủ chạy phần mềm cũ có trước reCAPTCHA và Cloudflare Turnstile. CAPTCHA hình ảnh tùy chỉnh là tiêu chuẩn khi các hệ thống này được xây dựng và việc cập nhật trong bộ phận CNTT của chính phủ diễn ra chậm.
CaptchaAI đối với CAPTCHA văn bản bị biến dạng có độ chính xác như thế nào?
CaptchaAI hỗ trợ hơn 27.500 loại CAPTCHA hình ảnh với độ chính xác cao. Đối với văn bản bị biến dạng nhiều, hãy sử dụng tham số textinstructions để hướng dẫn nhận dạng — ví dụ: "chữ cái và số, không có dấu cách".
Tôi có nên xử lý trước hình ảnh CAPTCHA trước khi gửi không?
Quá trình xử lý trước (thang độ xám, tăng độ tương phản, loại bỏ nhiễu) có thể cải thiện độ chính xác cho hình ảnh có chất lượng rất thấp. Xemhướng dẫn tiền xử lý ảnhcho các kỹ thuật.
Các bước tiếp theo
Tự động tìm kiếm hồ sơ công khai –lấy khóa API CaptchaAI của bạnvà xử lý CAPTCHA của cổng thông tin chính phủ.