
Aloísio Vítor
Image Processing Expert

capsolver-core se adapta a scripts de Playwright, capsolver-agent se adapta a agentes de llamada de herramientas y capsolver-mcp se adapta a clientes compatibles con MCP.La automatización de extracción de datos de notificaciones de licitación debe construirse como un paso de agente monitoreado con transiciones de estado claras. CapSolver debe integrarse como una capacidad de agente documentada: el navegador o el modelo detecta un desafío de verificación, la herramienta aprobada lo maneja y el agente reanuda solo cuando la tarea autorizada por el usuario original siga siendo válida. La documentación oficial de CapSolver AI describe tres capas prácticas: CapSolver para agentes de IA para la arquitectura, modo SDK de navegador para flujos de Playwright, esquemas de herramientas para agentes para llamadas controladas por modelos y herramientas de servicio MCP para clientes que descubran herramientas a través del Protocolo de Contexto de Modelo. Este artículo convierte estas documentaciones en un flujo de trabajo de automatización de extracción de datos de notificaciones de licitación orientado a producción con código, reglas de detención y campos de registro.
La documentación de CapSolver AI describe tres capas. Use la capa más baja que se ajuste a su modelo de propiedad: SDK de núcleo cuando su código controla el navegador, herramientas de agente cuando un modelo decide cuándo llamar a una herramienta y servicio MCP cuando su cliente de IA debe descubrir herramientas de resolución automáticamente.
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="su-clave-de-capsolver"
La Introducción y Comienzo rápido explica los roles de los paquetes: capsolver-core expone el motor, capsolver-agent lo envuelve como herramientas y capsolver-mcp expone la misma capacidad a clientes MCP. Mantén la clave de API en la configuración del entorno y evita colocarla en prompts, registros, capturas de pantalla o ejemplos de artículos.
El flujo más seguro para la automatización de extracción de datos de notificaciones de licitación separa la detección, la extracción de detalles, el análisis de archivos adjuntos y la revisión. El manejo de CAPTCHA pertenece entre el acceso a la página y la extracción, nunca después de que los datos ya se hayan mezclado con contenido no verificado.
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"]
Esta estructura ayuda a un agente a informar exactamente dónde se detuvo. También mantiene la capa de extracción independiente de la capa de desafío.
Use capsolver-core cuando su flujo de automatización de extracción de datos de notificaciones de licitación ya controle una página de Playwright. El camino oficial del SDK de núcleo es detectar, leer la información de CAPTCHA, resolver y rellenar el token de vuelta en la página. La llamada de navegador integral es útil cuando la estructura de la página es dinámica.
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="SU_CLAVE_DE_CAPSOLVER") 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())
El detalle de ingeniería importante es el valor de retorno, no solo el token. Su agente debe continuar solo cuando la tarea original siga siendo legal, razonable y autorizada por el usuario. Debe detenerse cuando la página solicite datos privados, restringidos, sensibles o no autorizados.
Use capsolver-agent cuando el modelo deba elegir cuándo se necesita manejo de desafíos. La guía de herramientas para agentes expone definiciones de herramientas con get_all_tools() y enruta las llamadas de herramientas del modelo a través de 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="SU_CLAVE_DE_CAPSOLVER", default_timeout=120)
tools = [tool.to_openai_function() for tool in get_all_tools()]
messages = [{
"role": "user",
"content": "Continúe con la tarea aprobada del navegador. Si aparece un CAPTCHA, llame una vez a la herramienta CapSolver y reporte el resultado."
}]
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),
})
Para la automatización de extracción de datos de notificaciones de licitación, vincule este camino de herramienta a una política de revisión. El modelo puede solicitar la herramienta, pero su aplicación decide el alcance de URL permitido, el número máximo de intentos y si el resultado puede usarse para continuar.
Canjea tu código promocional de CapSolver
¡Aumenta tu presupuesto de automatización instantáneamente!
Usa el código promocional CAP26 al recargar tu cuenta de CapSolver para obtener un 5% adicional en cada recarga — sin límites.
Canjéalo ahora en tu Panel de CapSolver
Antes de llamar a cualquier herramienta de desafío, confirme que la tarea fue autorizada por el usuario, que el objetivo está dentro de la lista de dominios aprobados y que los datos que se acceden son públicos u otros permitidos. Un flujo de trabajo de automatización de extracción de datos de notificaciones de licitación nunca debe tratar la capacidad técnica como permiso.
Use un pequeño presupuesto de reintentos. Un reintentos de estado de navegador y un reintentos de refrigeración suelen ser suficientes. Los eventos de desafío repetidos deben crear un ticket de revisión en lugar de continuar en silencio.
Capture URL, marca de tiempo, tipo de desafío, ruta del paquete de CapSolver, número de intento, estado del resultado y estado final de la página. No almacene contenido de página no relacionado, credenciales, secretos de sesión o datos personales a menos que su política lo permita explícitamente.
Para la automatización de extracción de datos de notificaciones de licitación, mantenga la ejecución legal y basada en evidencia: respete el comportamiento de los códigos de estado HTTP, los requisitos de accesibilidad, la gestión de riesgos de privacidad y la administración de datos públicos.
Un artículo sólido sobre extracción de datos de notificaciones de licitación debe mostrar caminos de implementación reales, y un flujo de trabajo sólido de producción debe hacer lo mismo. La elección práctica es sencilla: use capsolver-core para automatización de navegador controlada por código, capsolver-agent para agentes de llamada de herramientas y capsolver-mcp para clientes compatibles con MCP. Mantenga el manejo de desafíos acotado, registrado y vinculado a trabajo autorizado por el usuario. Cuando su equipo esté listo para agregar esa capa de recuperación a un flujo de trabajo de agente, comience con CapSolver y la documentación oficial de agentes de IA.
Use capsolver-core cuando su aplicación controle el código del navegador, capsolver-agent cuando un modelo deba llamar a una herramienta y capsolver-mcp cuando el cliente de IA deba descubrir herramientas a través de MCP.
No. El modelo puede solicitar una llamada a la herramienta, pero la aplicación debe imponer el alcance, los límites de reintentos y las condiciones de detención.
No. El manejo de CAPTCHA no otorga permiso. úselo solo para flujos autorizados por el usuario, legales y razonables que respeten los términos del sitio y los derechos de datos.
Registre la URL de origen, el tipo de desafío, la ruta de la herramienta, el recuento de intentos, el estado del resultado y el estado final de la página. Mantenga las credenciales y el contenido de página no relacionado fuera de los registros.
Aprende una arquitectura de raspado web escalable en Rust con reqwest, scraper, raspado asíncrono, raspado con navegador sin cabeza, rotación de proxies y manejo de CAPTCHA conforme.

Automatiza la resolución de CAPTCHA con Nanobot y CapSolver. Utiliza Playwright para resolver reCAPTCHA y Cloudflare autónomamente.
