Como é que previno a raspagem do local? [fechado]

Tenho um grande site de música com uma grande base de dados de artistas. Eu tenho notado outros sites de música raspando os dados do nosso site (eu digito nomes de artistas fictícios aqui e ali e, em seguida, fazer pesquisas google para eles).

Como posso evitar raspagens de ecrã? É possível?

Author: Paul Sweatte, 2010-07-02

26 answers

Nota: Uma vez que a versão completa desta resposta excede o limite de comprimento do Stack Overflow, terá de head to GitHub para ler a versão estendida, com mais dicas e detalhes.


, a fim de dificultar a raspagem (também conhecido como Webscraping, Screenscraping, Web de mineração de dados, Web colheita, ou Web extração de dados), ele ajuda a saber como estes raspadores de trabalho, e , por extensão, o que os impede de trabalhar bem.

Há vários tipos de raspadores, e cada um trabalha de forma diferente.
  • Spiders, such as Google's bot or website copiers like HTtrack, which recursively follow links to other pages in order to get data. Estas são algumas vezes usadas para raspagem direcionada para obter dados específicos, muitas vezes em combinação com um analisador HTML para extrair os dados desejados de cada página.

  • Programas de consola: às vezes, ferramentas UNIX comuns são usadas para raspar: wget ou Curl para baixar páginas, e Grep (Regex) para extrair os dados.

  • Parsers HTML, tais como aqueles baseados em Jsoup, Scrapy, e outros. Semelhante aos baseados no regex de script shell, estes funcionam extraindo dados de páginas baseadas em padrões em HTML, normalmente ignorando tudo o resto.

    Por exemplo: se o seu site tem um recurso de pesquisa, tal raspador pode enviar um pedido para uma pesquisa, e, em seguida, obter todo o links de resultados e seus títulos a partir da página de resultados HTML, a fim de obter especificamente apenas links de resultados de pesquisa e seus títulos. Estes são os mais comuns.

  • Screenscrapers, baseado em eg. selénio ou PhantomJS , que abrem o seu site num navegador real, executam JavaScript, AJAX, e assim por diante, e depois obtêm o texto desejado na página web, normalmente por:

    • Obter o HTML do navegador após a sua Página ter sido carregada e JavaScript foi executado, e então usando um analisador HTML para extrair os dados desejados. Estes são os mais comuns, e muitos dos métodos para quebrar parsers / scrapers HTML também funcionam aqui.

    • Fazendo uma imagem das páginas renderizadas, e então usando OCR para extrair o texto desejado da imagem. Estes são raros, e apenas raspadores dedicados que realmente querem seus dados irá configurar isso.

  • Serviços de Webscraping tais como: raspagem ou quimono. Na verdade, há pessoas cujo trabalho é descobrir como raspar o seu site e retirar o conteúdo para outros para usar. Sem surpresa, os Serviços de raspagem profissional são os mais difíceis de deter, mas se você tornar difícil e demorado descobrir como raspar o seu site, estes (e as pessoas que os pagam para fazê-lo) podem não se dar ao trabalho de raspar o seu site.
  • Incorporar o seu site nas páginas de outro site com frames , e incorporar o seu site em aplicações móveis.

    Apesar de tecnicamente não raspar, os aplicativos móveis (Android e iOS) podem incorporar websites, e injetar CSS personalizado e JavaScript, alterando assim completamente a aparência das suas páginas.

  • Copy - paste humano: as pessoas irão copiar e colar o seu conteúdo, a fim de usá-lo em outro lugar.

Há muita sobreposição entre estes diferentes tipos de raspadores, e muitos raspadores Irão comportar-se da mesma forma., mesmo que utilizem tecnologias e métodos diferentes. Estas dicas são principalmente as minhas próprias ideias, várias dificuldades que eu encontrei enquanto escrevia raspadores, bem como pedaços de informação e ideias em torno das interwebs.

Como parar de raspar

Não podes evitá-lo completamente, já que o que quer que faças, os raspadores determinados ainda conseguem descobrir como raspar. No entanto, você pode parar de raspar fazendo algumas coisas:

Monitoriza a tua regista os padrões de tráfego; limita o acesso se vir actividade invulgar:

Verifique os seus registos regularmente, e em caso de actividade invulgar indicativa de acesso automatizado (raspadores), como muitas acções semelhantes do mesmo endereço IP, pode bloquear ou limitar o acesso.

Especificamente, algumas ideias:
  • Limitação da taxa:

    Só permite aos utilizadores (e raspadores) realizar um número limitado de acções num determinado período de tempo - por exemplo, permitir apenas alguns procura por segundo em qualquer endereço IP ou utilizador específico. Isto vai atrasar os raspadores e torná-los ineficazes. Você também poderia mostrar um captcha se as ações são concluídas muito rápido ou mais rápido do que um usuário real faria.

  • Detectar uma actividade invulgar:

    Se você ver uma atividade incomum, como muitos pedidos similares de um endereço IP específico, alguém olhando para um número excessivo de páginas ou realizando um número incomum de pesquisas, você pode impedir o acesso, ou mostrar um captcha para pedidos subsequentes.
  • Não basta monitorar & limite de taxa pelo endereço IP-use outros indicadores também:

    Se você faz bloqueio ou limite de taxa, não basta fazê-lo por endereço IP; você pode usar outros indicadores e métodos para identificar usuários específicos ou raspadores. Alguns indicadores que podem ajudá-lo a identificar utilizadores / raspadores específicos incluem:

    • Quanto rápido os usuários preenchem formulários, e onde em um botão eles carregue;

    • Você pode reunir muitas informações com JavaScript, como tamanho / resolução do ecrã, Fuso-horário, fontes instaladas, etc; Você pode usar isso para identificar os usuários.

    • Cabeçalhos HTTP e sua ordem, especialmente User-Agent.

    Como exemplo, se você receber muitos pedidos de um único endereço IP, todos usando o Mesmo agente de usuário, Tamanho de tela (determinado com JavaScript), e o usuário (scraper neste caso) sempre clica no botão no da mesma forma e em intervalos regulares, é provavelmente um raspador de tela; e você pode temporariamente bloquear pedidos semelhantes (eg. bloqueie todos os pedidos com esse agente de usuário e tamanho de tela vindo desse endereço IP em particular), e desta forma você não vai incomodar os usuários reais nesse endereço IP, por exemplo. no caso de uma ligação à internet partilhada.

    Você também pode levar isso mais longe, como você pode identificar pedidos semelhantes, mesmo que eles vêm de diferentes endereços IP, indicativo de raspagem distribuída (um raspador usando uma botnet ou uma rede de proxies). Se você receber muitos pedidos idênticos, mas eles vêm de endereços IP diferentes, você pode bloquear. Mais uma vez, tenha em atenção que não bloqueia inadvertidamente os utilizadores reais.

    Isso pode ser eficaz contra os screenscrapers que executam JavaScript, como você pode obter um monte de informações deles.

    Questões relacionadas com a bolsa de Segurança:

  • Em vez de bloquear temporariamente o acesso, use a Captcha:

    A forma simples de implementar a limitação da taxa seria bloquear temporariamente o acesso por um determinado período de tempo, no entanto usando um Captcha pode ser melhor, veja a secção Sobre Captchas mais adiante ate.

Necessita de registo e autenticação

Necessita de criação de conta a fim de ver o seu conteúdo, se isso for viável para o seu site. Este é um bom dissuasor para raspadores, mas também é um bom dissuasor para os usuários reais.

  • Se necessitar de criação e autenticação de contas, poderá seguir com precisão as acções do utilizador e do raspador. Desta forma, você pode facilmente detectar quando uma conta específica está sendo usada para raspar, e bani-la. Coisas como limitação de taxa ou detectar abuso (como um grande número de buscas em um curto espaço de tempo) torna-se mais fácil, já que você pode identificar raspadores específicos em vez de apenas endereços IP.

