2 pontos por GN⁺ 2024-07-31 | 1 comentários | Compartilhar no WhatsApp
  • Do lado dos mantenedores do OpenStreetMap, surgiu uma ironia dirigida às empresas de IA: em vez de gerar carga com scraping às escondidas, que tal doar US$ 10 mil? Isso expõe os custos de acesso aos dados e a pressão sobre a infraestrutura
  • Houve também a sugestão de que, com uma doação de US$ 50 mil, seria possível até oferecer atualizações em streaming ao vivo por minuto recebidas diretamente do OpenStreetMap.org
  • O tráfego de scraping não é uma exceção rara; chega ao ponto de haver centenas de requisições por segundo em endpoints de API caros, vindas de vários IPs e com User-Agent falsificado
  • Já existem o conjunto completo de dados planet.osm, os diffs de mudanças e dados por continente, então usar os datasets oficiais é mais apropriado do que fazer scraping lento da web
  • Bloquear é difícil por causa da camuflagem de User-Agent e da troca de IP, mas bloquear grandes crawlers de IA e aplicar limites de taxa (rate limit) generosos pode reduzir o dano real

Proposta para doar em vez de raspar os dados do OpenStreetMap

  • Surgiu a mensagem de que empresas de IA não deveriam fazer scraping escondido do OpenStreetMap, mas sim doar US$ 10 mil
  • Também foi acrescentado que, com uma doação de US$ 50 mil, seria possível oferecer diretamente do OpenStreetMap.org atualizações em streaming ao vivo por minuto
  • Nos comentários, repetiu-se que os dados do OpenStreetMap já são fornecidos de formas mais adequadas
    • Existe o conjunto completo de dados planet.osm
    • Existem atualizações incrementais de mudanças
    • Também existem dados por continente
  • Continuaram as reações de que raspar o site diretamente é mais lento e ineficiente do que usar os dados completos já disponibilizados

A carga operacional gerada pelo tráfego de scraping

  • O scraping do OpenStreetMap não é visto como uma “combinação inédita”, mas como algo muito comum
    • Há casos em que endpoints caros de API recebem centenas de requisições por segundo
    • São usados vários IPs
    • O User-Agent é falsificado
  • O bloqueio baseado em User-Agent tem limitações claras
    • Usa-se o User-Agent padrão de bibliotecas como python-requests/2.26.0
    • Em alguns casos, há disfarce como navegador ou googlebot
    • O cumprimento de robots.txt é tratado como se fosse opcional
    • Quando há bloqueio, trocam o IP ou o User-Agent
  • Ainda assim, alguns crawlers de IA têm seu próprio User-Agent, o que permite identificar e bloquear grandes causadores de dano
    • Bytespyder é citado como exemplo
    • A ideia não é bloquear todos os IPs de mineração de dados do passado, mas sim impedir quem está causando prejuízo real
    • Se houver um limite de taxa bem generoso, apenas o tráfego em nível problemático acabaria sendo alvo da restrição

1 comentários

 
GN⁺ 2024-07-31
Opiniões no Hacker News
  • As empresas afetadas estão ficando cada vez mais irritadas com os exércitos de crawlers de IA. Esses crawlers não seguem boas práticas de scraping, como respeitar o robots.txt, usar APIs públicas e evitar horários de pico
    Não é apenas uma questão de direitos autorais: o tráfego excessivo de scraping também aumenta os custos de infraestrutura. Qual será o estado final? Como a IA já consegue até resolver CAPTCHAs, a corrida armamentista de defesa contra bots parece praticamente perdida

    • O objetivo não é tornar o scraping impossível, mas torná-lo caro. Pessoas não fazem requisições tão rápido quanto bots, então bots fingindo ser pessoas acabam esbarrando em limites de taxa
      No fim, passam a precisar de contas, essas contas também são rastreadas, e contas que se encaixam em certos padrões são excluídas. Não impede o scraping, mas o ponto central não é impedir: é torná-lo lento e caro. Em algum momento, quando for melhor pagar uma licença do que fingir ser humano, a corrida armamentista também desaparece
      A questão de se a defesa pode ficar boa o suficiente para tornar melhor nem entrar na briga é muito mais difícil do que saber se um bot aleatório consegue fingir ser humano e fazer algumas requisições
    • No fim, acho que chegaremos a um ponto em que coisas como acesso a API serão baseadas em lista de permissão. Para verificar que você não é um bot, talvez seja preciso criar uma relação real com uma pessoa real da empresa
      Como todas as outras formas podem ser falsificadas, isso pode até incluir reuniões presenciais. No fim, é como voltar ao mundo dos negócios dos anos 1960. Graças aos tecnólogos que puxaram o tapete debaixo dos pés de todo mundo
    • Não sei se as IAs têm o objetivo final em mente. Do lado humano, acho que teremos uma internet adaptada à floresta escura
      Não vamos mais presumir que a maior parte é boa e que basta rastrear e bloquear as partes maliciosas. Em vez disso, vamos presumir que só são boas as partes aprovadas por um grupo de pares em quem confiamos explicitamente, e que todo o resto é malicioso. Se a confiança causar dano, cortamos essa relação de confiança e encontramos formas de incentivar uma higiene de confiança que funcione
      Comparando com a internet atual, o primeiro pensamento é: “isso não vai escalar para o planeta inteiro”. Mas não precisa. Os problemas que computadores precisam resolver são, de qualquer forma, todos problemas locais
    • A resposta são interações baseadas em API com autenticação
      Sites antigos tinham internamente sua própria API, que entregava conteúdo livremente para qualquer um que fizesse a requisição. Agora os sites devem se tornar interfaces simples para usuários que se comunicam com APIs externas, e a responsabilidade pelo acesso à API deve ser do usuário
      Informações que valem a pena levar precisam ficar trancadas atrás de autenticação. Com OAuth por grandes provedores, autenticar ficou absurdamente fácil
      Quem pretende pagar pessoas ou serviços pagos para extrair conteúdo deveria, em vez disso, usar uma API bem empacotada e com preço razoável
      Por fim, o robots.txt deveria ser imposto por lei. Não há diferença entre roubar produtos de uma loja e roubar conteúdo de um site
      A IA e a ganância mataram a liberdade aberta da internet
    • Acho que vão surgir ilhas de autenticação somente por convite, baseadas em confiança. Parece o resultado final da centralização indiscriminada da internet
  • Sou presidente da OpenStreetMap Foundation
    Os dados do OpenStreetMap são oferecidos em massa e gratuitamente em https://planet.openstreetmap.org. Recomendamos usar isso em vez de fazer scraping do site
    O scraping gera uma grande carga sobre recursos doados. Bloqueamos IPs de scraping, mas até isso exige trabalho e tempo
    Respeitar nosso tempo e nossos recursos ajuda a manter o serviço gratuito e acessível para todos

    • Fico curioso sobre como exatamente vocês bloqueiam IPs de scraping. Alguns scrapers parecem simplesmente confusos e não sabem que há formas melhores de obter dados do OSM
      Responder com código de erro 403 só fará com que troquem de endereço IP
      Uma abordagem mais eficaz poderia ser fornecer uma resposta com orientação sobre onde baixar em massa ou links para guias de processamento dos dumps do OSM
  • Dá literalmente para colocar uma instância do OpenStreetMap no ar por conta própria em 10 minutos. Basta um simples comando docker run
    Claro que a indexação vai levar algum tempo, mas considerando os recursos deles, não deveria demorar muito. Isso é simplesmente ganância absurda

    • Há algum tempo, por curiosidade, usei o Headway por bem pouco tempo. É uma das opções baseadas em Docker mais fáceis para a “stack completa”
      Mas não funcionou de primeira e deu problema. Não surpreende, já que há muitas partes móveis. Contornar isso talvez não seja um grande problema, mas a afirmação de que bastam 10 minutos para deixar tudo funcionando de forma estável é muito suspeita
    • Não, é bem doloroso
    • Preciso de um link. Da última vez que tentei, era muito mais complicado
  • Em certo momento eu precisei de dados do OSM, mas nunca consegui descobrir qual era o jeito certo
    Para obter os dados necessários, era preciso baixar um arquivo gigantesco de 100 GB em um formato obscuro e usar bibliotecas desconhecidas. As informações ficam espalhadas e até há uma API HTTP, mas ela tem restrições ou limites de taxa, e não ficava claro se eu podia usá-la
    Entendo que a ignorância era minha e agradeço que o projeto exista, mas, pelos padrões de uma época em que desenvolvedores esperam APIs fluidas, a usabilidade não é boa
    No fim, usei um projeto gratuito que fornecia dados do OSM já pré-convertidos para o formato de que eu precisava

    • Até certo ponto, isso é uma decisão de design intencional. Para oferecer uma API fluida, é preciso um modelo de financiamento para contratar equipe operacional que hospede e mantenha essa API
      A OSM Foundation se mantém deliberadamente pequena e não faz esse tipo de coisa. Em vez disso, incentiva um ecossistema descentralizado no qual qualquer um pode pegar os dados e criar serviços em cima deles. Há usos comerciais e amadores, opções pagas e gratuitas
      Esse modelo funciona muito bem e, pessoalmente, acho melhor do que a abordagem maximalista centrada no grande orçamento da Wikimedia Foundation
    • Se você está falando dos dumps de dados em formato protobuf, que são relativamente recentes, trata-se de um formato binário altamente otimizado
      O OrganicMaps usa esses arquivos diretamente para armazenar e consultar países inteiros localmente. Nesse formato, no momento em que escrevo, o dump da França tem apenas 4,3 GB
      Além disso, em vez de baixar o mapa inteiro, você pode usar um dos muitos mirrors, como o Geofabrik, para obter só a área de interesse
      [0] https://download.geofabrik.de/
    • Fico curioso para saber que formato ou biblioteca menos desconhecidos você sugeriria para dados geográficos em escala planetária
      Eu também já baixei o planet.osm no passado e o parseei no desktop, provavelmente com osmosis. Nunca usei aquele formato ou ferramenta em outros lugares, mas também não há muitos concorrentes que disponibilizem livremente grandes volumes de dados geoespaciais como o OSM. Fico curioso para saber o que, nesse caso, poderia ser considerado uma prática estabelecida
    • Em https://www.openstreetmap.org/, basta clicar em “Export” no canto superior esquerdo. Você pode escolher uma pequena área retangular e clicar em “Manually select a different area”
      Dá para baixar um arquivo .osm diretamente pelo navegador
      Se você precisa literalmente de um único ponto, há o “Query features”, que é a seta com um ponto de interrogação entre os ícones do mapa à direita. Com isso, você pode clicar em elementos individuais do mapa e obter os dados
    • Usar um projeto gratuito que fornece dados do OSM já pré-convertidos para o formato necessário parece suficientemente próximo do “jeito certo”
      Os desenvolvedores centrais do OSM podem se concentrar em fazer o frontend existente do OSM fornecer dados em um formato otimizado. Se você precisa de algo convertido para outros formatos populares, é bom que já exista no ecossistema um projeto que faça isso de graça
  • Sou o autor do post original. Aquele toot foi uma reação sarcástica depois de aplicarmos limites de taxa e bloqueios a mais um conjunto de scrapers maliciosos que estavam atacando agressivamente o site e a API de mapas. O robots.txt foi ignorado
    Os dados do OpenStreetMap podem ser baixados gratuitamente. Nós os publicamos a cada minuto em https://planet.openstreetmap.org/ e também disponibilizamos os dados via AWS S3 e torrent
    Se você está começando agora, é melhor começar por extrações regionais menores: https://wiki.openstreetmap.org/wiki/Planet.osm

  • Simplesmente clonar meu repositório compactado levaria poucos segundos, mas os scrapers de IA preferem solicitar, uma por uma, todas as revisões de todos os arquivos .c pela interface web
    Eles trazem junto até todos os recursos decorativos que não servem para nada para eles
    Como configurei essa interface web em cgi, a raspagem vai levar mais tempo do que a idade do universo para terminar. Enquanto isso, porém, desperdiça minha energia elétrica e meus recursos

  • Como alguém apontou recentemente, Aaron Swartz foi ameaçado de prisão por causa de scraping. E agora centenas de bilhões de dólares estão sendo investidos em grandes modelos de linguagem de IA criados por scraping

    • Porque as megacorporações podem raspar você, mas você não pode raspar as megacorporações
    • Por que ir até grandes modelos de linguagem de IA? Raspar e indexar é tudo o que a Busca Google faz
    • Regras para os outros, exceção para mim. Sempre foi assim
    • Aaron não tinha os exércitos de advogados que as megacorporações têm
      Ele pegou artigos acadêmicos e os tornou públicos, o que era uma violação clara de direitos autorais
      Grandes modelos de linguagem estão em uma zona cinzenta quanto a serem obras derivadas, não cópias literais do texto original
      As decisões também variaram de juiz para juiz
    • Ele não raspou material que estava atrás de um paywall?
  • É só colocar o planet.osm em torrent. A “raspagem” deveria ser permitida apenas via torrent
    Assim, os scrapers dividiriam a carga de rede entre si. Provavelmente todos estão na mesma instância da AWS, então a velocidade da rede também deve melhorar

    • Nossos dados já são publicados via torrent: https://planet.openstreetmap.org
      Os dados, incluindo atualizações minuto a minuto, também são disponibilizados em buckets S3 públicos (UE e EUA) apoiados pelo AWS Open Data Sponsorship Program
  • Certa vez, em uma entrevista técnica, o entrevistador pediu que eu projetasse um sistema para raspar a Wikipedia em inglês todos os dias. Eu disse: “Vamos começar baixando o arquivo compactado em gzip”
    Descobriu-se que o entrevistador não conhecia essa possibilidade e esperava a descrição de um sistema complexo que baixasse página por página, com multithreading, URLs canônicas, verificação de páginas visitadas, retentativas etc.
    Mesmo assim, ele deu A para a tarefa, e acabei sendo aprovado naquela empresa

  • Que tal um honeypot para empresas de IA? Seria criar um loop infinito de conteúdo gerado de forma idiota
    Imagine posts do Twitter com tuítes artificiais anexados no final

    • Aí, de repente, o OpenStreetMap deixaria de ser tão open assim. Como a OpenAI, haha