Loading Light/Dark Toggle
Como definir um agente de usuário e verificar o cabeçalho de saída

Como definir um agente de usuário

Scrapeless Agent Browser fornece um navegador em nuvem para automação web com impressões digitais de navegador configuráveis.

Defina um user agent configurando o cabeçalho de requisição User-Agent no cliente HTTP ou as configurações de identidade de navegador compatíveis em um ambiente de navegador. Depois verifique o valor recebido pelo servidor. Um valor de configuração visível no seu código não é prova suficiente de que o cabeçalho pretendido chegou ao destino.

O campo User-Agent descreve o software que faz a requisição. Ele pode ajudar um serviço a identificar um cliente ou selecionar uma representação, mas não autentica o cliente e não reproduz um navegador inteiro. Uma configuração útil, portanto, inclui tanto um valor definido de forma deliberada quanto um entendimento claro do que a mudança pode afetar.

Resumo rápido

  • Defina o User-Agent por meio da interface de cabeçalhos suportada pelo cliente. Mantenha o valor explícito e apropriado para a aplicação.
  • Verifique o cabeçalho no servidor de recebimento. A configuração local e o comportamento na rede podem diferir.
  • Uma mudança de cabeçalho não muda o motor do navegador. Renderização, TLS e capacidades do dispositivo permanecem separadas.
  • Mantenha as configurações de identidade consistentes durante uma sessão. Um valor aleatório a cada requisição pode tornar as observações mais difíceis de interpretar.

O que significa uma string User-Agent?

Uma string User-Agent é uma descrição autodeclarada do software cliente, carregada em um campo de requisição HTTP. A definição do campo HTTP User-Agent descreve identificadores de produto e comentários opcionais. Servidores podem usar o valor para tratamento de compatibilidade, análise ou diagnóstico.

Strings de navegador frequentemente incluem tokens históricos de compatibilidade. Encontrar um nome de produto familiar dentro da string não prova que o motor correspondente está em execução. Um cliente pode escolher uma string diferente, e vários navegadores podem compartilhar partes da mesma sintaxe.

O modelo de cabeçalho User-Agent também reflete esforços dos navegadores para reduzir informações detalhadas de identidade. Evite projetar um coletor que dependa de cada pequena versão de sistema operacional ou navegador ser exposta no mesmo formato indefinidamente.

Para um verificador interno identificável, um nome de aplicação conciso e uma versão podem ser mais úteis do que copiar uma longa string de navegador. Use uma identidade que se encaixe na tarefa permitida. Não afirme ser um crawler de mecanismo de busca ou a aplicação de outra organização para obter acesso associado a essa identidade.

Antes de executar os exemplos

Os exemplos abaixo exigem curl ou Python com o pacote Requests, além de acesso de rede ao endpoint público de eco de cabeçalhos HTTP. Eles enviam uma única requisição GET e imprimem o valor observado por esse endpoint. Eles não precisam de uma conta Scrapeless, de um proxy ou de uma sessão de navegador.

CatalogAudit/1.0 é uma identidade de aplicação ilustrativa escolhida para esta demonstração. Substitua-a por uma identidade apropriada para a sua própria aplicação. O valor esperado é o valor que você envia deliberadamente, em vez de uma afirmação sobre qualquer versão de navegador.

Um serviço de eco é um destino de diagnóstico. Não envie cabeçalhos de autenticação, cookies ou URLs privadas para ele. Os exemplos apenas enviam o cabeçalho user-agent de demonstração, o que mantém a verificação focada no comportamento que está sendo ensinado.

Definir um User Agent no curl

curl define o campo User-Agent por meio da opção --user-agent, também disponível como -A. As opções de linha de comando do curl definem essa configuração separadamente da configuração de proxy e de outros cabeçalhos de requisição.

Execute esta única requisição para inspecionar o valor recebido pelo endpoint de eco:

curl --silent --show-error --fail --max-time 20 \
  --user-agent 'CatalogAudit/1.0' \
  'https://httpbin.org/user-agent'

A resposta contém um campo user-agent com o valor enviado pelo curl. O limite de tempo explícito delimita o tempo de vida da transferência do comando, enquanto --fail torna respostas de erro HTTP visíveis como falhas de comando. Este é um pequeno teste de cabeçalho, não um teste de um pipeline de coleta completo.