A fim de evitar scripts criando muitas contas, você deve:

  • Exigir um endereço de E-mail para o registro, e verificar esse endereço de E-mail, enviando um link que deve ser aberto, a fim de ativar a conta. Permitir apenas uma conta por endereço de E-mail.

  • Exigir que a captcha seja resolvido durante a criação do registo / conta.

Se necessitar de criação de conta para ver o conteúdo irá afastar os utilizadores e os motores de busca; se necessitar de criação de conta para ver um artigo, os utilizadores irão para outro lado.

Acesso em bloco a partir dos endereços IP do serviço de alojamento em nuvem e Eliminação de resíduos

Às vezes, raspadores serão executados a partir de serviços de Web hosting, tais como Amazon Web Services ou GAE, ou VPSes. Limitar o acesso ao seu site (ou mostrar um captcha) para pedidos provenientes dos endereços IP utilizados por esses serviços de hospedagem em nuvem.

Da mesma forma, você também pode limitar o acesso a partir de endereços IP usados por proxy ou provedores de VPN, como raspadores podem usar tais servidores proxy para evitar que muitos pedidos sejam detectados.

Tenha cuidado que ao bloquear o acesso de Servidores proxy e VPNs, irá afectar negativamente os utilizadores reais.

Faça a sua mensagem de erro indescritível se fizer o bloco

Se você fizer bloqueio / limite de acesso, você deve certifique-se de não dizer ao raspador o que causou o bloco, dando-lhes assim pistas sobre como consertar o raspador. Então uma má ideia seria mostrar páginas de erro com texto como:

  • Demasiados pedidos do seu endereço IP, por favor tente novamente mais tarde.

  • Erro, o cabeçalho do agente de Utilizador não está presente !

Em vez disso, mostre uma mensagem de erro amigável que não diga ao raspador o que a causou. Algo assim é muito melhor:
    Desculpa, algo correu mal. Você pode contatar o suporte via [email protected], caso o problema persista.

Isto também é muito mais fácil de usar para os usuários reais, caso eles alguma vez vejam tal página de erro. Você também deve considerar mostrar um captcha para pedidos subsequentes em vez de um bloco duro, no caso de um usuário real ver a mensagem de erro, de modo que você não bloquear e, assim, fazer os usuários legítimos para contatá-lo.

Utilize Captchas se suspeitar que o seu o site está sendo acessado por um raspador.

Captchas ("teste completamente automatizado para distinguir computadores e humanos") são muito eficazes contra raspadores de paragem. Infelizmente, eles também são muito eficazes em usuários irritantes.

Como tal, eles são úteis quando você suspeita de um possível raspador, e quer parar a raspagem, sem também bloquear o acesso no caso de não ser um raspador, mas um usuário real. Você pode querer considerar mostrar um captcha antes de permitir o acesso ao contente se suspeitar de um raspador.

Coisas a ter em atenção ao usar Captchas:

  • Não role a sua própria, usar algo como o Google reCaptcha : É muito mais fácil do que a implementação de um captcha-se, é mais user-friendly do que algumas borradas e deformado texto solução que você pode vir até com você mesmo (muitas vezes, os usuários só precisam de marcar uma caixa), e é também muito mais difícil para um scripter para resolver do que uma simples imagem servido do seu local

  • Não inclua a solução para o captcha na marcação HTML: na verdade, eu vi um site que tinha a solução para o captcha na página em si, (embora bem escondido), tornando-o bastante inútil. Não faças uma coisa destas. Novamente, use um serviço como reCaptcha, e você não terá este tipo de problema (se você usá-lo corretamente).

  • Os Captchas podem ser resolvidos a granel: existem serviços de resolução de captcha onde os, mal pagos, os humanos resolvem captchas a granel. Mais uma vez, usar reCaptcha é uma boa idéia aqui, pois eles têm proteções (como o tempo relativamente curto que o usuário tem para resolver o captcha). Este tipo de serviço é improvável de ser usado a menos que seus dados são realmente valiosos.

Serve o teu conteúdo de texto como uma imagem

Você pode renderizar o texto em um servidor de imagem, e serve isso para ser exibido, o que irá impedir raspadores simples de extrair texto.

, isso é ruim para leitores de tela, motores de busca, desempenho, e praticamente tudo o resto. Também é ilegal em alguns lugares (devido à acessibilidade, por exemplo. The Americans with Disabilities Act), and it's also easy to Burling with some OCR, so don't do it.

Você pode fazer algo semelhante com sprites CSS, mas que sofre dos mesmos problemas.

Não exponha o seu conjunto de dados completo.

Se possível, não providencie uma forma de um script / bot obter todo o seu conjunto. Como exemplo: você tem um site de notícias, com muitos artigos individuais. Você poderia tornar esses artigos apenas acessíveis através da pesquisa no site, e, se você não tiver uma lista de todos Os artigos no site e seus URLs em qualquer lugar, esses artigos só serão acessíveis usando a funcionalidade de pesquisa. Isto significa que um script que quer obter todos os artigos fora do seu site terá que fazer pesquisas para todas as frases possíveis que podem aparecer em seus artigos a fim de encontrá-los todos, o que será demorado, horrivelmente ineficiente, e espero que faça o raspador desistir.

Isto será ineficaz se:

  • o bot / script não quer / precisa do conjunto de dados completo de qualquer forma.
  • os seus artigos são servidos a partir de uma URL que se parece com example.com/article.php?articleId=12345. Isto (e coisas semelhantes) que permitirá aos raspadores simplesmente iterar sobre todos os articleIde pedir todos os artigos dessa forma.
  • Há outras formas de eventualmente encontrar todos os artigos, como escrevendo um script para seguir links dentro de artigos que levam a outros artigos. À procura de algo como" e "ou" o " pode revelar quase tudo, por isso é algo para estar ciente. (Você pode evitar isso, retornando apenas os 10 melhores ou 20 resultados). Precisas de motores de busca para encontrar o teu conteúdo.
Não exponha suas APIs, endpoints e coisas similares. Certifica-te que não expões nenhuma APIs., mesmo sem querer. Por exemplo, se você está usando AJAX ou pedidos de rede dentro do Adobe Flash ou Applets Java (Deus nos livre!) para carregar seus dados é trivial olhar para os pedidos de rede a partir da página e descobrir para onde esses pedidos vão, e, em seguida, reverter engenharia e usar esses pontos finais em um programa scraper. Certifique-se de ofuscar os seus endpoints e torná-los difíceis de usar pelos outros, como descrito.

Para dissuadir os resíduos e raspadores de HTML:

Desde HTML os parsers trabalham extraindo conteúdo de páginas com base em padrões identificáveis no HTML, nós podemos intencionalmente mudar esses padrões em oder para quebrar esses raspadores, ou até mesmo ferrar com eles. A maioria destas pontas também se aplica a outros raspadores como aranhas e screenscrapers também.

Muda frequentemente o teu HTML

Raspadores que processam HTML directamente fazem-no extraindo conteúdos de partes específicas e identificáveis da sua página HTML. Por exemplo: se todas as páginas do seu site têm um div o id article-content, que contém o texto do artigo, então é trivial escrever um script para visitar todas as páginas no seu site, e extrair o conteúdo de texto do article-content div em cada página de artigo, e voilà, o raspador tem todos os artigos do seu site em um formato que possa ser reutilizado em outros lugares.

