View a markdown version of this page

Integrando AgentCore pagamentos com a ferramenta do navegador - Amazon Bedrock AgentCore

Integrando AgentCore pagamentos com a ferramenta do navegador

Há duas maneiras pelas quais seu agente pode acessar o conteúdo pago x402: por meio da Ferramenta do Navegador ou por meio de chamadas HTTP padrão.

Integração com ferramentas de navegador (Playwright)

A ferramenta AgentCore Browser oferece ao seu agente uma sessão gerenciada do navegador Chromium sem cabeça dentro do Runtime. AgentCore Seu agente se conecta WebSocket usando o DevTools Protocolo Chrome (CDP), permitindo que ele navegue pelas páginas JavaScript, execute e intercepte respostas HTTP no nível da rede. Para começar, consulte o guia de integração do navegador.

Essa opção usa o Strands SDK junto com a ferramenta do navegador e a ferramenta de pagamentos para navegar em sites e processar pagamentos. Quando um agente usa a ferramenta do navegador para navegar em sites, ele usa os recursos de interceptação de resposta do Playwright para detectar automaticamente sites pagos:

  1. Navegação no navegador — O agente usa browse_with_payment uma ferramenta desenvolvida pela Playwright.

  2. Detecção automática de 402 — O Playwright intercepta todas as respostas HTTP e aciona o manipulador de respostas do agente para detectar códigos de status 402.

  3. Extração x402 — As ferramentas de pagamento analisam automaticamente os detalhes de pagamento x402 a partir da resposta. headers/body Isso também pode ser feito pela lógica comercial do agente.

  4. Processamento de pagamentos — AgentCore o processador de pagamentos cria assinaturas criptográficas usando carteiras CDP configuradas.

  5. Tentar novamente — As ferramentas de pagamento injetam cabeçalhos de autorização e repetem a solicitação na mesma sessão do navegador.

from agentcore.payments import PaymentClient from agentcore.browser import browser_tool @tool async def browse_with_payment(url: str, auto_pay: bool = True) -> dict: payment_requirements = None async def handle_response(response): nonlocal payment_requirements if response.status == 402: payment_requirements = await extract_x402_requirements(response) async def add_payment_header(route, request): headers = {**request.headers, **payment_result["authorization"]} await route.continue_(headers=headers) async with async_playwright() as p: # 1. Browser setup browser = await p.chromium.connect_over_cdp(AGENTCORE_BROWSER_WS_URL) page = await browser.contexts[0].new_page() # 2. Register response interceptor page.on("response", handle_response) # 3. Initial navigation (handle_response runs automatically here) response = await page.goto(url) # 4. Payment processing logic (runs AFTER navigation completes) if response.status == 402 and payment_requirements and auto_pay: payment_result = payment_client.process_payment( payment_session, payment_instrument, payment_requirements=payment_requirements ) if payment_result["success"]: await page.route("**/*", add_payment_header) response = await page.goto(url) # Retry with payment else: raise PaymentError(f"Payment failed: {payment_result['error_message']}") # 5. Capture content, cleanup, and return content = await page.content() await browser.close() return {"content": content, "status": response.status}

Non-browser Integração HTTP

Para chamadas diretas de API e cenários sem interface, os desenvolvedores podem criar uma lógica de ferramenta personalizada usando o Strands SDK junto com uma biblioteca de solicitações HTTP padrão para processar pagamentos com detecção x402:

  1. O agente usa uma ferramenta personalizada para fazer chamadas HTTP diretas.

  2. A ferramenta monitora os códigos de status de resposta HTTP para detectar 402.

  3. A ferramenta extrai os requisitos do x402 e processa o pagamento.

  4. A ferramenta repete a solicitação HTTP com cabeçalhos de autorização de pagamento.

@tool async def make_payment(method, url, headers, body) -> dict: # Make initial HTTP request response = requests.request(method, url, headers=headers, data=body) # Check for 402 Payment Required if response.status_code == 402: payment_requirements = extract_x402_requirements(response) payment_result = payment_client.process_payment( payment_session, payment_instrument, payment_requirements=payment_requirements ) if payment_result["success"]: # Retry request with payment authorization headers.update(payment_result["authorization"]) response = requests.request(method, url, headers=headers, data=body) else: raise PaymentError(f"Payment failed: {payment_result['error_message']}")