🎯 Um navegador em nuvem personalizável e anti-detecção alimentado por Chromium desenvolvido internamente, projetado para rastreadores web e agentes de IA. 👉Experimente agora
De volta ao blog

Dramaturgo + Navegador de Scraping Sem Resíduos: Chromium em Nuvem Sobre CDP

Ava Wilson
Ava Wilson

Expert in Web Scraping Technologies

05-Aug-2026

O Playwright controla um navegador; o Scrapeless Scraping Browser oferece um que já vive na nuvem, fala o Protocolo DevTools do Chrome e carrega tráfego residencial. Sua chamada connect_over_cdp alcança uma sessão real do Chromium através de wss://browser.scrapeless.com/api/v2/browser em vez de um Chrome que você precisa instalar, configurar e manter para não se destacar.

Essa única troca — o lançamento local se torna uma conexão remota — é toda a integração. O script do Playwright que você já conhece permanece o mesmo. O que muda é onde o navegador é executado e de qual IP ele sai. Este guia conecta o Python Playwright ao Scrapeless Scraping Browser, renderiza uma página JavaScript, lê dados estruturados dela e fixa a solicitação a um país específico, com cada caminho de código executado contra o ponto de extremidade ao vivo.

Por que o Scrapeless Scraping Browser para Playwright

O Scraping Browser é uma sessão do Chromium na nuvem que você acessa via CDP, então o Playwright o trata exatamente como um navegador que ele iniciou. Não há Chrome local para baixar, nenhuma flag headless para disfarçar, e nenhum processo de navegador competindo por memória na sua máquina. Você se conecta, recebe um objeto Browser, e toda a API do Playwright funciona com ele.

Três propriedades são importantes para scraping. A sessão renderiza JavaScript do lado do servidor, então uma página construída inteiramente por scripts do cliente chega com seu DOM já populado. A conexão carrega tráfego residencial que você pode fixar a um país, então uma página que geo-impede seu conteúdo vê tráfego da região que você solicitou. E porque o navegador é remoto, a máquina que executa seu script nunca precisa de uma GPU, um display, ou uma versão do Chromium corrigida — a metade local é apenas um cliente websocket falando o Protocolo DevTools do Chrome.

Pré-requisitos

Você precisa do Python 3.9 ou mais recente, do pacote playwright, e de uma chave da API Scrapeless. Obtenha a chave no plano gratuito em app.scrapeless.com; o painel a mostra na página de chave da API. A chave viaja na URL de conexão como o parâmetro de consulta token, então mantenha-a em uma variável de ambiente em vez de um literal no seu código.

Você não precisa de um binário de navegador local. connect_over_cdp abre um websocket para um navegador que já existe na nuvem, então o passo usual playwright install chromium é opcional aqui — a renderização acontece do lado da Scrapeless na conexão.

Instalação

Instale o cliente do Playwright no seu projeto:

bash Copy
pip install playwright

Coloque sua chave no ambiente para que nunca apareça no código ou logs:

bash Copy
export SCRAPELESS_API_KEY="sua_chave_api_scrapeless"

Construa a URL do websocket e, em seguida, passe-a para connect_over_cdp. O endpoint é wss://browser.scrapeless.com/api/v2/browser, e ele lê três parâmetros de consulta: token para sua chave, sessionTTL para quanto tempo o navegador fica ativo em segundos, e proxyCountry para a região de saída. O transporte websocket em si segue o protocolo WebSocket, e a API de conexão do tipo de navegador do Playwright fala CDP sobre isso:

python Copy
import os
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright

API_KEY = os.environ["SCRAPELESS_API_KEY"]

def scraping_browser_url(proxy_country="US", session_ttl=180):
    params = urlencode({
        "token": API_KEY,
        "sessionTTL": session_ttl,
        "proxyCountry": proxy_country,
    })
    return f"wss://browser.scrapeless.com/api/v2/browser?{params}"

sessionTTL limita quanto tempo um único navegador vive; um valor curto é bom para uma página, um tempo mais longo mantém o navegador aquecido em um fluxo de várias etapas. proxyCountry aceita um código de duas letras. Todo o resto é Playwright comum.

Renderizar uma página JavaScript e extrair

Aponte o navegador conectado para uma página que constrói seu conteúdo no cliente, e o DOM renderizado já estará lá quando a navegação se estabilizar. A página de demonstração abaixo envia um contêiner vazio e o preenche com JavaScript; uma busca HTTP simples retorna zero linhas, enquanto o navegador na nuvem retorna todas as dez porque executou os scripts primeiro — o DOM que você consulta é aquele que o modelo de parsing e scripting HTML produziu após a execução.

python Copy
import os
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright

API_KEY = os.environ["SCRAPELESS_API_KEY"]

def scraping_browser_url(proxy_country="US", session_ttl=180):
    params = urlencode({"token": API_KEY, "sessionTTL": session_ttl, "proxyCountry": proxy_country})
    return f"wss://browser.scrapeless.com/api/v2/browser?{params}"

with sync_playwright() as p:
    browser = p.chromium.connect_over_cdp(scraping_browser_url())
    page = browser.new_page()
    page.goto("https://quotes.toscrape.com/js/", wait_until="networkidle")
    quotes = page.query_selector_all(".quote")
    print("quote blocks on JS-rendered page:", len(quotes))
    print("first author:", quotes[0].query_selector(".author").inner_text())
    browser.close()

Executá-lo imprime a contagem e o primeiro registro:

text Copy
blocos de citações na página renderizada por JS: 10
primeiro autor: Albert Einstein

A escolha de wait_until="networkidle" é adequada para uma página cujo conteúdo chega por meio de uma explosão de solicitações impulsionadas por scripts. Em uma página com muitas análises que nunca fica silenciosa, mude para domcontentloaded mais uma espera explícita pelo seletor que você se importa, para que a execução não fique presa aguardando uma rede que nunca fica inativa.

Obtenha sua chave de API no plano gratuito: app.scrapeless.com

Fixar a saída em um país

Altere um parâmetro e a solicitação sai de um país diferente. O código proxyCountry seleciona a região de saída residencial, que decide tanto o IP que um site vê quanto, para páginas geograficamente restritas, o conteúdo que ele serve. Ler um ponto de extremidade de eco de IP de duas regiões mostra o endereço de saída mudando enquanto o script nunca se move:

python Copy
import os, json
from urllib.parse import urlencode
from playwright.sync_api import sync_playwright

API_KEY = os.environ["SCRAPELESS_API_KEY"]

def scraping_browser_url(country):
    return "wss://browser.scrapeless.com/api/v2/browser?" + urlencode(
        {"token": API_KEY, "sessionTTL": 180, "proxyCountry": country})

with sync_playwright() as p:
    for country in ("US", "GB"):
        browser = p.chromium.connect_over_cdp(scraping_browser_url(country))
        page = browser.new_page()
        page.goto("https://api.ipify.org?format=json", wait_until="domcontentloaded")
        ip = json.loads(page.inner_text("pre, body"))["ip"]
        print(f"proxyCountry={country} -> IP de saída em nuvem {ip}")
        browser.close()

As duas conexões saem de dois endereços diferentes, nenhum dos quais é o endereço da sua máquina:

text Copy
proxyCountry=US -> IP de saída em nuvem 24.93.178.230
proxyCountry=GB -> IP de saída em nuvem 109.149.20.197

Essa é a diferença prática de uma execução local do Playwright: o navegador e seu IP de saída estão ambos do lado da Scrapeless, portanto, limites de taxa e regras geográficas estão vinculados à região fixada em vez de ao seu workstation.

Trabalhando com a sessão

Tudo após a conexão é o Playwright padrão, porque o objeto que você possui é um Browser normal. page.screenshot() captura o que o Chromium da nuvem renderizou, page.click() e page.fill() manipulam formulários, e page.evaluate() executa JavaScript no contexto da página. Uma única conexão pode abrir várias páginas, e fechar o navegador encerra a sessão remota; se você definir um sessionTTL longo e desconectar sem fechar, a sessão expira por conta própria quando o tempo acabar.