Se mudar o HTML e a estrutura das suas páginas com frequência, esses raspadores deixarão de funcionar.

  • Você pode frequentemente alterar os id's e classes de elementos em seu HTML, talvez até automaticamente. Então, se o seu div.article-content se tornar algo como div.a4c36dda13eaf0, e mudar a cada semana, o raspador vai funcionar bem inicialmente, mas vai quebrar após uma semana. Certifique-se de alterar o comprimento das suas ids / classes também, caso contrário o raspador irá usar div.[any-14-characters] para encontrar o div desejado em vez disso. Cuidado com outros buracos semelhantes também..

  • Se não houver maneira de encontrar o conteúdo desejado a partir da marcação, o raspador irá fazê-lo a partir da forma como o HTML é estruturado. Então, se todas as suas páginas de artigos são semelhantes em que cada div dentro de um div que vem depois de um h1 é o conteúdo do artigo, raspadores obterá o conteúdo do artigo com base nisso. Mais uma vez, para quebrar isso, você pode adicionar / remover marcação extra para o seu HTML, periodicamente e aleatoriamente, por exemplo. adicionando extra div S ou span S. Com o processamento HTML moderno do lado do servidor, isto não deve ser muito difícil.

Coisas a ter em conta:

  • Será entediante. e difícil de implementar, manter e depurar.

  • Você vai dificultar a cache. Especialmente se você alterar ids ou classes de seus elementos HTML, isto irá requerer alterações correspondentes em seus arquivos CSS e JavaScript, o que significa que cada vez que você alterá-los, eles terão que ser re-baixado pelo navegador. Isso resultará em tempos de carga de página mais longos para visitantes repetidos, e aumento da carga do servidor. Se você só mudar uma vez por semana, não será um grande problema.

  • Scrapers inteligentes ainda será capaz de obter o seu conteúdo, inferring onde o conteúdo real é, por exemplo. sabendo que um grande bloco de texto na página é provável que seja o artigo real. Isso torna possível ainda encontrar e extrair os dados desejados da página. O Boilerpipe faz exactamente isto.

Essencialmente, certifique-se de que não é fácil para um script encontrar o conteúdo real e desejado para cada semelhante pagina.

Ver também como evitar que rastejantes dependendo do XPath obtenham o conteúdo da Página para mais detalhes sobre como isto pode ser implementado em PHP.

Mude o seu HTML com base na localização do utilizador

Isto é parecido com a dica anterior. Se você servir HTML diferente com base na localização / país do seu usuário (determinado pelo endereço IP), isso pode quebrar raspadores que são entregues aos usuários. Por exemplo, se alguém está escrevendo um aplicativo móvel que raspa dados a partir de seu site, ele vai funcionar bem inicialmente, mas quebrar quando ele é realmente distribuído para os usuários, como esses usuários podem estar em um país diferente, e assim obter HTML diferente, que o raspador incorporado não foi projetado para consumir. Muitas vezes muda o teu HTML, lixa activamente os raspadores ao fazê-lo !

Um exemplo: você tem uma funcionalidade de pesquisa no seu website, localizada em example.com/search?query=somesearchquery, que devolve o seguinte HTML:

<div class="search-result">
  <h3 class="search-result-title">Stack Overflow has become the world's most popular programming Q & A website</h3>
  <p class="search-result-excerpt">The website Stack Overflow has now become the most popular programming Q & A website, with 10 million questions and many users, which...</p>
  <a class"search-result-link" href="/stories/story-link">Read more</a>
</div>
(And so on, lots more identically structured divs with search results)
Como devem ter adivinhado, isto é fácil de scrape: tudo o que um scraper precisa fazer é carregar no URL de pesquisa com uma consulta, e extrair os dados desejados do HTML devolvido. Além de alterar periodicamente o HTML como descrito acima, você também pode deixar a marca antiga com os ids e classes antigas, escondê-lo com CSS, e preenchê-lo com dados falsos, envenenando assim o raspador.Aqui está como a página de resultados da pesquisa pode ser alterada:
<div class="the-real-search-result">
  <h3 class="the-real-search-result-title">Stack Overflow has become the world's most popular programming Q & A website</h3>
  <p class="the-real-search-result-excerpt">The website Stack Overflow has now become the most popular programming Q & A website, with 10 million questions and many users, which...</p>
  <a class"the-real-search-result-link" href="/stories/story-link">Read more</a>
</div>

<div class="search-result" style="display:none">
  <h3 class="search-result-title">Visit Example.com now, for all the latest Stack Overflow related news !</h3>
  <p class="search-result-excerpt">Example.com is so awesome, visit now !</p>
  <a class"search-result-link" href="http://example.com/">Visit Now !</a>
</div>
(More real search results follow)
Isso significa que raspadores escritos para extrair dados do HTML com base em classes ou IDs vão continuar a funcionar aparentemente, mas eles vão obter dados falsos ou até mesmo anúncios, dados que os usuários reais nunca vão ver, como eles estão escondidos com CSS.

Aparafusar com o raspador: inserir dados falsos e invisíveis de madressilva na sua página

Adicionando ao exemplo anterior, pode adicionar itens invisíveis de madressilva ao seu HTML para apanhar raspadores. Um exemplo que pode ser adicionado à página de resultados da pesquisa anteriormente descrita:

<div class="search-result" style=”display:none">
  <h3 class="search-result-title">This search result is here to prevent scraping</h3>
  <p class="search-result-excerpt">If you're a human and see this, please ignore it. If you're a scraper, please click the link below :-)
  Note that clicking the link below will block access to this site for 24 hours.</p>
  <a class"search-result-link" href="/scrapertrap/scrapertrap.php">I'm a scraper !</a>
</div>
(The actual, real, search results follow.)

Um raspador escrito para obter todos os os resultados da pesquisa irão pegar isso, assim como qualquer um dos outros, resultados de pesquisa reais na página, e visitar o link, procurando o conteúdo desejado. Um verdadeiro humano nunca o verá em primeiro lugar (devido a estar escondido com o CSS), e não visitará o link. Uma aranha genuína e desejável, como a do Google, também não visitará o link, porque você não autorizou ([18]) em seus robôs.txt.

Você pode fazer com que o seu scrapertrap.php faça algo como um bloco de Acesso para o endereço IP que o visitou ou forçar a captcha para todos os pedidos subsequentes daquele PI.

  • Não se esqueça de recusar o seu honeypot ([18]) em seus robôs.ficheiro txt para que os Robots do motor de busca não caiam nele.

  • Você pode / deve combinar isso com a dica anterior de alterar o seu HTML com frequência.

  • Mude isto frequentemente demasiado, porque raspadores aprenderão eventualmente a evitá-lo. Muda o URL e o texto do 'honeypot'. Também quer considerar mudar o CSS inline usado para esconder, e usar um atributo ID e CSS externo em vez disso, como raspadores irá aprender a evitar qualquer coisa que tenha um atributo style com CSS usado para esconder o conteúdo. Também tente apenas habilitá-lo às vezes, para que o raspador funciona inicialmente, mas quebra depois de um tempo. Isto também se aplica à dica anterior.

  • Pessoas maliciosas podem impedir o acesso para usuários reais, compartilhando um link para o seu honeypot, ou mesmo incorporando esse link em algum lugar como uma imagem (eg. em um fórum). Alterar a URL frequentemente, e fazer qualquer ban vezes relativamente curto.

Serve dados falsos e inúteis se detectares um raspador

Se você detectar o que é obviamente um raspador, você pode fornecer dados falsos e inúteis; isso irá corromper os dados que o raspador recebe de seu site. Você também deve tornar impossível distinguir esses dados falsos de dados reais, para que os raspadores não sabem que eles estão sendo lixados.

Como exemplo: você tem um site de notícias; se você detecte um raspador, em vez de bloquear o acesso, sirva artigos falsos, gerados aleatoriamente, e isto irá envenenar os dados que o raspador recebe. Se você fizer seus dados falsos indistinguíveis da coisa real, você vai tornar difícil para os raspadores obter o que eles querem, ou seja, os dados reais.

Não aceite pedidos se o agente do utilizador estiver vazio / em falta

Muitas vezes, raspadores preguiçosamente escritos não enviam um cabeçalho de agente de utilizador com o seu pedido, enquanto que todos os navegadores assim como as aranhas do motor de busca.

Se você receber um pedido onde o cabeçalho do agente de usuário não está presente, você pode mostrar um captcha, ou simplesmente bloquear ou limitar o acesso. (Ou servir dados falsos como descrito acima, ou algo mais..)

É trivial falsificar, mas como medida contra raspadores mal escritos vale a pena implementar.

Não aceite pedidos se o agente de Utilizador for um raspador comum; listas negras usadas por raspadores

Em alguns casos, raspadores utilizará um agente de utilizador que não utiliza nenhum navegador ou motor de busca, como:

  • "Mozilla" (apenas isso, nada mais. Já vi algumas perguntas sobre raspar aqui, usar isso. Um navegador real nunca irá usar apenas isso)
  • "Java 1.7. 43_u43" (por padrão, o HttpUrlConnection de Java usa algo assim.)
  • BIZCO EasyScraping Studio 2.0
  • "wget"," curl","libcurl",.. (Wget e cURL são por vezes usados para raspagem básica)

Se descubra que uma cadeia específica de agente de usuário é usada por raspadores em seu site, e não é usado por navegadores reais ou aranhas legítimas, você também pode adicioná-lo à sua lista negra.

Se não requisita activos (CSS, imagens), não é um navegador real.

Um navegador real irá (quase sempre) requisitar e descarregar activos como imagens e CSS. Os analisadores e raspadores de HTML não estão interessados apenas nas páginas reais e no seu conteúdo.

Podes registar os pedidos para o teu ativos, e se você ver muitos pedidos para apenas o HTML, pode ser um raspador.

Cuidado para que os robots dos motores de busca, os dispositivos móveis antigos, os leitores de ecrã e os dispositivos mal configurados também não possam solicitar activos.

Usar e exigir cookies; usá-los para acompanhar as acções do utilizador e do raspador.

Você pode exigir que os cookies sejam ativados para poder ver o seu site. Isso vai dissuadir inexperientes e escritores novatos scraper, no entanto, é fácil para um scraper para enviar cookies. Se você usar e necessitar deles, você pode rastrear as ações do Usuário e raspador com eles, e assim implementar a limitação de taxa, bloqueio, ou mostrar captchas em uma base por usuário em vez de uma base por IP.

Por exemplo: quando o utilizador efectuar uma pesquisa, defina um cookie de identificação único. Quando as páginas de resultados são visualizadas, verifique esse cookie. Se o usuário abre todos os resultados de pesquisa (você pode dizer a partir do cookie), então é provavelmente um raspador.

A utilização de cookies pode ser ineficaz, uma vez que os raspadores podem envie os cookies com seus pedidos também, e descartá-los conforme necessário. Você também irá impedir o acesso de usuários reais que têm cookies desativados, se o seu site só funciona com cookies.

Note que se você usar JavaScript para definir e recuperar o cookie, você vai bloquear raspadores que não executam JavaScript, uma vez que eles não podem recuperar e enviar o cookie com o seu pedido.

Utilize JavaScript + Ajax para carregar o seu conteúdo

Pode usar JavaScript + AJAX para carregar o seu conteúdo depois da própria página carrega. Isto tornará o conteúdo inacessível aos parsers HTML que não executam JavaScript. Isto é muitas vezes um dissuasor eficaz para os programadores novatos e inexperientes escrevendo raspadores.

Esteja ciente de:

  • Usar o JavaScript para carregar o conteúdo real irá degradar a experiência e o desempenho do utilizador

  • Os motores de busca também podem não executar JavaScript, impedindo-os de indexar o seu conteúdo. Isto pode não ser um problema para páginas de resultados de pesquisa, mas pode ser para outras coisas, como páginas de artigos.

Ofusca a tua marca, os pedidos de rede de scripts e tudo o resto.

Se usar o Ajax e o JavaScript para carregar os seus dados, ofusca os dados que são transferidos. Como exemplo, você pode codificar seus dados no servidor (com algo tão simples como base64 ou mais complexo), e então decodificá-lo e exibi-lo no cliente, depois de obter via Ajax. Isto significa que alguém inspeccionar o tráfego de rede não irá ver imediatamente como a sua página funciona e carrega os dados, e será mais difícil para alguém solicitar directamente os dados dos seus parâmetros, uma vez que terá de fazer engenharia reversa do seu algoritmo de descrambling.

  • Se você usar Ajax para carregar os dados, você deve tornar difícil usar os endpoints sem carregar a Página primeiro, por exemplo, exigindo alguma chave de sessão como um parâmetro, que você pode incorporar em seu JavaScript ou seu GALERIA.

  • Você também pode incorporar seus dados ofuscados diretamente na página HTML inicial e usar JavaScript para desobfuscá-lo e exibi-lo, o que evitaria os pedidos de rede extra. Ao fazer isso, será significativamente mais difícil extrair os dados usando um analisador apenas HTML que não executa JavaScript, como o que escreve o raspador terá que reverter o seu JavaScript (que você deve ofuscar também).

  • Talvez queiras mudar a tua ofuscação. métodos regularmente, para quebrar raspadores que já descobriram.

Mas há várias desvantagens em fazer algo assim:
  • Será entediante e difícil implementar, manter e depurar.

  • Será ineficaz contra raspadores e screenscrapers que realmente executar JavaScript e, em seguida, extrair os dados. (A maioria dos simples analisadores HTML não executam JavaScript embora)

  • Ele vai fazer o seu site não funciona para usuários reais se eles têm JavaScript desativado.

  • Os tempos de desempenho e de carga de página sofrerão.

Não Técnico:

  • Diz às pessoas para não rasparem, e alguns vão respeitá-lo.

  • Procura um advogado.

  • Disponibilize os seus dados, forneça uma API:

    Você pode tornar os seus dados facilmente disponíveis e exigir atribuição e um link de volta para o seu site. Talvez cobrar $ $ $ $ por ele.

Diversos:

  • Há também serviços comerciais de proteção à sucata, tais como o anti-raspagem por Cloudflare ou Distill Networks (detalhes sobre como ele funciona aqui), que fazem essas coisas, e mais para você.

  • Encontrar um equilíbrio entre usabilidade para usuários reais e raspador-proofness: tudo o que você faz vai impactar a experiência do Usuário negativamente de uma forma ou de outra, encontrar comprometer.

  • Não se esqueça do seu site móvel e aplicativos. Se você tem um aplicativo móvel, que pode ser screenscraped também, e o tráfego de rede pode ser inspecionado para determinar os outros pontos finais que ele usa.

  • Raspadores podem raspar outros raspadores: se há um site que tem conteúdo raspado do seu, Outros raspadores podem raspar do site desse raspador.

Leitura adicional:

 262
Author: JonasCz, 2017-10-01 22:51:03

Vou presumir que montaste robots.txt.

Como outros já referiram, os raspadores podem falsificar quase todos os aspectos das suas actividades, e é provavelmente muito difícil identificar os pedidos que vêm dos maus da fita.

Eu consideraria:

  1. prepara uma página, /jail.html
  2. (Para que as aranhas respeitosas nunca visitem). Coloque um link numa das suas páginas, escondendo-o com o CSS. (display: none).
  3. registar os endereços IP dos visitantes a /jail.html.
Isto pode ajudá-lo a identificar rapidamente pedidos de raspadores que ignoram flagrantemente o seu {[[0]}.

Você também pode querer fazer o seu /jail.html um site inteiro que tem a mesma marca, exata como as páginas normais, mas com dados falsos(/jail/album/63ajdka, /jail/track/3aads8, etc.). Desta forma, os raspadores ruins não serão alertados para "entrada incomum" até que você tenha a chance de bloqueá-los completamente.

 230
Author: Daniel Trebbien, 2016-02-18 14:47:35
Processa-os. A sério, se tens algum dinheiro, fala com um bom, simpático e jovem advogado que conhece os internos. Podias mesmo fazer alguma coisa aqui. Dependendo de onde os sites estão baseados, você poderia ter um advogado escrever um cessar-fogo ou seu equivalente em seu país. Talvez consiga assustar os bastardos.

Documenta a inserção dos teus valores falsos. Inserir valores fictícios que apontam claramente para si (mas de forma obscura). Acho que isto ... é prática comum com as empresas de listas telefônicas, e aqui na Alemanha, eu acho que houve vários casos em que Copiadores foram quebrados através de entradas falsas que copiaram 1:1.

Seria uma pena se isto o levasse a alterar o seu código HTML, arrastando o SEO, a validade e outras coisas (mesmo que um sistema de templação que usa uma estrutura HTML ligeiramente diferente em cada pedido de páginas idênticas já possa ajudar um lote contra raspadores que sempre dependem do HTML estruturas e nomes de classe / ID para obter o conteúdo.)

Casos como este são bons para as leis de direitos autorais. Roubar o trabalho honesto de outras pessoas para ganhar dinheiro é algo que você deve ser capaz de lutar contra.
 48
Author: Unicron, 2016-02-02 17:18:19
Não há nada que possas fazer para impedir isto completamente. Raspadores podem falsificar seu agente de usuário, usar vários endereços IP, etc. e aparecer como um utilizador normal. A única coisa que você pode fazer é fazer o texto não disponível no momento em que a página é carregada - torná-lo com imagem, flash, ou carregá-lo com JavaScript. No entanto, os dois primeiros são idéias ruins, e o último seria um problema de acessibilidade se JavaScript não está habilitado para alguns de seus usuários regulares. Se forem absolutamente batendo no seu site e remexendo em todas as suas páginas, você poderia fazer algum tipo de limitação de taxa. Mas há esperança. Raspadores dependem de dados do seu site estar em um formato consistente. Se pudesse aleatorizá-lo de alguma forma, podia partir-lhes o raspador. Coisas como mudar os nomes de ID ou classe de elementos de página em cada carga, etc. Mas isso é muito trabalho para fazer e não sei se vale a pena. E mesmo assim, eles provavelmente poderiam contorná-lo com dedicação suficiente.
 33
Author: ryeguy, 2016-02-18 12:24:23

Forneça uma API XML para aceder aos seus dados; de uma forma simples de usar. Se as pessoas querem os seus dados, eles vão obtê-los, você pode muito bem ir tudo para fora.

Desta forma, você pode fornecer um subconjunto de funcionalidade de uma maneira eficaz, garantindo que, no mínimo, os raspadores não vão aumentar os pedidos HTTP e quantidades maciças de largura de banda.

Então tudo o que tens de fazer é convencer as pessoas que querem os teus dados a usar a API. ;)

 28
Author: Williham Totland, 2010-07-01 21:01:50
Desculpa, é muito difícil fazer isto...

Sugiro que lhes peça educadamente para não usarem o seu conteúdo (se o seu conteúdo tiver direitos de Autor).

Se for e eles não o tirarem, então você pode ir mais longe e enviar-lhes uma cessar e desistir da carta.

De um modo geral, o que quer que faça para evitar a sucata provavelmente acabará com um efeito mais negativo, por exemplo, acessibilidade, bots/spiders, etc.

 21
Author: Lizard, 2016-02-17 15:36:42
Está bem, como todos os posts dizem, Se você quiser torná-lo motor de busca amigável, então os bots podem raspar com certeza. Mas você ainda pode fazer algumas coisas, e pode ser afetivo para 60-70% raspando bots.

Faça um script de verificação como em baixo.

Se um determinado endereço IP está visitando muito rápido, então depois de algumas visitas (5-10) Coloque seu endereço IP + informações do navegador em um arquivo ou banco de dados.

O próximo passo

(este seria um processo de fundo e executando tudo hora ou agendada após alguns minutos.) Fazer um outro script que vai continuar a verificar esses endereços IP suspeitos.

Caso 1. Se o agente do utilizador é de um motor de busca conhecido como o Google, Bing, Yahoo (poderá encontrar mais informações sobre os agentes do utilizador pesquisando-as no Google). Então você deve ver http://www.iplists.com/. Esta lista e tentar corresponder aos padrões. E se parecer um agente falsificado, peça para preencher um CAPTCHA na próxima visita. (Você preciso de pesquisar um pouco mais sobre os endereços IP dos bots. Sei que isto é exequível e também sei quem é o endereço IP. Pode ser útil.)

Caso 2. Nenhum agente de usuário de um bot de pesquisa: basta pedir para preencher um CAPTCHA na próxima visita.

 12
Author: Arshdeep, 2016-02-18 16:30:58
Do ponto de vista tecnológico: Basta modelar o que o Google faz quando você os atinge com muitas consultas ao mesmo tempo. Isso deve pôr um fim a muita coisa. Do ponto de vista jurídico: Parece que os dados que publicas não são proprietários. O que significa que está a publicar nomes, estatísticas e outras informações que não podem ser protegidas por direitos de Autor.

Se for esse o caso, os raspadores não estão a violar os direitos de autor ao redistribuir as suas informações sobre o nome do artista, etc. No entanto, podem ser violação de direitos autorais quando eles carregam o seu site em memória porque o seu site contém elementos que são copyrightable (como layout etc).

Eu recomendo ler sobre o Facebook v. Power.com e ver os argumentos que o Facebook usou para parar de raspar no ecrã. Há muitas maneiras legais que você pode ir sobre tentar impedir alguém de raspar o seu site. Podem ser de grande alcance e imaginativos. Às vezes, os tribunais compram os argumentos. Às vezes não. Mas, assumindo que és publicar informação de domínio público que não é legível como nomes e estatísticas básicas... devias deixá-lo ir em nome da liberdade de expressão e de Dados Abertos. É disso que se trata a web.
 8
Author: dengeltrees, 2011-03-13 09:34:03

Coisas que podem funcionar contra raspadores de principiantes:

  • Bloqueio de IP
  • utilizar lotes de ajax
  • Verificar o cabeçalho do pedido de referência
  • necessita de autenticação

Coisas que ajudarão em geral:

  • muda a tua disposição todas as semanas
  • Robôs.txt

Coisas que vão ajudar, mas vão fazer com que os seus utilizadores o odeiem.:

  • captcha
 8
Author: pguardiario, 2012-06-22 02:42:28

Eu fiz um monte de raspagem da web e resumi algumas técnicas {[[2]}para parar raspadores da web no meu blog com base no que eu acho irritante.

É uma troca entre utilizadores e raspadores. Se você limitar IP's, usar CAPTCHA's, exigir login, etc, você faz como difícil para os raspadores. Mas isso também pode afastar seus usuários genuínos.
 8
Author: hoju, 2012-10-16 00:21:34
Resposta tardia-e também esta resposta provavelmente não é a que você quer ouvir...

Eu já escrevi Muitos (muitas dezenas) de diferentes especializados raspadores de dados. (só porque eu gosto da filosofia de "Dados Abertos").

Aqui já há muitos conselhos em outras respostas - Agora eu vou desempenhar o papel de advogado do diabo {[7] } e vai estender e / ou corrigir a sua eficácia.

Primeiro:

    Se alguém realmente quer o seu data
  • Tu não podes efectivamente (tecnicamente) esconder os teus dados
  • se os dados forem acessíveis ao público aos seus"utilizadores regulares"
Tentar usar barreiras técnicas não valem os problemas causados.
  • para os seus utilizadores regulares ao agravar a sua experiência de utilizador
  • para bots regulares e bem-vindos (motores de busca)
  • etc...

HMTL - a maneira mais fácil é processar as páginas HTML simples, com estrutura bem definida e classes de css. Por exemplo, é suficiente para inspecionar o elemento com Firebug, e usar os Xpaths certos, e/ou CSS caminho no meu raspador.

Você pode gerar a estrutura HTML dinamicamente e também, você pode gerar dinamicamente os nomes de classes CSS (e o próprio CSS também) (por exemplo, usando alguns nomes de classes aleatórios) - mas

  • Você quer apresentar as informações aos seus utilizadores regulares de forma consistente
  • Por exemplo, mais uma vez - é suficiente analisar a página estrutura mais uma vez para configurar o raspador. E pode ser feito automaticamente analisando algum "conteúdo já conhecido"
    • uma vez que alguém já sabe( por raspas anteriores), por exemplo:
    • Qual é a informação sobre o phil collins?
    • basta mostrar a página" phil collins "e (automaticamente) analisar como a página está estruturada "hoje":)
