
Um proxy HTTP furtivo de próxima geração que camufla perfeitamente as requisições como o navegador Chrome em todas as camadas da pilha.
"Eu não acredito, camuflagem termo-óptica!"
Este é um proxy HTTP projetado para contornar serviços que usam fingerprinting como JA4+ para bloquear determinados clientes HTTP. Usando este proxy, você pode usar seus clientes HTTP preferidos como curl e ainda ter fingerprints magicamente indistinguíveis de um navegador web real (Chrome/Chromium). O thermoptic também vem com alguns recursos divertidos para mitigar fingerprinting baseado em JavaScript. Ele também facilita a realização de scraping híbrido usando tanto um navegador web quanto clientes HTTP de baixo nível em conjunto.
Mesmo que você não esteja familiarizado com fingerprinting JA4+, se você já fez algum scraping provavelmente já foi bloqueado por ele antes. Serviços populares como o Cloudflare usam tais técnicas (e outros truques) para detectar o uso de clientes HTTP "não-humanos" para bloquear requisições. Esses serviços também podem usar esse fingerprinting para detectar se você inicia uma sessão com um navegador real e depois muda para um cliente de baixo nível como curl mais tarde. O thermoptic resolve todos esses problemas apresentando um fingerprint de navegador "real" unificado para todas as requisições de scraping.
Aqui está um exemplo de fingerprint JA4H (HTTP) do curl sem o proxy:
$ curl https://ja4db.com/id/ja4h/
ge11nn090000_b6a016211e8a_000000000000_e3b0c44298fc
Isso é bastante diferente da impressão digital que o Chrome produz quando você visita a URL diretamente:
ge11cn19enus_f2808f0d04cf_9a10d4221160_7068f58def6e
No entanto, quando usamos o proxy para fazer a requisição, nossa impressão digital JA4H é magicamente idêntica:
$ curl --proxy http://thermoptic:1234 https://ja4db.com/id/ja4h/
ge11cn19enus_f2808f0d04cf_9a10d4221160_7068f58def6e
(O mesmo vale para a nossa impressão digital JA4 TLS, etc).
Para iniciar um proxy thermoptic que oculta o seu tráfego através de uma instância do Chrome em contentor no Ubuntu 22.04:
Configuração regular do Docker (funciona em hosts sem um runtime de GPU):
docker compose up --build
É isso, agora você pode fazer proxy de tráfego através dele:
curl --proxy http://127.0.0.1:1234 --insecure https://ja4db.com/id/ja4h/
Notas importantes:
PROXY_USERNAME e PROXY_PASSWORD.---insecure, você precisa usar o arquivo CA gerado localizado em ./ssl/rootCA.crt. Este é gerado na primeira vez que você executa thermoptic.thermoptic a qualquer instância do Chrome/Chromium iniciada com a flag --remote-debugging-port. Isso é essencial, pois você vai querer configurar e fazer proxy através de ambientes mais comumente usados para manter sua impressão digital o mais discreta possível (por exemplo, Chrome no Windows)./dev/dri e permite que o contêiner Chrome incluído mude para o caminho de renderização NVIDIA/Vulkan. Para usar isso, execute docker compose -f docker-compose.yml -f docker-compose.gpu.yml up --build.curl, requests, etc) com o thermoptic, basta definir o proxy e suas impressões digitais são cuidadas../hooks/onstart.js.http://127.0.0.1:14111) para controlar a janela do navegador Chrome em Docker. Útil para fazer login manualmente em sites e então usar perfeitamente o proxy para fazer requisições como sua sessão logada (e para depuração).UPSTREAM_PROXY no docker-compose.yml.
curl com o thermoptic definido como proxy.thermoptic analisa a requisição para determinar da melhor forma que tipo de requisição de navegador ela deveria ser (por exemplo, visita manual a URL? Envio de formulário? Uma requisição fetch()?).thermoptic usa o Chrome Debugging Protocol (CDP) para controlar o navegador e configurar uma página que simula a requisição exatamente como ela normalmente ocorreria em um navegador web real.thermoptic dispara a requisição através do contexto simulado e captura a resposta HTTP.thermoptic envia a resposta HTTP de volta ao cliente.Devido ao fato de que o navegador está realmente fazendo a requisição usando sua stack completa, as impressões digitais JA4 resultantes são idênticas.
NOTA: Devido a muitos WAFs empregarem fingerprinting em nível de JavaScript de navegadores web, o thermoptic também expõe hooks para utilizar o navegador em etapas-chave do processo de scraping. Veja esta seção para mais informações sobre isso.
Para ser direto: outras abordagens têm falhas fundamentais que as impedem de ser uma solução prática de longo prazo para o problema de fingerprinting de navegador.
Muitas outras tentativas de "vencer" o fingerprinting JA4+ de navegadores o fazem reimplementando as várias camadas da stack do navegador. Esta abordagem tem uma série de desvantagens sérias, tais como: