
Anh Tuan
Data Science Expert

capsolver-core phù hợp với các script Playwright, capsolver-agent phù hợp với các agent gọi công cụ, và capsolver-mcp phù hợp với các khách hàng tương thích MCP.Công việc tự động hóa trích xuất dữ liệu thông báo thầu nên được xây dựng như một bước agent được giám sát với chuyển tiếp trạng thái rõ ràng. CapSolver nên được tích hợp như một khả năng được tài liệu hóa: trình duyệt hoặc mô hình phát hiện thách thức xác minh, công cụ được phê duyệt xử lý nó, và agent tiếp tục chỉ khi nhiệm vụ ban đầu được người dùng ủy quyền vẫn còn hợp lệ. Tài liệu AI của CapSolver chính thức mô tả ba lớp thực tế: CapSolver cho AI Agents cho kiến trúc, Core SDK chế độ trình duyệt cho luồng Playwright, các sơ đồ công cụ agent cho các cuộc gọi được kiểm soát bởi mô hình, và các công cụ dịch vụ MCP cho các khách hàng khám phá công cụ qua Giao thức Nội dung Mô hình. Bài viết này biến các tài liệu đó thành quy trình làm việc tự động hóa trích xuất thông báo thầu có tính sản xuất với mã, quy tắc dừng và trường ghi nhật ký.
Tài liệu AI của CapSolver mô tả ba lớp. Sử dụng lớp thấp nhất phù hợp với mô hình sở hữu của bạn: Core SDK khi mã của bạn kiểm soát trình duyệt, công cụ agent khi mô hình quyết định khi nào gọi công cụ, và dịch vụ MCP khi AI client của bạn nên khám phá công cụ giải quyết tự động.
pip install "capsolver-core[playwright] @ git+https://github.com/capsolver-ai/capsolver-core.git"
pip install git+https://github.com/capsolver-ai/capsolver-agent.git
pip install "capsolver-mcp[browser] @ git+https://github.com/capsolver-ai/capsolver-mcp.git"
playwright install chromium
export CAPSOLVER_API_KEY="your-capsolver-api-key"
Giới thiệu và Bắt đầu nhanh giải thích vai trò của các gói: capsolver-core mở rộng động cơ, capsolver-agent bao bọc nó thành công cụ, và capsolver-mcp mở rộng cùng khả năng cho các khách hàng MCP. Giữ khóa API trong cấu hình môi trường và tránh đặt nó trong lời nhắc, nhật ký, hình ảnh chụp màn hình hoặc ví dụ bài viết.
Quy trình tự động hóa trích xuất dữ liệu thông báo thầu an toàn tách biệt giữa phát hiện, trích xuất chi tiết, phân tích tệp đính kèm và xem xét. Xử lý CAPTCHA nên nằm giữa truy cập trang và trích xuất, không bao giờ sau khi dữ liệu đã bị trộn với nội dung chưa được xác minh.
states = [
"discover_notice_list",
"open_notice_detail",
"challenge_detected",
"resume_after_solution",
"extract_public_fields",
"review_or_stop",
]
required_fields = ["notice_id", "buyer", "deadline", "source_url"]
Cấu trúc này giúp agent báo cáo chính xác nơi nó dừng lại. Nó cũng giữ lớp trích xuất độc lập với lớp thách thức.
Sử dụng capsolver-core khi quy trình tự động hóa trích xuất dữ liệu thông báo thầu của bạn đã sở hữu trang Playwright. Đường dẫn SDK Core chính thức là phát hiện, đọc thông tin CAPTCHA, giải quyết và điền lại token vào trang. Lời gọi trình duyệt toàn diện hữu ích khi cấu trúc trang là động.
import asyncio
from capsolver_core import create_capsolver
from playwright.async_api import async_playwright
TARGET_URL = "https://example.gov/tenders/search"
async def run_agent_step():
async with async_playwright() as pw:
browser = await pw.chromium.launch()
page = await browser.new_page()
await page.goto(TARGET_URL, wait_until="domcontentloaded")
async with create_capsolver(api_key="YOUR_CAPSOLVER_KEY") as cap:
captcha_types = await cap.detect(page)
if not captcha_types:
return "continue_without_challenge"
results = await cap.solve_on_page(page)
solved = [r for r in results if r.solution and not r.error]
if not solved:
return "stop_for_review"
return "resume_original_authorized_task"
asyncio.run(run_agent_step())
Chi tiết kỹ thuật quan trọng là giá trị trả về, không chỉ token. Agent của bạn nên tiếp tục chỉ khi nhiệm vụ ban đầu vẫn hợp pháp, hợp lý và được người dùng ủy quyền. Nó nên dừng lại khi trang yêu cầu dữ liệu riêng tư, bị hạn chế, nhạy cảm hoặc không được ủy quyền.
Sử dụng capsolver-agent khi mô hình nên chọn thời điểm cần xử lý thách thức. Hướng dẫn công cụ agent công khai định nghĩa công cụ với get_all_tools() và định tuyến các cuộc gọi công cụ của mô hình qua create_executor().
import json
from openai import OpenAI
from capsolver_agent.schema import create_executor, get_all_tools
client = OpenAI()
executor = create_executor(api_key="YOUR_CAPSOLVER_KEY", default_timeout=120)
tools = [tool.to_openai_function() for tool in get_all_tools()]
messages = [{
"role": "user",
"content": "Tiếp tục nhiệm vụ trình duyệt được phê duyệt. Nếu xuất hiện CAPTCHA, gọi công cụ CapSolver một lần và báo cáo kết quả."
}]
async def run_one_turn():
response = client.chat.completions.create(
model="gpt-4o",
messages=messages,
tools=tools,
)
for call in response.choices[0].message.tool_calls or []:
args = json.loads(call.function.arguments)
result = await executor.execute(call.function.name, args)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": json.dumps(result),
})
Đối với tự động hóa trích xuất dữ liệu thông báo thầu, liên kết đường dẫn công cụ này với chính sách xem xét. Mô hình có thể yêu cầu công cụ, nhưng ứng dụng của bạn quyết định phạm vi URL được phép, số lần thử tối đa và liệu kết quả có thể được sử dụng để tiếp tục hay không.
Nhận mã thưởng CapSolver của bạn
Tăng ngân sách tự động hóa của bạn ngay lập tức!
Sử dụng mã thưởng CAP26 khi nạp tiền vào tài khoản CapSolver để nhận thêm 5% thưởng cho mỗi lần nạp tiền — không giới hạn.
Nhận mã thưởng ngay bây giờ trong Bảng điều khiển CapSolver
Trước khi gọi bất kỳ công cụ thách thức nào, xác nhận rằng nhiệm vụ được người dùng ủy quyền, đích nằm trong danh sách miền được phê duyệt và dữ liệu đang được truy cập là công khai hoặc được phép khác. Một quy trình tự động hóa trích xuất dữ liệu thông báo thầu nên không bao giờ coi khả năng kỹ thuật là sự cho phép.
Sử dụng ngân sách thử lại nhỏ. Một lần thử lại trạng thái trình duyệt và một lần thử lại làm mát thường là đủ. Các sự kiện thách thức lặp lại nên tạo vé xem xét thay vì tiếp tục một cách im lặng.
Ghi lại URL, thời gian, loại thách thức, đường dẫn gói CapSolver, số lần thử, trạng thái kết quả và trạng thái trang cuối cùng. Không lưu trữ nội dung trang không liên quan, thông tin đăng nhập, bí mật phiên hoặc dữ liệu cá nhân trừ khi chính sách của bạn cho phép rõ ràng.
Đối với tự động hóa trích xuất dữ liệu thông báo thầu, hãy giữ cho quy trình chạy hợp pháp và dựa trên bằng chứng: tôn trọng hành vi mã trạng thái HTTP, yêu cầu khả năng tiếp cận, quản lý rủi ro riêng tư, và quản lý dữ liệu công cộng.
Một bài viết về tự động hóa trích xuất dữ liệu thông báo thầu mạnh mẽ nên hiển thị các con đường triển khai thực tế, và một quy trình sản xuất mạnh mẽ cũng nên làm như vậy. Lựa chọn thực tế đơn giản là: sử dụng capsolver-core cho tự động hóa trình duyệt do mã sở hữu, capsolver-agent cho agent gọi công cụ, và capsolver-mcp cho khách hàng tương thích MCP. Giữ xử lý thách thức có giới hạn, được ghi nhật ký và liên kết với công việc được người dùng ủy quyền hợp pháp. Khi đội của bạn sẵn sàng thêm lớp khôi phục vào quy trình agent, bắt đầu với CapSolver và tài liệu agent AI chính thức.
Sử dụng capsolver-core khi ứng dụng của bạn sở hữu mã trình duyệt, capsolver-agent khi mô hình nên gọi công cụ, và capsolver-mcp khi AI client nên khám phá công cụ thông qua MCP.
Không. Mô hình có thể yêu cầu gọi công cụ, nhưng ứng dụng nên thực thi phạm vi, giới hạn thử lại và điều kiện dừng.
Không. Việc xử lý CAPTCHA không cấp quyền. Sử dụng nó chỉ cho các quy trình hợp pháp, hợp lý, được người dùng ủy quyền và tôn trọng điều khoản trang và quyền dữ liệu.
Ghi lại URL nguồn, loại thách thức, đường dẫn công cụ, số lần thử, trạng thái kết quả và trạng thái trang cuối cùng. Giữ thông tin đăng nhập và nội dung trang không liên quan khỏi nhật ký.
Học kiến trúc gỡ mã web Rust có thể mở rộng với reqwest, scraper, gỡ mã bất đồng bộ, gỡ mã trình duyệt không đầu, xoay proxy và xử lý CAPTCHA tuân thủ.

Tự động hóa việc giải CAPTCHA với Nanobot và CapSolver. Sử dụng Playwright để giải reCAPTCHA và Cloudflare tự động.