Você não pode mudar a estrutura para cada resposta, porque seus usuários regulares vão odiar você. Além disso, isso vai causar mais problemas para você (manutenção) não para o raspador. O caminho XPath ou CSS é determinável pelo script de raspagem automaticamente do conteúdo conhecido.

Ajax - um pouco mais duro no início, mas muitas vezes acelera o processo de raspagem:) - por quê?

Ao analisar os pedidos e Respostas, configurei o meu próprio servidor proxy (escrito em perl) e o meu firefox está a usá-lo. É claro, porque é o meu próprio proxy - está completamente escondido - o servidor de destino vê-lo como navegador regular. (Assim, nenhum X-for E tais headers). Com base nos logs proxy, a maioria é possível determinar a "lógica" dos pedidos ajax, por exemplo, eu poderia pular a maior parte da raspagem html, e apenas usar as respostas ajax bem estruturadas (principalmente no formato JSON).

Então, o ajax não ajuda muito... Algumas mais complicadas são as páginas que usam Muito packed javascript functions . Aqui é possível utilizar dois métodos básicos:
  • desempacote e compreenda o JS e crie um raspador que siga a lógica Javascript (da maneira mais difícil)
  • ou (de preferência utilizando - se sozinho) - apenas utilizando Mozilla Com Mozrepl para raspagem. Por exemplo, o scraping real é feito na totalidade com navegador JavaScript habilitado, que é programado para clicar nos elementos certos e apenas pegar as respostas "descodificadas" diretamente da janela do navegador.

Tal raspagem é lenta (o raspagem é feito como no navegador regular), mas é

  • Muito fácil de configurar e usar
  • E é quase impossível combatê-lo.
  • e a "lentidão" é necessária de qualquer forma para contrariar o "bloqueio dos mesmos pedidos rápidos baseados no IP"

A filtragem baseada no agente do utilizador não ajuda nada. Qualquer Minador de dados sério vai colocá-lo para algum correto em seu raspador.

Exigir o Login - não ajuda. A maneira mais simples de bater (sem qualquer análise e / ou scripting do login-protocol) é apenas entrar no site como usuário regular, usando Mozilla e depois de apenas executar o scraper baseado no Mozrepl...

Lembre-se, o necessita de login Ajuda para robots anónimos, mas não ajuda contra alguém que quer raspar os seus dados. Ele apenas se registra no seu site como usuário regular.

Usar molduras também não é muito eficaz. Este é usado por muitos serviços de cinema ao vivo e não é muito difícil de bater. Os quadros são simplesmente mais uma página HTML / Javascript que são necessárias para analisar... Se os dados valem os problemas-o Minador de dados fará a análise necessária.

Limitação baseada em IP não é eficaz em tudo - aqui estão muitos servidores proxy públicos e também aqui está o TOR... :) Ele não diminui a raspagem (para alguém que realmente quer seus dados).

Muito difícil são os dados escondidos nas imagens. (por exemplo, simplesmente convertendo os dados em imagens do lado do servidor). Ter "tesseract" (OCR) ajuda muitas vezes - mas honestamente - os dados devem valer os problemas para o raspador. (que muitas vezes não vale a pena). Do outro lado, os teus utilizadores vão odiar-te por isto. Eu mesmo, (mesmo quando não raspando) odeio sites que não permite copiar o conteúdo da página para a área de transferência (porque as informações estão nas imagens, ou (as tolas) tentando se ligar ao clique direito algum evento JavaScript personalizado. :)

Os mais difíceis são os locais que usam 'applets' java ou 'flash' , e a 'applet' USA o 'HTTPS' seguro pede-se internamente. Mas pense duas vezes-quão feliz será o seu iPhone usuários... ;). Portanto, atualmente, muito poucos sites usando-os. Eu mesmo, bloqueando todo o conteúdo flash no meu navegador (em sessões de navegação regulares) - e nunca usando sites que depende do Flash.

Os teus Marcos podem ser..., então você pode tentar este método-apenas lembre-se-você provavelmente vai perder alguns de seus usuários. Lembre-se também, alguns ficheiros SWF são descompiláveis. ;)

Captcha (Os bons - como reCaptcha) ajuda muito - mas os seus utilizadores vão odiá-lo... - basta imaginar, como seus usuários vão amá-lo quando eles precisam resolver alguns captchas em todas as páginas mostrando informações sobre os artistas de música.

Provavelmente não precisas de continuar - já entraste no filme.

Agora o que você deve fazer:

Lembre-se: é quase impossível esconder seus dados, se você do outro lado quiser publique - os (de forma amigável) para seus usuários regulares.

Então,
    Torne os seus dados facilmente acessíveis por uma API
    • isto permite o fácil acesso aos Dados
    • por exemplo, Descarregue o seu servidor de raspagem - bom para si
  • configurar os direitos de Utilização certos (por exemplo, deve citar a fonte)
  • Lembre-se, muitos dados não são protegidos por direitos autorais e difíceis de proteger.
  • adicione alguns dados falsos (como já fez) e use a legalização ferramenta
      Como outros já disseram, envia uma "carta de cessar e desistir". Outras acções judiciais (processos e afins) são provavelmente demasiado dispendiosas e difíceis de ganhar (especialmente contra sites não americanos)

Pense duas vezes antes de tentar usar algumas barreiras técnicas.

Ao invés de tentar bloquear os data-miners, basta adicionar mais esforços para a usabilidade do seu site. O teu utilizador vai adorar-te. O tempo (&energia) investido em barreiras técnicas geralmente não valem a pena - é melhor gastar o tempo para fazer um site ainda melhor... Além disso, os ladrões de dados não são como ladrões normais. Se comprares um alarme barato e adicionares um aviso "Esta casa está ligada à polícia", muitos ladrões nem sequer tentarão arrombar. Porque um movimento errado dele e ele vai para a prisão... Então, estás a investir apenas alguns dólares, mas o ladrão está a investir e a arriscar muito. Mas o ladrão de dados não tem esses riscos. pelo contrário. movimento errado (por exemplo, se você introduzir algum BUG como resultado de barreiras técnicas), você vai perder seus usuários. Se o robot de raspagem não funcionar pela primeira vez, nada acontece - o Minador de dados apenas irá tentar outra abordagem e/ou irá depurar o script. Neste caso, você precisa investir muito mais-e o raspador investir muito menos.

Pensa Onde queres investir o teu tempo e energia...

O inglês não é o meu nativo - por isso perdoa o meu inglês estragado...

 8
Author: jm666, 2016-02-03 01:02:59

A sua melhor opção é, infelizmente, bastante manual: procure padrões de tráfego que você acredita serem indicativos de raspar e banir os seus endereços IP.

Uma vez que está a falar de um site público, tornar o motor de busca amigável também vai tornar o site Amigo de raspagem. Se um motor de busca pode rastejar e raspar o seu site, em seguida, um raspador malicioso pode também. É uma linha ténue para andar.
 8
