Destaques
Muitos sites entregam sua página inicial para qualquer um e bloqueiam tudo um clique depois. O Auto agora entra pela porta da frente: ele pega a sessão que a página de entrada fornece, e depois pede a página que você queria enquanto a carrega. O Browser ficou com o trabalho mais pesado nesta semana. Ele resolve o desafio de checkbox da Cloudflare quando várias requests atingem a mesma página de uma vez, e quando uma página continua fechada ele relata o que viu em vez de uma única palavra vazia.
Novidades
O Auto abre páginas que ficam atrás de uma sessão
Um anúncio do eBay recusa uma request fria em todas as rotas que temos. A mesma URL abre quando a request carrega o cookie jar que a própria página de entrada do eBay entrega a qualquer visitante. Sem login, sem conta emprestada, nada que você não pudesse fazer manualmente em uma aba.
O Auto faz isso por você agora. Quando um exit chega na origin e ainda é recusado na página profunda, o Auto busca a raiz do site através desse mesmo exit, guarda quaisquer cookies que retornam, e pede novamente. A response diz a você que isso aconteceu: o degrau vencedor mostra warmup.
Mas o custo é a parte interessante. Essa sessão volta portável, então o jar não fica soldado ao exit que o obteve. Leituras subsequentes repetem através do /api/proxy e chegam ao /api/single por 2 créditos. É a mesma cadeia de escalar-depois-repetir sobre a qual escrevemos para a liberação da Cloudflare, com os próprios cookies de sessão de um fornecedor substituindo o cf_clearance.
Limitado de propósito: duas tentativas por request, em exits diferentes, apenas depois que a URL profunda já falhou, e apenas quando o exit chegou na origin em primeiro lugar. Então um site que simplesmente nos bloqueia paga duas sub-chamadas extras uma vez, e não em um loop. Mais sobre como a escada escolhe seus degraus no artigo do Auto.
O Browser resolve desafios de checkbox quando as requests se sobrepõem
O Browser agora resolve o widget de checkbox da Cloudflare em requests simultâneas para a mesma página. Três ao mesmo tempo em um site de notícias atrás do Turnstile: 5.2s, 5.8s, 9.1s.
Duas mudanças menores acompanharam. Um clique só conta quando o widget realmente some, porque a Cloudflare reemite seu desafio com mais frequência do que você esperaria (o primeiro clique regularmente não é o fim da conversa). E uma página que é liberada relata defenseSolved: true na chamada que a liberou, que é a mesma chamada cobrada pela resolução.
Uma página bloqueada diz a você o que o solver viu
"Timeout" aponta você para a latência. Na maioria das vezes a latência não é o problema e a resposta está um exit adiante.
Quando a Cloudflare rejeita uma resolução ela reemite o desafio e solta seu próprio marcador de repetição no jar. O Browser lê esse marcador. Em vez de esperar o tempo acabar, ele responde em cerca de 17 segundos, nomeando o fornecedor, os cliques que fez e se a liberação foi concedida:
Timeout after 12s: the cloudflare challenge did not complete from this exit
(2 checkbox presses, clearance granted, challenge re-issued by the site)
Uma dessas linhas diz para você enviar a request de um jeito diferente. A outra não diz nada.
Erros da camada da API também são lidos de forma mais direta. Uma request que ultrapassa o tempo de espera retorna como timeout, um serviço inacessível retorna como indisponível, e nenhum dos dois é descrito como um problema de proxy quando a request não utilizava nenhum proxy. timeout_ms em uma chamada de Browser é respeitado em todos os 120 segundos que a API aceita, então um alvo lento recebe o orçamento que você definiu e você lê o veredito do próprio motor em vez do gateway. Os parâmetros estão listados na referência da API.
Detalhes de faturamento e correção de faturas no mês de emissão
Faturas búlgaras imprimem um representante da empresa (MOL) na caixa do destinatário. Nada no sistema coletava isso, então essa linha sempre saía vazia. Os detalhes de faturamento agora possuem esse campo.
A tabela Invoices também oferece a opção Update details em uma fatura que ainda está dentro do seu mês de emissão e cujos detalhes congelados diferem do seu perfil de faturamento atual. O diálogo lista cada campo alterado e para o que muda, diz de forma clara que o número, as datas e os valores continuam onde estão, e confirmar é o seu consentimento, registrado do nosso lado. Uma fatura na janela de tempo sem nada para mudar mostra "Editable until" e sua data, para que o prazo seja algo que você possa ver, em vez de descobrir mais tarde.
Por baixo dos panos
Todo script que o Dashboard executa é servido de nossa própria origem, e o login retorna você apenas para um caminho neste site.
Os rollouts do serviço de renderização ocorrem um servidor por vez, e cada servidor deve servir uma página real antes que o próximo seja modificado.
No portal de status, o endpoint de issues fornece itens abertos e resolvidos através de sua API pública, correspondendo ao que a página lista.
Uma recusa que se autoidentifica é uma chamada. Uma espera que termina em "Timeout" é um palpite sobre o que tentar em seguida, pago pelo mesmo preço. Erros são uma superfície do produto, e esta semana começamos a tratá-los como tal.