Mantenha sua automação dentro dos limites estabelecidos por um site. Leia os termos do alvo e seu arquivo Protocol de Exclusão de Robôs, solicite apenas páginas públicas e mantenha a concorrência modesta. Renderizar uma página na nuvem não altera o que um site permite coletar. Para um passeio mais amplo por padrões de descoberta e extração, o guia sobre construir um web scraper do zero combina bem com este.

Conclusão

Conectar o Playwright ao Scraping Browser da Scrapeless mantém seu script e troca o tempo de execução. Você ainda escreve goto, query_selector_all, e screenshot; o navegador que os executa é uma sessão do Chromium em nuvem com saída residencial que você pode fixar por país, acessada através de um único websocket CDP. As duas execuções acima – dez citações de uma página JavaScript, dois IPs de saída de duas regiões – são todo o contrato: renderizar do lado do servidor, extrair normalmente, controlar de onde o tráfego sai. Leia as capacidades atuais na página do produto Scraping Browser e verifique os limites de sessão e de saída em relação ao seu volume na página de preços.

Junte-se à nossa comunidade para reivindicar um plano gratuito e comparar notas com outros desenvolvedores que estão construindo automação de navegador: Discord · Telegram.

Perguntas Frequentes

P: Eu preciso instalar o Chrome ou executar playwright install para usar o Scraping Browser?
Não. O navegador roda na nuvem do Scrapeless, então connect_over_cdp precisa apenas do pacote cliente playwright. O download local do navegador importa apenas se você também lançar navegadores em sua própria máquina.

P: Quais bindings do Playwright podem se conectar a isso?

Qualquer binding do Playwright que exponha um método de conexão via CDP funciona, porque o ponto final utiliza o Protocolo do Chrome DevTools. Os exemplos aqui usam o sync_playwright do Python, e a mesma URL se aplica à API assíncrona e ao binding do Node.

P: Como faço para que a solicitação venha de um país específico?

Defina o parâmetro de consulta proxyCountry na URL de conexão com um código de país de duas letras. A conexão então sai de uma saída residencial naquela região, que é onde uma página com restrição geográfica baseia seu conteúdo.

P: Como isso difere de executar o Playwright localmente?

Uma execução local inicia o Chrome em sua máquina e sai do seu IP. O Navegador de Scraping roda o Chromium na nuvem com saída residencial, então você evita totalmente o navegador local e controla a região de saída através de um parâmetro de consulta.

P: Quanto tempo uma sessão de navegador permanece aberta?

O parâmetro sessionTTL define a duração em segundos. Fechar o navegador encerra a sessão imediatamente; se você desconectar sem fechar, a sessão termina por conta própria quando o TTL expira.

P: Posso tirar capturas de tela e preencher formulários, ou apenas ler o DOM?

A API completa do Playwright está disponível. Como o objeto conectado é um Browser comum, page.screenshot(), page.click(), page.fill() e page.evaluate() se comportam como fazem localmente.

P: Qual estratégia de espera devo usar para páginas JavaScript?

Use networkidle para páginas cujo conteúdo chega em um curto intervalo de solicitações, e domcontentloaded mais uma espera explícita para um seletor conhecido em páginas que mantêm uma conexão em segundo plano aberta. O segundo padrão evita esperar em uma rede que nunca fica silenciosa.

Na Scorretless, acessamos apenas dados disponíveis ao público, enquanto cumprem estritamente as leis, regulamentos e políticas de privacidade do site aplicáveis. O conteúdo deste blog é apenas para fins de demonstração e não envolve atividades ilegais ou infratoras. Não temos garantias e negamos toda a responsabilidade pelo uso de informações deste blog ou links de terceiros. Antes de se envolver em qualquer atividade de raspagem, consulte seu consultor jurídico e revise os termos de serviço do site de destino ou obtenha as permissões necessárias.

Artigos mais populares

Catálogo