Author: STW, 2016-02-18 12:07:46
Claro que é possível. Para 100% de sucesso, desligue o seu site. Na realidade você pode fazer algumas coisas que tornam a raspagem um pouco mais difícil. O Google faz verificações de navegador para se certificar de que você não é um robô raspando resultados de pesquisa (embora isso, como a maioria das outras coisas, pode ser falsificado).

Você pode fazer coisas como exigir vários segundos entre a primeira conexão ao seu site, e cliques subsequentes. Não sei qual seria o momento ideal ou exactamente como fazê-lo, mas isso é outra ideia.

Tenho a certeza que há muitas outras pessoas que têm muito mais experiência, mas espero que essas ideias sejam, pelo menos, um pouco úteis.
 7
Author: Wayne Werner, 2010-07-01 20:53:27
Há algumas coisas que podes fazer para impedir a raspagem do ecrã. Alguns não são muito eficazes, enquanto outros (um CAPTCHA) São, mas dificultam a usabilidade. Você tem que ter em mente também que pode impedir raspadores legítimos do site, tais como os índices do motor de busca. No entanto, presumo que, se não o quer raspado, quer dizer que também não quer que os motores de busca o indexem. Aqui estão algumas coisas que você pode tentar:
  • mostra o texto numa imagem. Isto é ... confiável, e é menos uma dor para o usuário do que um CAPTCHA, mas significa que eles não serão capazes de cortar e colar e não vai escalar de forma bonita ou ser acessível.
  • utilize um CAPTCHA e exija que este seja preenchido antes de devolver a página. Este é um método confiável, mas também a maior dor para impor a um usuário.
  • exija que o utilizador se inscreva numa conta antes de ver as páginas e confirme o seu endereço de E-mail. Isto vai ser muito eficaz, mas não totalmente-um raspador de tela pode definir subir uma conta e pode habilmente programar seu script para fazer login para eles.
  • Se o texto do utilizador-agente do cliente estiver vazio, bloqueie o acesso. Um script de raspagem de site muitas vezes será preguiçosamente programado e não vai definir uma string user-agent, enquanto todos os navegadores da web vai.
  • Pode criar uma lista negra das cordas conhecidas do utilizador-agente de raspagem de ecrã à medida que as descobre. Mais uma vez, isto só vai ajudar os codificados preguiçosamente; um programador que sabe o que ele está fazendo pode definir uma cadeia de user-agent para fazer - se passar por um navegador web.
  • mude frequentemente a localização do URL. Quando o alterar, certifique-se de que o antigo continua a funcionar, mas apenas durante o tempo em que um utilizador tenha o seu navegador aberto. Torna difícil prever qual será o novo caminho URL. Isto tornará difícil para scripts para agarrá-lo se sua URL é hard-coded. Seria melhor fazer isto com algum tipo de guião.
Se eu tivesse de fazer isto, provavelmente usaria uma combinação dos últimos três, porque minimizam o risco. inconveniência para usuários legítimos. No entanto, teria de aceitar que não será capaz de bloquear toda a gente desta maneira e assim que alguém descobrir como contorná-la, será capaz de raspá-la para sempre. Você poderia então apenas tentar bloquear seus endereços IP como você os descobre, eu acho.
 6
Author: thomasrutter, 2010-07-02 00:56:07
    Não, Não é possível parar (de forma alguma) Abraça-A. Por que não publicar como RDFa e tornar-se super motor de busca amigável e incentivar a reutilização de dados? As pessoas vão agradecer-lhe e fornecer crédito onde devido (veja musicbrainz como um exemplo).
Não é a resposta que provavelmente queres, mas porquê esconder o que estás a tentar tornar público?
 5
Author: nathan, 2016-02-24 15:03:59

Método Um (Apenas Pequenas Instalações):
Servir dados codificados / codificados.
eu desligo a web usando python (urllib, pedidos, beautifulSoup, etc...) e encontrou muitos sites que servem dados criptografados / codificados que não são decifráveis em qualquer linguagem de programação simplesmente porque o método de criptografia não existe.

Consegui isto num site do PHP criptografando e minimizando a saída (aviso: isto não é uma boa ideia para grandes sites) a resposta foi sempre confusa conteudo.

Exemplo de minimizar o resultado em PHP (Como minifiar o resultado em PHP page html?):

<?php
  function sanitize_output($buffer) {
    $search = array(
      '/\>[^\S ]+/s', // strip whitespaces after tags, except space
      '/[^\S ]+\</s', // strip whitespaces before tags, except space
      '/(\s)+/s'      // shorten multiple whitespace sequences
    );
    $replace = array('>', '<', '\\1');
    $buffer = preg_replace($search, $replace, $buffer);
    return $buffer;
  }
  ob_start("sanitize_output");
?>

Método Dois:
Se você não pode impedi-los de lixá-los servem dados falsos / inúteis como uma resposta.

Método Três:
block common scraping user agents, you'll see this in major / large websites as it is impossible to scrape them with "python3. 4" as you User-Agent.

Método Quatro:
Certifique-se de que todos os cabeçalhos do utilizador estão válido, eu às vezes fornecer o maior número possível de cabeçalhos para fazer o meu raspador parecer um usuário autêntico, alguns deles nem sequer são verdadeiros ou válidos como en-FU :).
Aqui está uma lista de alguns dos cabeçalhos que eu geralmente fornecer.

headers = {
  "Requested-URI": "/example",
  "Request-Method": "GET",
  "Remote-IP-Address": "656.787.909.121",
  "Remote-IP-Port": "69696",
  "Protocol-version": "HTTP/1.1",
  "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
  "Accept-Encoding": "gzip,deflate",
  "Accept-Language": "en-FU,en;q=0.8",
  "Cache-Control": "max-age=0",
  "Connection": "keep-alive",
  "Dnt": "1",  
  "Host": "http://example.com",
  "Referer": "http://example.com",
  "Upgrade-Insecure-Requests": "1",
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36"
}
 4
Author: Community, 2017-05-23 12:34:53
Em vez de bots de blacklisting, talvez devas pintá-los de branco. Se você não quiser matar seus resultados de pesquisa para os poucos motores de topo, você pode whitelist seus strings user-agent, que são geralmente bem publicitados. Os bots menos éticos tendem a forjar strings user-agent de navegadores web populares. Os principais poucos motores de busca devem estar dirigindo para cima de 95% do seu tráfego.

Identificar os próprios bots deve ser bastante simples, usando as técnicas de outros os cartazes sugeriram.

 2
Author: Chris, 2010-07-02 01:22:01
Uma abordagem rápida a isto seria montar uma armadilha.
  1. Faça uma página que se for aberta uma certa quantidade de vezes ou até mesmo aberta em tudo, irá coletar certas informações como o IP e outros afins (Você também pode considerar irregularidades ou padrões, mas esta página não deve ter que ser aberta em tudo).

  2. Faça uma ligação para isto na sua página que está escondida com a visualização de CSS: nenhuma; ou à esquerda: - 9999px; positon: absoluto; tente colocá - la em locais que sejam menos é improvável que seja ignorado como onde o seu conteúdo cai e não o seu rodapé, pois às vezes os bots podem optar por esquecer certas partes de uma página.

  3. Nos seus robôs.txt file definir um monte de regras de recusa para páginas que você não quer bots amigáveis (LOL, como eles têm caras felizes!) para recolher informações e definir esta página como uma delas.

  4. Agora, se um robô amigável passar por ele deve ignorar essa página. Certo, mas isso não chega. Faça um mais algumas destas páginas ou de alguma forma reencaminhar uma página para aceitar nomes diferentes. e depois, coloque mais regras para estas armadilhas nos seus robôs.ficheiro txt ao lado das páginas que deseja ignorar.

  5. Coletar o IP destes bots ou qualquer um que entra nestas páginas, não bani-los, mas fazer uma função para exibir texto em rabiscos em seu conteúdo como números aleatórios, avisos de copyright, textos específicos, exibir imagens assustadoras, basicamente qualquer coisa para dificultar o seu bom conteúdo. Você também pode definir links que apontam para uma página que levará uma eternidade para carregar ie. em php você pode usar a função sleep (). Isso irá lutar contra o rastreador de volta se ele tem algum tipo de detecção para contornar páginas que levam muito tempo para carregar, como alguns bots bem escritos são definidos para processar X quantidade de links de cada vez.

  6. Se você fez textos / frases específicas por que não ir para o seu motor de busca favorito e procurá - los, ele pode mostrar-lhe onde o seu conteúdo está terminando ate.

