Wilberhg's blog

Resolvendo o Erro 'SELF_SIGNED_CERT_IN_CHAIN' no Playwright (Windows)

Entendendo o Conceito

O comando playwright install utiliza o Node.js por trás dos panos para realizar o download dos navegadores (Chromium, Firefox e WebKit).

Em redes corporativas, é comum que firewalls e sistemas de segurança interceptem as conexões HTTPS e injetem um certificado interno próprio na cadeia de certificação. Como o Node.js não reconhece esse certificado de fábrica, ele bloqueia a conexão e o download não acontece.

Abaixo, três alternativas para contornar o problema diretamente no terminal (VS Code ou Prompt de Comando), com o ambiente virtual devidamente ativado.

Passo a Passo

Alternativa 1 - Ignorar a verificação de certificado (mais rápida)

  1. Criar a variável de ambiente temporária (PowerShell):

    $env:NODE_TLS_REJECT_UNAUTHORIZED="0"
    
  2. Ou, caso esteja utilizando o Prompt de Comando (CMD):

    set NODE_TLS_REJECT_UNAUTHORIZED=0
    
  3. Executar o download dos navegadores:

    playwright install
    

Alternativa 2 - Confiar no certificado corporativo (mais segura)

  1. Obter com o time de segurança/infra o certificado root da empresa (arquivos .pem, .crt ou .cer);

  2. Apontar a variável para o arquivo (PowerShell):

    $env:NODE_EXTRA_CA_CERTS="C:\caminho\para\o\certificado.pem"
    
  3. Executar a instalação:

    playwright install
    

Alternativa 3 - Configurar proxy explícito

  1. Configurar a variável de proxy (PowerShell):

    $env:HTTPS_PROXY="http://seu-proxy-da-empresa:porta"
    
  2. Executar a instalação:

    playwright install
    

No Código Python

Mesmo com os navegadores instalados, o script também precisa ser configurado para não travar ao acessar sites dentro da rede corporativa:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False)
    context = browser.new_context(ignore_https_errors=True)
    page = context.new_page()
    page.goto("https://seu-site-interno.com")

Observações

Referências

  1. Documentação oficial do Playwright - Instalação de Navegadores;
  2. Documentação oficial do Node.js - Variável NODE_TLS_REJECT_UNAUTHORIZED;
  3. Documentação oficial do Node.js - Variável NODE_EXTRA_CA_CERTS.

#playwright #ssl #proxy #windows #automation

#automation #playwright #proxy #python #ssl #windows