- O servidor Gitea público
git.xeserv.us ficou instável por causa de requisições do AmazonBot, e o operador pediu à equipe do AmazonBot que incluísse o domínio na lista de bloqueio
- Embora
robots.txt tenha sido configurado com Disallow: / para todos os bots, as requisições continuaram chegando, criando uma situação em que talvez fosse necessário abandonar a própria operação de um servidor Git público
- Crawlers de IA dificultam o bloqueio ao trocar o user agent ou usar proxies de IP residencial
- No nginx ingress, foi feito um bloqueio para retornar
418 a user agents com Amazon, mas as requisições continuaram vindo de outros IPs, e cerca de 10% delas nem tinham o user agent amazonbot
- No fim, o servidor Gitea voltou a ficar atrás da VPN, e foi criado o
Anubis, um proxy reverso que faz uma verificação de prova de trabalho antes das requisições
Requisições do AmazonBot e os limites do robots.txt
- O operador pediu aos responsáveis pelo AmazonBot que adicionassem
git.xeserv.us à lista de domínios bloqueados
- Pediu também que entrassem em contato caso quisessem rastrear o servidor Git, para que ele pudesse pagar o custo de upgrade de hardware necessário para suportar o uso excessivo de recursos
- Um
robots.txt para bloquear todos os bots já havia sido configurado, mas isso não foi suficiente para bloquear as requisições na prática
User-agent: *
Disallow: /
- Também resumiu por que é difícil bloquear bots de crawlers de IA
- Os bots mentem
- Eles trocam o user agent
- Usam endereços IP residenciais como proxy
- Também usam outros métodos
Bloqueio no nginx ingress e lançamento do Anubis
- Em 2025-01-17 17:50 UTC, foi adicionado bloqueio por user agent na configuração do nginx ingress
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($http_user_agent ~* "(Amazon)" ){
return 418;
}
- Mesmo depois dessa configuração, o bot continuou fazendo requisições sempre de IPs diferentes, e cerca de 10% das requisições não tinham o user agent
amazonbot
- Em 2025-01-18 19:00 UTC, o servidor Gitea foi movido novamente para atrás da VPN
- Depois disso, começou a ser criado um proxy reverso que verifica uma prova de trabalho antes de permitir requisições na frente do servidor Gitea
- Em 2025-01-18 23:50 UTC, esse proxy passou a estar disponível com o nome
Anubis em https://git.xeserv.us/
- Em 2025-03-26 14:27 UTC, o
Anubis havia se tornado um projeto independente com um site de documentação
1 comentários
Opiniões no Hacker News
Agora é hora de enviar uma notificação extrajudicial em nome de um advogado. Pelas diretrizes de acusação da Computer Fraud and Abuse Act, o Departamento de Justiça dos EUA geralmente não considera acesso a servidores públicos que não seja um ataque evidente como “acesso não autorizado”, mas diz que, depois que o titular da autorização envia uma solicitação clara por escrito para parar e o réu a recebe e entende, a partir desse momento passa a ser não autorizado.
Então basta pedir a um advogado para redigir uma carta clara de “cease and desist” e entregá-la à Amazon do modo que ele recomendar, por carta registrada ou por um oficial de entrega de intimações. Provavelmente é melhor fazer os dois e também enviar por e-mail.
Depois é ver se a Amazon para; se não parar, dá para apresentar uma queixa criminal. Aí a Amazon vai passar a prestar atenção.
https://www.justice.gov/jm/jm-9-48000-computer-fraud
O bot da Amazon deveria vir de faixas de IP conhecidas da Amazon e obedecer ao robots.txt. Um engenheiro da Amazon também confirmou isso em outro comentário: https://news.ycombinator.com/item?id=42751729
Se a única coisa que bate com a Amazon é a string de user agent “AmazonBot”, mas as faixas de IP e o comportamento não batem, enviar uma carta de advogado para a Amazon é parecido com queimar dinheiro.
Gosto da solução deste comentário: https://news.ycombinator.com/item?id=42727510
É a ideia de colocar em algum lugar do site um link que uma pessoa jamais visitaria, bloqueá-lo no robots.txt e, se algum IP visitar esse link, bloqueá-lo por 24 horas. Como dizem que o crawler da OpenAI em especial ignora wildcards, dá para colocá-lo sob um wildcard.
Mas havia tantos IPs envolvidos que isso quase não afetava o tráfego.
Recomendo olhar os cabeçalhos recebidos com bastante detalhe. O varnishlog é bem bom para isso e, se você passar tempo suficiente analisando, pode encontrar características compartilhadas por todas as requisições. Por exemplo, combinações peculiares de idioma declarado e localização geográfica, ou a mesma versão antiga de navegador.
Pior ainda: havia um bug no tratador de erros, então, quando essa condição ocorria, o processo do servidor era reiniciado e, nesse processo, invalidava também uma implementação de cache que era “bem decente para os padrões do .NET 2.0”.
Por isso me lembro de termos começado a incluir uma técnica de canário como salvaguarda. Alguns canários simples ainda saíam mais barato do que adicionar outro servidor web. Claro, também corrigimos o problema do cache e adicionamos um modo de o serviço “gritar” quando recebesse requisições ruins demais.
Só que os crawlers dessas próprias empresas não conseguiam parsear os manifests que elas mesmas criaram.
Também estamos vendo o mesmo comportamento em todos os bots de AI e SEO, então recomendo. Eles obedecem ao robots.txt só no limite do aceitável e são difíceis de bloquear. Quando fazem crawling, chegam em ondas como spam, aumentam muito a carga e derrubam muitos servidores de clientes.
Se crawlers de AI querem acessar, precisam se comportar direito ou pagar. Caso contrário, o resultado será um bloqueio quase universal.
-j TARPITno iptables para IPs que faziam em média mais de X requisições por segundo para/api.Não sei bem como implementar isso na nuvem. Ainda não precisei disso lá.
https://gist.github.com/flaviovs/103a0dbf62c67ff371ff75fc62f...
Ou, no mínimo, que eles raspassem por educação durante a noite ou em horários de menor movimento.
Não vou presumir que isso seja realmente a Amazon. O autor está vendo requisições vindas de IPs residenciais em rotação e com a string de user agent também mudando.
Fingir ser o crawler de uma grande empresa é uma técnica comum usada por quem não quer chamar atenção. O fato de as requisições virem de IPs residenciais é um grande sinal de alerta de que há outra coisa acontecendo.
Pelo que consegui verificar internamente, é muito improvável que isso seja realmente a Amazon. O Amazonbot deve respeitar o robots.txt e sempre deve vir de endereços IP pertencentes à Amazon. O procedimento de verificação está aqui: https://developer.amazon.com/en/amazonbot
Encaminhei internamente para confirmar se existe algum time interno estranho que eu desconheça fazendo isso, mas o autor deveria tratar esse tráfego como malicioso e como alguém que falsifica o user agent.
[1] https://brightdata.com/proxy-types/residential-proxies
Passei pelo mesmo problema recentemente. Minha instância do Forgejo começou a usar 100% da CPU do meu servidor doméstico, porque Claude e os amigos de IA da Meta e do Google estavam martelando, em alta velocidade, links praticamente infinitos.
Consegui reduzir um pouco com robots.txt e uma lista de bloqueio por user agent no Caddy, mas não sei por quanto tempo isso vai funcionar.
Para onde foi a etiqueta do scraping?
O risco maior é uma dessas empresas, até mesmo uma que se diga “Open”, atingir um tamanho em que passe a ser “grande demais para falir” do ponto de vista econômico ou de segurança nacional.
O Facebook ficou famoso por facilitar a raspagem da lista de amigos do MySpace e, depois que cresceu, proibiu o mesmo comportamento no próprio site.
Pelo amor de Deus, precisamos acordar.
Tem certeza de que isso não é um DDoS se passando pela Amazon?
O fato de as requisições virem de IPs residenciais é realmente suspeito.
A motivação para um DDoS assim poderia ser derrubar sites pequenos e fazer parecer culpa da Amazon, mirando a própria Amazon.
Se for mesmo a Amazon, o ponto de partida é bloquear todos os intervalos de IP que ela publica. Mas parece que as requisições também vêm de fora desses intervalos.
Esses serviços pagam pela banda dos usuários e depois a revendem a terceiros, então muito tráfego de bots parece vir de IPs residenciais.
Meu site, o Pinboard, também está sendo bombardeado por algo que parece ser crawlers de IA. No começo do verão, vinha de IPs da China e de Singapura, mas agora nem consigo mais bloquear por faixa de IP e preciso depender de CAPTCHA.
O nível de tráfego é suficiente para matar o site imediatamente, e eu nem tenho textos interessantes para treinar, só links.
Fico curioso para saber como o autor do post original descobriu que o crawler da Amazon era o culpado. Eu também queria encontrar alguém a quem atribuir a culpa.
Talvez a melhor forma de lutar contra isso não seja bloquear. Bloquear não causa nenhum dano à Amazon nem a outras empresas.
E se, em vez disso, fosse possível alimentar os bots com conteúdo obviamente nocivo ou corruptor?
Se isso acontecesse em uma escala maior e a Amazon descobrisse os dados envenenados, teria de gastar dinheiro para removê-los rapidamente e tentaria impedir que os bots consumissem esse tipo de dado.
Claro que o maior problema é que ninguém quer manter esse tipo de coisa no próprio site.
Esses scrapers já consomem sem hesitar CSAM e coisas terríveis equivalentes. Alguns dos terceirizados de marcação de dados da OpenAI no Quênia pediram demissão por causa disso. É uma matéria da Time de 2023.
As empresas de IA hoje não se importam com qualidade dos dados, só com quantidade. A única maneira de prejudicá-las é entregar 0 byte.
Uma pessoa comum iria direto para a cadeia por um décimo do que Sam Altman aprovou.
https://zadzmo.org/code/nepenthes/
Seria bom se dessem alguns créditos da AWS como gesto de boa vontade para compensar o excesso de tráfego de saída gerado pela Amazon e por outros bots. Ainda assim, a receita de anúncios deste texto provavelmente deve cobrir isso. Se eu desativar o bloqueador de anúncios, a conta fecha.
Antes de bloquear via Nginx, o Bytespider respondia por 59% e o Amazonbot por 21%; juntos, eles representavam 80% de todo o tráfego do nosso servidor Git
Em um mês, o ClaudeBot enviou ao Redmine mais tráfego do que em todos os 5 anos anteriores à existência do ClaudeBot somados