De qualquer forma, se pensares taticamente e criativamente, este pode ser um bom ponto de partida. A melhor coisa a fazer seria aprender como um bot funciona.

Eu também pensaria em scambling alguns IDs ou a forma como os atributos no elemento da página são exibidos:

<a class="someclass" href="../xyz/abc" rel="nofollow" title="sometitle"> 
Isso muda de forma cada vez que alguns bots podem estar à procura de padrões específicos nas suas páginas ou elementos específicos.
<a title="sometitle" href="../xyz/abc" rel="nofollow" class="someclass"> 

id="p-12802" > id="p-00392"
 2
Author: Steve Chan, 2014-07-25 15:22:04
Não podes parar de raspar o ecrã normal. Para o melhor ou para o pior, é a natureza da web.

Você Pode fazê-lo para que ninguém possa acessar certas coisas (incluindo arquivos de música) a menos que eles estejam logados como um usuário registrado. Não é muito difícil fazer em Apache. Presumo que não seja muito difícil de fazer no IIS também.

 1
Author: Dinah, 2010-07-02 00:43:09

Uma maneira seria servir o conteúdo como atributos XML, strings codificadas URL, texto pré-formatado com JSON codificado HTML, ou URIs de dados, em seguida, transformá-lo para HTML no cliente. Aqui estão alguns sites que fazem isso:

  • Skechers : XML

    <document 
     filename="" 
     height="" 
     width="" 
     title="SKECHERS" 
     linkType="" 
     linkUrl="" 
     imageMap="" 
     href=&quot;http://www.bobsfromskechers.com&quot; 
     alt=&quot;BOBS from Skechers&quot; 
     title=&quot;BOBS from Skechers&quot; 
    />
    
  • Loja web Chrome : JSON

    <script type="text/javascript" src="https://apis.google.com/js/plusone.js">{"lang": "en", "parsetags": "explicit"}</script>
    
  • Bing News : URL de dados

    <script type="text/javascript">
      //<![CDATA[
      (function()
        {
        var x;x=_ge('emb7');
        if(x)
          {
          x.src='data:image/jpeg;base64,/*...*/';
          } 
        }() )
    
  • Protopage : URL codificado Cordas

    unescape('Rolling%20Stone%20%3a%20Rock%20and%20Roll%20Daily')
    
  • TiddlyWiki : HTML Entities + preformatted JSON

       <pre>
       {&quot;tiddlers&quot;: 
        {
        &quot;GettingStarted&quot;: 
          {
          &quot;title&quot;: &quot;GettingStarted&quot;,
          &quot;text&quot;: &quot;Welcome to TiddlyWiki,
          }
        }
       }
       </pre>
    
  • Amazon : Carga Preguiçosa

    amzn.copilot.jQuery=i;amzn.copilot.jQuery(document).ready(function(){d(b);f(c,function() {amzn.copilot.setup({serviceEndPoint:h.vipUrl,isContinuedSession:true})})})},f=function(i,h){var j=document.createElement("script");j.type="text/javascript";j.src=i;j.async=true;j.onload=h;a.appendChild(j)},d=function(h){var i=document.createElement("link");i.type="text/css";i.rel="stylesheet";i.href=h;a.appendChild(i)}})();
    amzn.copilot.checkCoPilotSession({jsUrl : 'http://z-ecx.images-amazon.com/images/G/01/browser-scripts/cs-copilot-customer-js/cs-copilot-customer-js-min-1875890922._V1_.js', cssUrl : 'http://z-ecx.images-amazon.com/images/G/01/browser-scripts/cs-copilot-customer-css/cs-copilot-customer-css-min-2367001420._V1_.css', vipUrl : 'https://copilot.amazon.com'
    
  • XMLCalabash : XML + tipo MIME personalizado + extensão de ficheiro personalizado

       <p:declare-step type="pxp:zip">
            <p:input port="source" sequence="true" primary="true"/>
            <p:input port="manifest"/>
            <p:output port="result"/>
            <p:option name="href" required="true" cx:type="xsd:anyURI"/>
            <p:option name="compression-method" cx:type="stored|deflated"/>
            <p:option name="compression-level" cx:type="smallest|fastest|default|huffman|none"/>
            <p:option name="command" select="'update'" cx:type="update|freshen|create|delete"/>
       </p:declare-step>
    

Se você ver a fonte em qualquer uma das situações acima, você verá que a raspagem irá simplesmente devolver metadados e navegação.

 1
Author: Paul Sweatte, 2015-12-15 19:55:45
A maioria já foi dita, mas já consideraste a protecção contra as nuvens? Quero dizer isto:

image description

Outras empresas provavelmente também fazem isto, a CloudFlare é a única que conheço. Tenho a certeza que isso iria complicar o trabalho deles. I also once got IP banned automatically for 4 months when I tried to scrap data of a site protected by CloudFlare due to rate limit (I used simple AJAX request loop).
 1
Author: Tomáš Zato, 2016-02-03 10:09:44

Eu concordo com a maioria dos posts acima, e eu gostaria de acrescentar que quanto mais amigável motor de busca seu site é, mais raspe-capaz seria. Você poderia tentar fazer um par de coisas que são muito lá fora que tornam mais difícil para raspadores, mas também pode afetar sua capacidade de busca... Depende de quão bem você quer que seu site para classificar em motores de busca, é claro.

 1
Author: sjobe, 2016-02-18 12:28:14
Colocar o seu conteúdo por trás de um captcha significaria que os robôs teriam dificuldade em aceder ao seu conteúdo. No entanto, os seres humanos seriam incomodados de modo que pode ser indesejável.
 0
Author: SorcyCat, 2010-07-01 20:53:30

Se você quiser ver um grande exemplo, confira http://www.bkstr.com/. Eles usam um j/s algoritmo para definir um cookie e, em seguida, recarregue a página para que possa utilizar o cookie para validar que o pedido está a ser executado dentro de um navegador. Um aplicativo de desktop construído para raspar poderia definitivamente obter por isso, mas ele iria parar a maioria do tipo cURL rasping.

 0
Author: blacktie24, 2011-03-07 18:25:29

Os raspadores de Ecrã trabalham processando HTML. E se eles estão determinados a obter seus dados, não há muito que você pode fazer tecnicamente, porque o globo ocular humano processa qualquer coisa. Legalmente já foi dito que pode ter algum recurso, e essa seria a minha recomendação.

No entanto, pode esconder a parte crítica dos seus dados usando a lógica de apresentação não baseada em HTML

  • gerar um ficheiroFlash para cada artista/álbum, etc.
  • gerar um imagem para cada conteúdo do artista. Talvez apenas uma imagem para o nome do artista, etc. seria suficiente. Faça isto, desenhando o texto para um JPEG/PNG ficheiro no servidor e ligação a essa imagem.
Tenha em mente que isso provavelmente afetaria seus rankings de busca.
 0
Author: James Westgate, 2016-02-19 11:04:20

Gerar o HTML, o CSS e o JavaScript. É mais fácil escrever geradores do que parsers, para que você possa gerar cada página servida de forma diferente. Você não pode mais usar um cache ou conteúdo estático então.

 0
Author: Stephan Eggermont, 2016-02-24 15:05:24