Coloque a string entre aspas para que espaços ou pontuação permaneçam parte de um único argumento do shell quando você usar uma identidade mais longa. Mantenha credenciais fora da string. Um user agent é metadado descritivo da requisição e pode aparecer em logs de servidor.

Definir um User Agent no Python Requests

Python Requests aceita cabeçalhos personalizados por meio de seu argumento headers. Defina o campo explicitamente na requisição e inspecione a resposta do endpoint de recebimento antes de aplicar a mesma configuração a um fluxo de trabalho maior.

Este exemplo completo faz uma requisição e valida que o valor em eco corresponde ao valor configurado:

import requests

user_agent = "CatalogAudit/1.0"
response = requests.get(
    "https://httpbin.org/user-agent",
    headers={"User-Agent": user_agent},
    timeout=20,
)
response.raise_for_status()
received = response.json()["user-agent"]
assert received == user_agent
print(received)

O timeout da requisição delimita a espera de rede de acordo com o comportamento de timeout do cliente; não é uma afirmação de que toda operação de negócio possível ao redor será concluída dentro desse período. A asserção verifica o comportamento específico que este exemplo ensina: o endpoint recebeu o valor de cabeçalho escolhido.

Para requisições relacionadas, uma Session do Requests pode manter cabeçalhos e cookies compartilhados. Decida se um cabeçalho pertence à sessão inteira ou apenas a uma requisição. Uma substituição em nível de requisição é útil para uma comparação controlada, mas mudanças acidentais dentro de uma sessão podem prejudicar a interpretação dos resultados.

Verificar a requisição de saída real

A verificação deve comparar o valor configurado com a observação de um servidor ou uma captura confiável da requisição de saída. Inspecionar apenas a variável no seu script não consegue detectar uma substituição posterior, um wrapper que constrói outra requisição ou um intermediário que altera cabeçalhos.

Em um navegador, o painel de rede pode mostrar os cabeçalhos de requisição para uma requisição individual. Selecione o documento real ou a requisição de API que está sendo investigada, porque o carregamento de uma página pode envolver muitas requisições separadas. Um valor mostrado para um recurso não estabelece o que todas as requisições na página usaram.

Mantenha redirecionamentos em mente. A URL original pode levar a outro destino, e configurações do cliente podem se aplicar de forma diferente ao longo dessa cadeia. Registre a URL final e inspecione a requisição que produziu o conteúdo que você está avaliando. Um cabeçalho correto na primeira requisição não prova que a representação final corresponde ao seu teste pretendido.

Se um resultado de eco for diferente do valor configurado, estreite o caminho. Verifique a configuração do cliente e quaisquer configurações de proxy fornecidas pelo ambiente. Compare a requisição simples com a requisição encapsulada da aplicação. Altere um fator por vez para que a observação identifique a causa.

Por Que Mudar o User-Agent Não Emula um Dispositivo

Mudar o User-Agent altera uma identidade declarada, enquanto a emulação de dispositivo pode envolver viewport, capacidades de entrada, APIs do navegador e comportamento de renderização. Uma biblioteca de rede de desktop que envia uma string com aparência móvel ainda não adquire o ambiente de execução de um navegador móvel.

As limitações da detecção por user-agent explicam por que a detecção de recursos é geralmente mais confiável para o comportamento de aplicações web. Um site pode inspecionar capacidades reais em vez de confiar em um token de produto em um cabeçalho.

Para um teste de layout móvel, defina as condições de viewport e interação necessárias, bem como a identidade declarada. Para um teste de negociação de conteúdo, foque nos cabeçalhos e na representação retornada. Estes são testes diferentes e não devem ser colapsados em uma única afirmação de que uma requisição veio de um celular real.

O comportamento de TLS também permanece separado. Um cliente HTTP em Python não adota a implementação de transporte de um navegador apenas porque declara o nome do navegador. Se a compatibilidade depende da pilha de rede ou da execução da página, examine essa camada diretamente em vez de alternar por strings de cabeçalho não relacionadas.

Como Client Hints Afetam Verificações de Identidade

User-agent client hints fornecem informações de identidade adicionais e estruturadas em navegadores que suportam o mecanismo. Um site pode usar esses hints juntamente com a string User-Agent. Mudar um campo pode deixar o ambiente declarado geral inconsistente.

Ferramentas de navegador e frameworks de automação diferem em quais valores seus controles de identidade atualizam. Use a superfície de configuração documentada para o navegador real e inspecione tanto propriedades de rede quanto propriedades visíveis na página quando relevante. Evite presumir que uma substituição apenas no cabeçalho também atualiza toda propriedade JavaScript.

