Các trang web của chính phủ sử dụng CAPTCHA để bảo vệ biểu mẫu, hệ thống đặt lịch hẹn và cổng hồ sơ công khai. Nhóm QA, nhà phát triển công nghệ dân sự và chuyên gia pháp lý cần quyền truy cập tự động để kiểm tra và vận hành các quy trình công việc này một cách hiệu quả.
CAPTCHA của chính phủ theo danh mục
| Danh mục cổng thông tin | CAPTCHA phổ biến | Trang web mẫu | Trường hợp sử dụng |
|---|---|---|---|
| Thị thực/nhập cư | BLS, reCAPTCHA v2 | Cổng thông tin BLS, USCIS | Đặt lịch hẹn |
| DMV/xe cơ giới | reCAPTCHA v2, hình ảnh | Các trang web DMV của tiểu bang | Gia hạn đăng ký |
| Hồ sơ tòa án | reCAPTCHA v2 | PACER, tòa án tiểu bang | Tra cứu trường hợp |
| Giấy phép/giấy phép | CAPTCHA hình ảnh | Cổng thông tin giấy phép thành phố | Nộp hồ sơ |
| Cổng thông tin thuế | reCAPTCHA v2 | IRS, trang web thuế tiểu bang | Kiểm tra tình trạng nộp hồ sơ |
| Hồ sơ công cộng | CAPTCHA hình ảnh, reCAPTCHA | Hồ sơ quận | Tra cứu Property/deed |
Tự động hóa cuộc hẹn Visa BLS
Cổng BLS sử dụng hệ thống CAPTCHA của riêng họ. CaptchaAI hỗ trợ BLS CAPTCHA với độ chính xác 100%:
import requests
import time
import base64
CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"
def solve_bls_captcha(captcha_image_url, session):
"""Solve BLS-specific CAPTCHA."""
# Download CAPTCHA image
img_resp = session.get(captcha_image_url)
img_b64 = base64.b64encode(img_resp.content).decode()
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "base64",
"body": img_b64,
"json": 1,
})
task_id = resp.json()["request"]
for _ in range(30):
time.sleep(3)
result = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY, "action": "get",
"id": task_id, "json": 1,
})
data = result.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("BLS CAPTCHA timeout")
class BLSAppointmentBooker:
def __init__(self):
self.session = requests.Session()
self.session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36",
})
def login(self, portal_url, email, password):
"""Login to BLS portal with CAPTCHA."""
resp = self.session.get(portal_url)
# Extract CAPTCHA image URL from page
import re
match = re.search(r'src="(/captcha[^"]+)"', resp.text)
if match:
captcha_url = portal_url.rstrip("/") + match.group(1)
captcha_text = solve_bls_captcha(captcha_url, self.session)
else:
captcha_text = ""
login_resp = self.session.post(portal_url, data={
"email": email,
"password": password,
"captcha": captcha_text,
})
return login_resp.status_code == 200
def check_appointment_slots(self, slots_url):
"""Check available appointment slots."""
resp = self.session.get(slots_url)
if resp.status_code == 200:
return resp.json().get("available_slots", [])
return []
def book_slot(self, booking_url, slot_id, applicant_data):
"""Book an appointment slot, handling any CAPTCHA."""
resp = self.session.get(booking_url)
# Check for CAPTCHA on booking page
import re
match = re.search(r'src="(/captcha[^"]+)"', resp.text)
if match:
captcha_url = booking_url.rstrip("/") + match.group(1)
captcha_text = solve_bls_captcha(captcha_url, self.session)
else:
captcha_text = ""
resp = self.session.post(booking_url, data={
"slot_id": slot_id,
"captcha": captcha_text,
**applicant_data,
})
return {
"success": resp.status_code == 200,
"confirmation": resp.json().get("confirmation_number"),
}
Tra cứu hồ sơ tòa án
def solve_recaptcha(sitekey, pageurl):
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": pageurl,
"json": 1,
})
task_id = resp.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY, "action": "get",
"id": task_id, "json": 1,
})
data = result.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("Timeout")
class CourtRecordSearcher:
def __init__(self, proxy=None):
self.session = requests.Session()
if proxy:
self.session.proxies = {"http": proxy, "https": proxy}
self.session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36",
})
def search_cases(self, court_url, search_params, sitekey):
"""Search court records with reCAPTCHA handling."""
# Load search page
self.session.get(court_url)
# Solve CAPTCHA
token = solve_recaptcha(sitekey, court_url)
# Submit search with token
resp = self.session.post(court_url, data={
**search_params,
"g-recaptcha-response": token,
})
if resp.status_code == 200:
return self._parse_results(resp.text)
return []
def _parse_results(self, html):
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
cases = []
for row in soup.select("table.results tr")[1:]:
cols = row.select("td")
if len(cols) >= 4:
cases.append({
"case_number": cols[0].get_text(strip=True),
"parties": cols[1].get_text(strip=True),
"date": cols[2].get_text(strip=True),
"status": cols[3].get_text(strip=True),
})
return cases
Hình ảnh CAPTCHA trên Cổng giấy phép
Nhiều cổng thông tin của thành phố và quận sử dụng CAPTCHA hình ảnh đơn giản:
def solve_image_captcha(image_url, session):
"""Solve image-based CAPTCHA common on local government sites."""
img = session.get(image_url)
img_b64 = base64.b64encode(img.content).decode()
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data={
"key": CAPTCHAAI_KEY,
"method": "base64",
"body": img_b64,
"json": 1,
})
task_id = resp.json()["request"]
for _ in range(20):
time.sleep(3)
result = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY, "action": "get",
"id": task_id, "json": 1,
})
data = result.json()
if data["request"] != "CAPCHA_NOT_READY":
return data["request"]
raise TimeoutError("Image CAPTCHA timeout")
Tra cứu hàng loạt hồ sơ công cộng
import csv
def batch_property_lookup(addresses, portal_url, sitekey, output_file):
"""Look up multiple property records, solving CAPTCHA per batch."""
session = requests.Session()
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 Chrome/126.0.0.0 Safari/537.36",
})
results = []
for i, address in enumerate(addresses):
try:
# Solve CAPTCHA every 5th request (or when required)
if i % 5 == 0:
token = solve_recaptcha(sitekey, portal_url)
resp = session.post(portal_url, data={
"address": address,
"g-recaptcha-response": token,
})
if resp.status_code == 200:
results.append({
"address": address,
"data": resp.json(),
})
time.sleep(3) # Be respectful
except Exception as e:
results.append({"address": address, "error": str(e)})
# Save results
with open(output_file, "w", newline="") as f:
writer = csv.DictWriter(f, fieldnames=["address", "data", "error"])
writer.writeheader()
writer.writerows(results)
return results
Mẹo quản lý phiên
Cổng thông tin chính phủ thường có thời gian chờ phiên ngắn:
| Loại cổng thông tin | Thời gian chờ của phiên | Khuyến nghị |
|---|---|---|
| Cổng thông tin thị thực | 5-10 phút | Hoàn thành dòng chảy một cách nhanh chóng |
| Trang web DMV | 15 phút | Làm mới cookie phiên giữa chừng |
| Hồ sơ tòa án | 20-30 phút | Tìm kiếm hàng loạt theo nhóm |
| Cổng thông tin thuế | 10-15 phút | Sử dụng proxy dính, cùng IP |
| Cho phép ứng dụng | 30 phút | Lưu tiến độ ở mỗi bước |
Khắc phục sự cố
| Vấn đề | Nguyên nhân | Cách xử lý |
|---|---|---|
| Hình ảnh CAPTCHA không tải | Cookie phiên đã hết hạn | Bắt đầu phiên mới |
| "Phiên đã hết hạn" trong biểu mẫu | Mất quá nhiều thời gian để giải quyết | Giải quyết trước hoặc sử dụng giải pháp nhanh hơn |
| Câu trả lời CAPTCHA sai | Hình ảnh bị biến dạng | Báo cáo hình ảnh xấu qua API |
| Tự động hóa khối cổng thông tin | Phát hiện IP/UA | Sử dụng đa dạng nguồn yêu cầu + UA thực |
| Lỗi xác thực biểu mẫu sau CAPTCHA | Mã thông báo phía máy chủ đã hết hạn | Giải CAPTCHA ngay trước khi gửi |
Câu hỏi thường gặp
Tự động hóa cổng thông tin chính phủ có hợp pháp không?
Tự động hóa các biểu mẫu và tra cứu dữ liệu của riêng bạn thường được cho phép. Thử nghiệm QA cho các ứng dụng công nghệ dân sự là một cách sử dụng hợp pháp phổ biến. Luôn kiểm tra các điều khoản dịch vụ của cổng thông tin cụ thể.
Loại CAPTCHA nào phổ biến nhất trên các trang web của chính phủ?
Hình ảnh CAPTCHA và reCAPTCHA v2. Các trang web của chính phủ thường tụt hậu về công nghệ CAPTCHA, khiến việc giải quyết trở nên đơn giản hơn.
CaptchaAI có thể giải được BLS CAPTCHA không?
Có - CaptchaAI hỗ trợ BLS CAPTCHA với tỷ lệ chính xác 100% bằng cách sử dụng tham số method=bls để giải trực tiếp hoặc method=base64 để giải dựa trên hình ảnh.
Làm cách nào để xử lý các biểu mẫu chính phủ gồm nhiều bước?
Sử dụng các phiên phiên cố định nội bộ để duy trì cùng một IP trong toàn bộ biểu mẫu. Cổng thông tin chính phủ thường xác thực tính nhất quán IP giữa các trang biểu mẫu.
Hướng dẫn liên quan
Bước tiếp theo
- CaptchaAI Quickstart: Lần Giải CAPTCHA Đầu Tiên Của Bạn Trong 5 Phút
- Cách Giải reCAPTCHA v2 Bằng API: Hướng Dẫn Từng Bước
- Cách giải Cloudflare Turnstile bằng API
- Cách giải quyết GeeTest v3 bằng API