Mantenha o escopo do teste explícito. Se a exigência é apenas verificar um cabeçalho HTTP, o exemplo de eco é suficiente. Se a exigência é validar uma configuração de identidade de navegador, inspecione o ambiente do navegador e o comportamento do destino como evidências separadas.

Usando Agent Browser para Trabalho em Nível de Navegador

Scrapeless Agent Browser é relevante quando a tarefa exige um navegador em nuvem em vez de apenas uma transferência HTTP. Sua configuração de fingerprint personalizada inclui User-Agent e outras configurações de identidade suportadas, com limites documentados.

Essas configurações não implicam controle irrestrito sobre cada característica de dispositivo. O recurso documentado não transforma uma sessão em nuvem em um hardware físico arbitrário. Combine a configuração suportada com a tarefa de compatibilidade ou coleta e inspecione as propriedades que importam para essa tarefa.

O relacionado guia de user-agent do Python Requests cobre o lado de cliente HTTP da distinção. Use Scrapeless pricing ao avaliar trabalho baseado em navegador, já que uma sessão de navegador tem um modelo operacional diferente de uma simples verificação de cabeçalho local.

Os exemplos neste artigo verificam a configuração de cabeçalhos local de curl e Requests. Eles não demonstram uma sessão autenticada do Agent Browser nem provam como um site de destino específico responderá a uma identidade de navegador personalizada.

Mantenha a Identidade da Sessão Estável e os Resultados Interpretáveis

Uma configuração de identidade estável torna uma sequência mais fácil de interpretar quando suas requisições pertencem a uma sessão. Mudar o user agent aleatoriamente entre operações relacionadas pode alterar a seleção de conteúdo do lado do servidor sem representar a jornada do usuário que o teste pretendia modelar.

Para uma comparação hipotética de compatibilidade, defina sessões separadas para os dois perfis de cliente pretendidos. Mantenha o recurso solicitado e outras condições controladas, depois compare a representação real. Registre diferenças em layout ou campos em vez de assumir que um cabeçalho alterado necessariamente muda a resposta.

Se o servidor retornar uma restrição de acesso, respeite esse limite. Uma configuração de user-agent é um controle de compatibilidade e identificação, não um mecanismo de autorização. Use o caminho de acesso suportado pelo serviço para a tarefa.

Conclusão

Defina o User-Agent por meio de uma opção suportada do cliente e verifique-o no receptor. Mantenha o papel do cabeçalho separado do comportamento de TLS, da renderização do navegador e das capacidades do dispositivo. Para tarefas em nível de navegador, use a configuração de navegador documentada e teste diretamente o ambiente resultante.

Configurar um Fluxo de Trabalho em Nível de Navegador

Use Agent Browser quando a tarefa exigir execução de página e configurações de identidade de navegador suportadas além de um único cabeçalho.

Cadastre-se hoje e receba $5 em crédito grátis — nenhum cartão de crédito necessário.

Resgate Seus $5 de Crédito →

FAQ

Definir User-Agent exige um proxy?

Definir User-Agent não exige um proxy. O cliente HTTP pode configurar o cabeçalho diretamente; um proxy controla uma parte separada da rota de rede.

Uma string de user-agent pode fazer o Requests executar JavaScript?

Uma string de user-agent não pode fazer o Requests executar JavaScript. Requests permanece um cliente HTTP independentemente da identidade de software declarada.

Como você pode confirmar que a configuração funcionou?

Confirme a configuração inspecionando o valor recebido por um endpoint controlado ou a requisição real de saída. Os exemplos usam um endpoint de eco e comparam sua resposta com o valor configurado.

O agente do usuário deve mudar a cada requisição?

O agente do usuário não deve mudar a cada requisição sem um motivo específico da tarefa. Requisições relacionadas normalmente precisam de uma identidade coerente, e comparações controladas devem usar perfis claramente separados.

Por que um servidor ainda pode identificar um cliente diferente?

Um servidor pode observar outros sinais, incluindo o comportamento de TLS, client hints, cookies e capacidades do navegador. User-Agent é apenas um campo declarado e não determina todas as propriedades observáveis.

Isso exige um agente de IA?

Os exemplos em curl e Python são executados sem um agente de IA. Eles são requisições de cliente comuns e podem ser usados diretamente para verificar uma configuração de cabeçalhos.

Referências