Как предотвратить очистку сайта?
У меня довольно большой музыкальный сайт с большой базой данных исполнителя. Я замечал другие музыкальные сайты, соскабливающие данные нашего сайта (я ввожу имена фиктивных художников здесь и там, а затем выполняю поиск в Google).
Как предотвратить экранирование экрана? Возможно ли это?
Ответы
Ответ 1
Я предполагаю, что вы установили robots.txt
.
Как отмечали другие, скребки могут подделывать почти каждый аспект их деятельности, и, вероятно, очень сложно определить запросы, которые исходят от плохих парней.
Я бы подумал:
- Настройте страницу,
/jail.html
.
- Запретить доступ к странице в
robots.txt
(поэтому уважаемые пауки никогда не посещают).
- Поместите ссылку на одну из ваших страниц, сокрыв ее с помощью CSS (
display: none
).
- Запись IP-адресов посетителей
/jail.html
.
Это может помочь вам быстро определить запросы от скреперов, которые грубо игнорируют ваш robots.txt
.
Вы также можете сделать свой /jail.html
весь весь сайт, который имеет ту же самую точную разметку, что и обычные страницы, но с поддельными данными (/jail/album/63ajdka
, /jail/track/3aads8
и т.д.). Таким образом, плохие скребки не будут предупреждены о "необычном вводе", пока у вас не будет возможности полностью их заблокировать.
Ответ 2
Примечание.. Поскольку полная версия этого ответа превышает ограничение длины стека стека, вам нужно перейти к GitHub, чтобы прочитать расширенную версию, с дополнительными советами и подробностями.
Чтобы помешать очищению (также известному как Webscraping, Screencraping, веб-интеллектуальный анализ данных, сбор данных в Интернете или извлечение веб-данных), он помогает знать, как работают эти скребки, и
, что, в свою очередь, мешает им хорошо работать.
Существуют различные типы скребок, и каждый работает по-разному:
-
Пауки, такие как Google bot или копиры веб-сайтов, такие как HTtrack, которые рекурсивно следуют ссылкам на другие страницы для получения данных. Они иногда используются для целевого скребли для получения конкретных данных, часто в сочетании с анализатором HTML для извлечения желаемых данных с каждой страницы.
-
Сценарии оболочки: иногда для очистки используются обычные инструменты Unix: Wget или Curl для загрузки страниц, а Grep (Regex) - для извлечения данных.
-
HTML-анализаторы, такие как те, которые основаны на Jsoup, Scrapy и другие. Подобно shell-script на основе регулярных выражений, они работают путем извлечения данных из страниц на основе шаблонов в HTML, обычно игнорируя все остальное.
Например: если на вашем веб-сайте есть функция поиска, такой скребок может отправить запрос на поиск, а затем получить все ссылки на результат и их заголовки на странице результатов HTML, чтобы специально получить только ссылки для результатов поиска и их названия. Они наиболее распространены.
-
Скриншоты, основанные на, например. Selenium или PhantomJS, которые открывают ваш сайт в реальном браузере, запустите JavaScript, AJAX и т.д., а затем получите желаемый текст с веб-страницы, обычно:
-
Получение HTML-кода из браузера после загрузки страницы и запуска JavaScript, а затем с помощью парсера HTML для извлечения желаемых данных. Они являются наиболее распространенными, и поэтому многие методы для разбора HTML-парсеров/скреперов также работают здесь.
-
Снимок экрана с отображенных страниц, а затем с помощью OCR для извлечения нужного текста из снимка экрана. Они редки, и только специальные скребки, которые действительно хотят, чтобы ваши данные установили это.
-
Службы Webscraping, такие как ScrapingHub или Kimono. Фактически, есть люди, чья работа заключается в том, чтобы выяснить, как очистить свой сайт и вытащить контент для других пользователей.
Неудивительно, что профессиональные услуги по очистке наиболее трудно сдерживать, но если вы усложняете и занимаете много времени, чтобы выяснить, как очистить свой сайт, эти (и люди, которые платят им за это) не могут быть обеспокоены царапинами ваш сайт.
-
Внедрение вашего сайта на другие страницы сайта с кадрами и встраивание вашего сайта в мобильные приложения.
В то время как не технические скребки, мобильные приложения (Android и iOS) могут внедрять веб-сайты и внедрять пользовательские CSS и JavaScript, тем самым полностью изменяя внешний вид ваших страниц.
-
Копия - вставка: люди будут копировать и вставлять ваш контент, чтобы использовать его в другом месте.
Существует много совпадений между этими различными видами скребков, и многие скребки будут вести себя одинаково, даже если они используют разные технологии и методы.
В основном это мои собственные идеи, различные трудности, с которыми я столкнулся при написании скребок, а также фрагменты информации и идей со всего мира.
Как остановить выскабливание
Вы не можете полностью предотвратить это, так как все, что вы делаете, определило, что скребки все еще могут понять, как очистить. Тем не менее, вы можете остановить много царапин, сделав несколько вещей:
Мониторинг журналов и шаблонов трафика; ограничьте доступ, если увидите необычную активность:
Регулярно проверяйте свои журналы, а в случае необычной активности, указывающей на автоматический доступ (скребки), например много подобных действий с одного и того же IP-адреса, вы можете заблокировать или ограничить доступ.
В частности, некоторые идеи:
-
Ограничение скорости:
Разрешить пользователям (и скреперам) выполнять ограниченное количество действий за определенное время - например, разрешить только несколько запросов в секунду от любого конкретного IP-адреса или пользователя. Это замедлит скребки и сделает их неэффективными. Вы также можете показать капчу, если действия будут выполнены слишком быстро или быстрее, чем реальный пользователь.
-
Обнаружение необычной активности:
Если вы видите необычную активность, такую как много похожих запросов с определенного IP-адреса, кто-то смотрит на чрезмерное количество страниц или выполняет необычное количество поисков, вы можете запретить доступ или показать код для последующих запросов.
-
Не просто контролировать и ограничивать скорость по IP-адресу - также используйте другие индикаторы:
Если вы блокируете или ограничиваете скорость, не просто делайте это на основе IP-адреса; вы можете использовать другие индикаторы и методы для определения конкретных пользователей или скребок. Некоторые индикаторы, которые могут помочь вам определить конкретных пользователей/скребок, включают:
-
Как быстро пользователи заполняют формы и где на кнопке они нажимают:
-
Вы можете собрать много информации с помощью JavaScript, например размер экрана/разрешение, часовой пояс, установленные шрифты и т.д.; вы можете использовать это для идентификации пользователей.
-
HTTP-заголовки и их порядок, особенно User-Agent.
В качестве примера, если вы получаете много запросов от одного IP-адреса, все с использованием одного и того же User Agent, размера экрана (определяется с помощью JavaScript), а пользователь (скребок в этом случае) всегда нажимает кнопку в том же и через равные промежутки времени он, вероятно, скребок экрана; и вы можете временно блокировать подобные запросы (например, блокировать все запросы с этим пользовательским агентом и размер экрана, исходящие от этого конкретного IP-адреса), и таким образом вы не будете неудобны для реальных пользователей на этом IP-адресе, например. в случае общего доступа к Интернету.
Вы также можете принять это, так как вы можете идентифицировать подобные запросы, даже если они поступают из разных IP-адресов, что указывает на распределенное очищение (скребок с использованием бот-сети или сети прокси). Если вы получаете много других идентичных запросов, но они исходят из разных IP-адресов, вы можете блокировать. Опять же, имейте в виду, что мы не будем непреднамеренно блокировать реальных пользователей.
Это может быть эффективно против скриншотов, которые запускают JavaScript, так как вы можете получить от них много информации.
Связанные вопросы по Exchange Stack Exchange:
-
Вместо временного блокирования доступа используйте Captcha:
Простым способом реализации ограничения скорости будет временное блокирование доступа на определенный промежуток времени, однако использование Captcha может быть лучше, см. раздел о Captchas далее.
Требовать регистрации и входа в систему
Требовать создание учетной записи для просмотра вашего контента, если это возможно для вашего сайта. Это хороший сдерживающий фактор для скреперов, но также является хорошим сдерживающим фактором для реальных пользователей.
- Если вам требуется создание учетной записи и вход в систему, вы можете точно отслеживать действия пользователя и скребка. Таким образом, вы можете легко обнаружить, когда определенная учетная запись используется для очистки и запрета. Все упрощается, например, ограничение скорости или обнаружение злоупотреблений (например, огромное количество поисков за короткое время), так как вы можете определить конкретные скребки, а не только IP-адреса.
Чтобы избежать создания сценариев создания нескольких учетных записей, вы должны:
-
Требовать адрес электронной почты для регистрации и подтвердить адрес электронной почты, отправив ссылку, которая должна быть открыта для активации учетной записи. Разрешить только одну учетную запись на адрес электронной почты.
-
Требовать, чтобы captcha решался во время регистрации/создания учетной записи.
Требование создания учетной записи для просмотра содержимого приведет к отключению пользователей и поисковых систем; если вам требуется создание учетной записи для просмотра статьи, пользователи отправятся в другое место.
Блокировать доступ к облачным хостингом и очистке IP-адресов службы
Иногда скребки будут запускаться из услуг веб-хостинга, таких как веб-службы Amazon или GAE или VPSes. Ограничьте доступ к вашему сайту (или покажите captcha) для запросов, исходящих из IP-адресов, используемых такими облачными службами хостинга.
Аналогично, вы также можете ограничить доступ с IP-адресов, используемых прокси-серверами или провайдерами VPN, поскольку скребки могут использовать такие прокси-серверы, чтобы избежать обнаружения многих запросов.
Помните, что блокируя доступ с прокси-серверов и виртуальных частных сетей, вы негативно скажете на реальных пользователей.
Сделайте сообщение об ошибке незаметным, если вы блокируете
Если вы блокируете/ограничиваете доступ, вы должны убедиться, что вы не укажете скребок, что вызвало блок, тем самым давая им подсказки относительно того, как исправить их скребок. Поэтому неплохо было бы показывать страницы ошибок с текстом вроде:
-
Слишком много запросов с вашего IP-адреса, повторите попытку позже.
-
Ошибка, заголовок User Agent отсутствует!
Вместо этого покажите дружественное сообщение об ошибке, которое не сообщает скребку, что вызвало его. Что-то вроде этого намного лучше:
- Извините, что-то пошло не так. Вы можете связаться с помощью
[email protected]
, если проблема не исчезнет.
Это также намного удобнее для реальных пользователей, если они когда-либо видят такую страницу с ошибкой. Вы также должны рассмотреть возможность отображения капчей для последующих запросов вместо жесткого блока, если реальный пользователь увидит сообщение об ошибке, чтобы вы не блокировали и, следовательно, вызывали у вас законных пользователей.
Используйте Captchas, если вы подозреваете, что ваш сайт доступен скребком.
Captchas ( "Полностью автоматизированный тест, чтобы рассказать о компьютерах и людях" ) очень эффективны против остановки скребков. К сожалению, они также очень эффективны для раздражающих пользователей.
Как таковые, они полезны, когда вы подозреваете возможный скребок и хотите остановить скребок, а также не блокируете доступ, если он не скребок, а реальный пользователь. Возможно, вам стоит подумать о том, чтобы показать капчу, прежде чем разрешать доступ к контенту, если вы подозреваете скребок.
Что нужно знать при использовании Captchas:
-
Не сворачивайте себя, используйте что-то вроде Google reCaptcha: это намного проще, чем реализовать капчу, он более удобен для пользователя, чем какое-то размытое текстовое решение, которое вы могли бы придумать самим (пользователям часто нужно указывать только поле), а также гораздо сложнее решить скрипт, чем простое изображение, поданное с вашего сайта.
-
Не включайте решение для перекопа в HTML-разметке: на самом деле я видел один веб-сайт, на котором было решение для captcha на самой странице (хотя довольно хорошо скрыто), что делает его довольно бесполезным, Не делай ничего подобного. Опять же, используйте такую услугу, как reCaptcha, и у вас не будет такой проблемы (если вы ее правильно используете).
-
Captchas может быть решена навалом: есть услуги по перехвату подсказок, где фактические, низкооплачиваемые люди решат капчу навалом. Опять же, использование reCaptcha - хорошая идея здесь, так как у них есть защита (например, относительно короткое время, которое пользователь имеет для решения перехвата). Этот вид услуг вряд ли будет использоваться, если ваши данные действительно ценны.
Подавайте текстовое содержимое как изображение
Вы можете визуализировать текст на стороне сервера изображений и показывать его, что будет препятствовать простому скребущему, извлекающему текст.
Однако это плохо для чтения с экрана, поисковых систем, производительности и почти всего остального. Это также незаконно в некоторых местах (из-за доступности, например, Закона США об инвалидах), а также легко обойтись с некоторыми OCR, поэтому не делайте этого.
Вы можете сделать что-то подобное с CSS-спрайтами, но это страдает от тех же проблем.
Не раскрывайте полный набор данных:
Если это возможно, не предоставляйте способ script/bot получить весь ваш набор данных. В качестве примера: у вас есть новостной сайт с множеством отдельных статей. Вы можете сделать эти статьи доступными только путем поиска их с помощью поиска на сайте и, если у вас нет списка всех статей на сайте и их URL-адресов в любом месте, эти статьи будут доступны только с помощью поиска особенность. Это означает, что script, желающий получить все статьи с вашего сайта, должен будет выполнять поиск всех возможных фраз, которые могут появляться в ваших статьях, чтобы найти их все, что будет трудоемким, ужасно неэффективным и будет надеемся, что скребок сдастся.
Это будет неэффективно, если:
- Бот / script в любом случае не хочет/нуждается в полном наборе данных.
- Ваши статьи подаются с URL-адреса, который выглядит примерно как
example.com/article.php?articleId=12345
. Это (и подобные вещи), которые позволят скреперам просто перебирать все articleId
и запрашивать все статьи таким образом.
- Есть и другие способы в конечном итоге найти все статьи, например, написать script, чтобы следовать ссылкам в статьях, которые приводят к другим статьям.
- Поиск чего-то типа "и" или "" может выявить почти все, так что это то, о чем нужно знать. (Вы можете избежать этого, только вернув 10 или 20 результатов).
- Вам нужны поисковые системы, чтобы найти ваш контент.
Не подвергайте свои API, конечные точки и подобные вещи:
Убедитесь, что вы не раскрываете какие-либо API, даже непреднамеренно. Например, если вы используете AJAX или сетевые запросы из Adobe Flash или Java-апплетов (не дай бог!), Чтобы загрузить ваши данные, тривиально посмотреть на сетевые запросы со страницы и выяснить, куда идут эти запросы, и затем перепроектировать и использовать эти конечные точки в программе скребка. Убедитесь, что вы обфускаете конечные точки и затрудняете их использование другими, как описано.
Чтобы сдержать анализаторы и скребки HTML:
Так как парсеры HTML работают путем извлечения содержимого из страниц на основе идентифицируемых шаблонов в HTML, мы можем намеренно изменить эти шаблоны в другом, чтобы сломать эти скребки или даже прикрутить их. Большинство этих советов также применимы и к другим скреперам, таким как пауки и скриншоты.
Часто меняйте свой HTML
Скребки, обрабатывающие HTML, напрямую делают это, извлекая содержимое из определенных идентифицируемых частей вашей HTML-страницы. Например: если на всех страницах вашего сайта есть div
с идентификатором article-content
, который содержит текст статьи, тогда тривиально написать script, чтобы просмотреть все страницы статей на вашем сайте, и извлекать текст содержания article-content
div на каждой странице статьи, а voilà, скребок содержит все статьи с вашего сайта в формате, который можно использовать повторно в другом месте.
Если вы часто меняете HTML и структуру своих страниц, такие скребки больше не будут работать.
-
Вы можете часто менять id и классы элементов в вашем HTML, возможно, даже автоматически. Итак, если ваш div.article-content
становится чем-то вроде div.a4c36dda13eaf0
и меняется каждую неделю, скребок будет работать нормально, но будет разорваться через неделю. Не забудьте также изменить длину ваших идентификаторов/классов, иначе скребок будет использовать div.[any-14-characters]
, чтобы найти нужный div. Остерегайтесь других подобных отверстий тоже.
-
Если нет способа найти желаемый контент из разметки, скребок будет делать это по тому, как структурирован HTML. Итак, если все ваши страницы статей похожи друг на друга, каждый div
внутри div
, который появляется после того, как h1
является содержимым статьи, скребки будут получать контент статьи на основе этого. Опять же, чтобы разбить это, вы можете добавлять/удалять дополнительную разметку в свой HTML, периодически и случайным образом, например. добавляя дополнительные div
или span
s. С современной обработкой HTML на стороне сервера это не должно быть слишком сложно.
Что нужно знать:
-
Будет утомительно и сложно реализовать, поддерживать и отлаживать.
-
Вы будете препятствовать кешированию. Особенно, если вы измените идентификаторы или классы ваших HTML-элементов, для этого потребуются соответствующие изменения в ваших CSS файлах и файлах JavaScript, а это означает, что каждый раз, когда вы их изменяете, они должны быть повторно загружены браузером. Это приведет к увеличению времени загрузки страницы для повторных посетителей и увеличению загрузки сервера. Если вы меняете его только раз в неделю, это не будет большой проблемой.
-
Умные скребки все равно смогут получить ваш контент, указав, где находится фактический контент, например. зная, что большой единый блок текста на странице, вероятно, будет фактической статьей. Это позволяет находить и извлекать нужные данные со страницы. Boilerpipe делает именно это.
По существу, убедитесь, что для script нелегко найти фактический желаемый контент для каждой подобной страницы.
См. также Как запретить искателям в зависимости от XPath получать содержимое страницы для получения подробной информации о том, как это можно реализовать в PHP.
Измените свой HTML на основе местоположения пользователя
Это похоже на предыдущий совет. Если вы обслуживаете разные HTML файлы на основе вашего местоположения/страны вашего пользователя (определяется по IP-адресу), это может сломать скребки, которые доставляются пользователям. Например, если кто-то пишет мобильное приложение, которое сбрасывает данные с вашего сайта, оно будет работать нормально, но прерывается, когда оно действительно будет распространено среди пользователей, поскольку эти пользователи могут находиться в другой стране и, таким образом, получать разные HTML-коды, которые встроенный скребок не предназначен для потребления.
Часто меняйте свой HTML, активно закручивайте скребки, делая это!
Пример. У вас есть функция поиска на вашем веб-сайте, расположенная в example.com/search?query=somesearchquery
, которая возвращает следующий HTML:
<div class="search-result">
<h3 class="search-result-title">Qaru has become the world most popular programming Q & A website</h3>
<p class="search-result-excerpt">The website Qaru 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)
Как вы, возможно, догадались, это легко очистить: все, что нужно сделать скребком, - это нажать поисковый URL с запросом и извлечь нужные данные из возвращаемого HTML. В дополнение к периодическому изменению HTML, как описано выше, вы также можете оставить старую разметку со старыми идентификаторами и классами, скрыть ее с помощью CSS и заполнить ее поддельными данными, тем самым отравив скребок. Здесь можно изменить страницу результатов поиска:
<div class="the-real-search-result">
<h3 class="the-real-search-result-title">Qaru has become the world most popular programming Q & A website</h3>
<p class="the-real-search-result-excerpt">The website Qaru 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 Qaru 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)
Это будет означать, что скребки, написанные для извлечения данных из HTML на основе классов или идентификаторов, будут по-прежнему работать, но они получат поддельные данные или даже объявления, данные, которые реальные пользователи никогда не смогут увидеть, поскольку они скрыты CSS.
Винт со скребком: вставьте поддельные, невидимые данные honeypot на вашу страницу
Добавляя к предыдущему примеру, вы можете добавить невидимые элементы honeypot в свой HTML, чтобы поймать скребки. Пример, который можно добавить к ранее описанной странице результатов поиска:
<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.)
Скребок, написанный для получения всех результатов поиска, выберет это, как и любой другой, реальные результаты поиска на странице и перейдите по ссылке, ища желаемый контент. Настоящий человек никогда даже не увидит его в первую очередь (из-за того, что он скрыт с помощью CSS), и не будет посещать ссылку. Настоящий и желательный паук, такой как Google, не будет посещать ссылку либо потому, что вы запретили /scrapertrap/
в вашем файле robots.txt.
Вы можете сделать свой scrapertrap.php
что-то вроде блокированного доступа для IP-адреса, который его посетил, или заставить captcha для всех последующих запросов с этого IP-адреса.
-
Не забудьте запретить ваш honeypot (/scrapertrap/
) в файле robots.txt, чтобы роботы поисковых систем не попадали в него.
-
Вы можете/должны сочетать это с предыдущим советом частое изменение HTML.
-
Измените это часто, так как скребки в конечном итоге научатся его избегать. Измените URL-адрес и текст honeypot. Также хочу рассмотреть возможность изменения встроенного CSS, используемого для скрытия, и вместо этого использовать атрибут ID и внешний CSS, поскольку скребки будут учиться избегать всего, что имеет атрибут style
с CSS, используемый для скрытия содержимого. Также попробуйте только включить его иногда, так что скребок работает изначально, но через некоторое время ломается. Это также относится к предыдущему совету.
-
Вредоносные пользователи могут запретить доступ для реальных пользователей, поделившись ссылкой на ваш honeypot или даже включив эту ссылку где-нибудь в качестве изображения (например, на форум). Часто меняйте URL-адрес и делайте время запрета относительно коротким.
Подавать поддельные и бесполезные данные, если вы обнаружите скребок
Если вы обнаружите, что, очевидно, скребок, вы можете обслуживать поддельные и бесполезные данные; это испортит данные, которые скребок получает с вашего сайта. Вы также должны сделать невозможным отличать такие поддельные данные от реальных данных, чтобы скребки не знали, что их прикручивают.
В качестве примера: у вас есть новостной сайт; если вы обнаружите скребок, а не блокируете доступ, подавайте поддельные, случайно сгенерированныестатей, и это отравит данные, которые получает скребок. Если вы сделаете свои поддельные данные неотличимыми от реальной вещи, вам будет сложно скребки получить то, что они хотят, а именно реальные, реальные данные.
Не принимать запросы, если Пользовательский агент пуст/отсутствует
Часто лениво написанные скребки не отправляют заголовок User Agent с их запросом, тогда как все браузеры, а также пауки поисковых систем будут.
Если вы получите запрос, в котором отсутствует заголовок User Agent, вы можете показать капчу или просто заблокировать или ограничить доступ. (Или используйте поддельные данные, как описано выше, или что-то еще.)
Это тривиально для подмены, но в качестве меры против плохо написанных скребков это стоит реализовать.
Не принимать запросы, если Пользовательский агент является общим скребковым; черные списки, используемые скреперами
В некоторых случаях скребки будут использовать User Agent, который не использует ни один браузер для браузера или поискового сервера, например:
- "Mozilla" (Только это, больше ничего. Я видел несколько вопросов о том, чтобы очистить здесь, используя это. Настоящий браузер никогда не будет использовать только это)
- "Java 1.7.43_u43" (по умолчанию Java HttpUrlConnection использует что-то вроде этого.)
- "BIZCO EasyScraping Studio 2.0"
- "wget", "curl", "libcurl",.. (Wget и cURL иногда используются для базового выскабливания)
Если вы обнаружите, что специальная строка User Agent используется скреперами на вашем сайте и не используется настоящими браузерами или законными пауками, вы также можете добавить их в свой черный список.
Если он не запрашивает активы (CSS, изображения), это не настоящий браузер.
Реальный браузер (почти всегда) запрашивает и загружает такие активы, как изображения и CSS. Анализаторы и скребки HTML не будут, поскольку их интересуют только фактические страницы и их содержимое.
Вы можете записывать запросы в свои активы, и если вы видите много запросов только для HTML, это может быть скребок.
Помните, что боты поисковых систем, древние мобильные устройства, устройства чтения с экрана и неправильно сконфигурированные устройства могут также не запрашивать активы.
Использовать и требовать файлы cookie; использовать их для отслеживания действий пользователя и скребка.
Для просмотра вашего веб-сайта вы можете потребовать, чтобы файлы cookie были включены. Это сдерживает неопытных и новичков-скребок, однако скребок легко отправлять куки. Если вы их используете и требуете, вы можете отслеживать действия пользователей и скребок с ними и, таким образом, выполнять ограничение скорости, блокирование или отображение captchas для каждого пользователя, а не для каждого IP-адреса.
Например: когда пользователь выполняет поиск, установите уникальный идентификатор cookie. Когда страницы результатов просматриваются, убедитесь, что файлы cookie. Если пользователь открывает все результаты поиска (вы можете указать из файла cookie), то это, вероятно, скребок.
Использование файлов cookie может быть неэффективным, так как скребки могут отправлять файлы cookie с их запросами и отбрасывать их по мере необходимости. Вы также запретите доступ для реальных пользователей, у которых отключены файлы cookie, если ваш сайт работает только с кукисами.
Обратите внимание: если вы используете JavaScript для установки и получения файла cookie, вы будете блокировать скребки, которые не запускают JavaScript, поскольку они не могут получить и отправить файл cookie с их запросом.
Используйте JavaScript + Ajax для загрузки вашего контента
Вы можете использовать JavaScript + AJAX для загрузки контента после загрузки самой страницы. Это сделает контент недоступным для парсеров HTML, которые не запускают JavaScript. Это часто является эффективным сдерживающим фактором для новичков и неопытных программистов, создающих скребки.
Знать:
-
Использование JavaScript для загрузки фактического содержимого ухудшит работу и производительность пользователя
-
Поисковые системы могут не запускать JavaScript, тем самым предотвращая их индексирование вашего контента. Это может быть не проблема для страниц результатов поиска, но может быть и для других вещей, таких как страницы статей.
Обфускайте свою разметку, сетевые запросы из скриптов и все остальное.
Если вы используете Ajax и JavaScript для загрузки ваших данных, обфускайте передаваемые данные. Например, вы можете кодировать свои данные на сервере (с чем-то простым, как base64 или более сложным), а затем декодировать и отображать его на клиенте после извлечения через Ajax. Это будет означать, что кто-то, кто проверяет сетевой трафик, не сразу увидит, как работает ваша страница и загружает данные, и для кого-то будет труднее напрямую запрашивать данные запроса с ваших конечных точек, так как им придется реконструировать алгоритм дескремблирования.
-
Если вы используете Ajax для загрузки данных, вам необходимо будет использовать конечные точки без первой загрузки страницы, например, если требуется какой-либо ключ сеанса в качестве параметра, который вы можете встроить в свой JavaScript или ваш HTML.
-
Вы также можете вставлять свои запутанные данные непосредственно на начальную HTML-страницу и использовать JavaScript для деобфускации и отображения, что позволит избежать дополнительных сетевых запросов. Выполнение этого значительно усложнит извлечение данных с помощью анализатора HTML, который не запускает JavaScript, поскольку тот, кто пишет скребок, должен будет перепроектировать ваш JavaScript (который вы также должны запутывать).
-
Вы можете регулярно менять методы обфускации, чтобы сломать скребки, которые это поняли.
Есть несколько недостатков в том, чтобы делать что-то вроде этого:
-
Будет утомительно и сложно реализовать, поддерживать и отлаживать.
-
Это будет неэффективно в отношении скребок и экранов, которые фактически запускают JavaScript, а затем извлекают данные. (Большинство простых парсеров HTML не запускают JavaScript, хотя)
-
Это сделает ваш сайт нефункциональным для реальных пользователей, если у них отключен JavaScript.
-
Производительность и время загрузки страницы будут страдать.
Нетехническое:
-
Скажите людям, чтобы они не царапались, а некоторые будут уважать его
-
Найдите адвоката
-
Сделайте ваши данные доступными, предоставите API:
Вы можете сделать ваши данные легко доступными и потребовать атрибуцию и ссылку на свой сайт. Возможно, за него стоит $$$.
Разное:
-
Существуют также коммерческие службы защиты от скремблирования, такие как anti-scraping от Cloudflare или Distill Networks (Подробнее о том, как это работает здесь), которые делают эти вещи и больше для вас.
-
Найдите баланс между удобством использования для реальных пользователей и скреперами: все, что вы делаете, будет отрицательно влиять на пользовательский опыт так, чтобы найти компромиссы.
-
Не забудьте свой мобильный сайт и приложения. Если у вас есть мобильное приложение, которое также может быть экранировано, и сетевой трафик может быть проверен для определения конечных точек REST, которые он использует.
-
Скребки могут царапать другие скребки: если есть один веб-сайт, у которого есть содержимое, соскоблившееся от вашего, другие скребки могут царапаться с этого сайта скребка.
Дальнейшее чтение:
Ответ 3
Сью.
Серьезно: если у вас есть деньги, поговорите с хорошим, милым, молодым адвокатом, который знает дорогу через Интернет. Вы действительно могли бы что-то сделать здесь. В зависимости от того, где основаны сайты, вы могли бы написать адвокату о прекращении и воздержании или о его эквиваленте в вашей стране. Возможно, вы сможете хотя бы напугать ублюдков.
Документируйте вставку ваших фиктивных значений. Вставьте фиктивные значения, которые ясно (но неясно) указывают на вас. Я думаю, что это обычная практика с компаниями телефонной книги, и здесь, в Германии, я думаю, что было несколько случаев, когда подражатели попали под фальшивые записи, которые они скопировали 1:1.
Было бы обидно, если бы это привело вас к испортить ваш HTML-код, перетащив SEO, действительность и другие вещи (хотя система шаблонов, которая использует немного другую структуру HTML для каждого запроса на одинаковые страницы, может уже помочь много против скребок, которые всегда полагаются на структуры HTML и имена классов/идентификаторов, чтобы получить содержимое.)
Случаи, подобные этому, являются законами об авторском праве. Срывая с других людей честную работу, чтобы заработать деньги, с чем-то, с чем вы должны бороться.
Ответ 4
На самом деле вы ничего не можете сделать, чтобы полностью предотвратить это. Скребки могут подделывать свой пользовательский агент, использовать несколько IP-адресов и т.д. И отображаться как обычный пользователь. Единственное, что вы можете сделать, это сделать текст недоступным в момент загрузки страницы - сделать его с изображением, вспышкой или загрузить его с помощью JavaScript. Однако первые два являются плохими идеями, и последний из них будет проблемой доступности, если JavaScript не включен для некоторых ваших обычных пользователей.
Если они абсолютно захлопывают ваш сайт и нажимают на все ваши страницы, вы можете сделать какое-то ограничение скорости.
Однако есть надежда. Скреперы полагаются на данные вашего сайта в согласованном формате. Если бы вы могли его рандомизировать, это могло бы сломать их скребок. Такие вещи, как изменение идентификаторов или имен классов элементов страницы при каждой загрузке и т.д. Но это большая работа, и я не уверен, стоит ли это. И даже тогда они могли бы обойти это с достаточной преданностью.
Ответ 5
Предоставить XML-API для доступа к вашим данным; таким образом, который прост в использовании. Если люди хотят ваши данные, они получат это, вы можете также изо всех сил.
Таким образом вы можете обеспечить подмножество функциональных возможностей эффективным образом, гарантируя, что, по крайней мере, скребки не будут обрабатывать HTTP-запросы и массивные объемы полосы пропускания.
Затем все, что вам нужно сделать, - убедить людей, которые хотят, чтобы ваши данные использовали API.;)
Ответ 6
Извините, это действительно довольно сложно сделать...
Я бы предположил, что вы вежливо попросите их не использовать ваш контент (если ваш контент защищен авторским правом).
Если это так, и они не снимают его, то вы можете предпринять действия furthur и отправить им прекратить и отказаться от письма.
Как правило, все, что вы делаете, чтобы предотвратить выскабливание, вероятно, окажет более отрицательное воздействие, например. доступность, боты/пауки и т.д.
Ответ 7
Хорошо, как говорят все сообщения, если вы хотите сделать его удобным для поисковых систем, то боты могут скреститься наверняка.
Но вы все еще можете сделать несколько вещей, и это может быть аффективным для 60-70% ботов скремблирования.
Сделайте checker script, как показано ниже.
Если конкретный IP-адрес посещает очень быстро, то после нескольких посещений (5-10) поместите свой IP-адрес + информацию обозревателя в файл или базу данных.
Следующий шаг
(Это будет фоновый процесс и будет выполняться все время или по расписанию через несколько минут.) Сделайте еще один script, который будет проверять эти подозрительные IP-адреса.
Случай 1. Если пользовательский агент имеет известную поисковую систему, такую как Google, Bing, Yahoo (дополнительную информацию об агентах пользователей можно найти по ссылке в Google). Затем вы должны увидеть http://www.iplists.com/. Этот список и попробуйте сопоставить шаблоны. И если это похоже на фальшивый пользовательский агент, попросите заполнить CAPTCHA при следующем посещении. (Вам нужно исследовать немного больше на IP-адресах ботов. Я знаю, что это достижимо, а также попробуйте whois IP-адреса. Это может быть полезно.)
Случай 2. Нет агента пользователя поискового робота: просто попросите заполнить CAPTCHA при следующем посещении.
Ответ 8
Ваш лучший вариант, к сожалению, довольно ручной: посмотрите на шаблоны трафика, которые, по вашему мнению, свидетельствуют о скремблировании и запрещении их IP-адресов.
Поскольку вы говорите об общедоступном сайте, то создание дружественной поисковой системы сайта также сделает сайт удобным для соскабливания. Если поисковая система может сканировать и очистить ваш сайт, тогда может быть и вредоносный скребок. Это тонкая линия для ходьбы.
Ответ 9
Я сделал много веб-соскабливания и обобщил некоторые методы чтобы остановить веб-скребки в моем блоге, основываясь на том, что я нахожу раздражающим.
Это компромисс между вашими пользователями и скреперами. Если вы ограничиваете IP-адреса, используйте CAPTCHA, требуется логин и т.д., Вы делаете сложным для скребки. Но это также может отвлечь ваших настоящих пользователей.
Ответ 10
С технической точки зрения:
Просто смоделируйте то, что делает Google, когда вы нажимаете на них слишком много запросов одновременно. Это должно положить конец многим из них.
С юридической точки зрения:
Похоже, что данные, которые вы публикуете, не являются собственностью. Это означает, что вы публикуете имена и статистику и другую информацию, которая не может быть защищена авторским правом.
Если это так, скребки не нарушают авторские права, перераспределяя вашу информацию о имени исполнителя и т.д. Однако они могут нарушать авторские права при загрузке вашего сайта в память, поскольку ваш сайт содержит элементы, которые защищены авторским правом (например, макет и т.д.).).
Я рекомендую прочитать о Facebook v. Power.com и увидеть аргументы, которые Facebook использовал, чтобы остановить очистку экрана. Есть много юридических способов, по которым вы можете попытаться помешать кому-либо соскоблить ваш сайт. Они могут быть далеко идущими и творческими. Иногда суды покупают аргументы. Иногда они этого не делают.
Но, предполагая, что вы публикуете информацию о общедоступном домене, которая не защищена авторскими правами, например, имена и базовая статистика... вы должны просто позволить ей перейти от имени свободной речи и открытых данных. То есть, что все в Сети.
Ответ 11
Вещи, которые могут работать против начинающих скребок:
- Блокировка IP-адресов
- используйте много ajax
- проверить заголовок запроса Referer
- требуется логин
Вещи, которые помогут в целом:
- меняйте свой макет каждую неделю.
- robots.txt
Вещи, которые помогут, но заставят ваших пользователей ненавидеть вас:
Ответ 12
Поздний ответ - и этот ответ, вероятно, не тот, который вы хотите услышать...
Я уже написал много (много десятков) разных специализированных скребок для обработки данных. (только потому, что мне нравится философия "открытых данных" ).
Вот уже много советов в других ответах - теперь я буду играть роль защитника дьявола, и будет расширять и/или корректировать их эффективность.
Во-первых:
- если кто-то действительно хочет ваши данные
- вы не можете эффективно (технически) скрыть свои данные
- если данные должны быть общедоступны для ваших "обычных пользователей"
Попытка использовать некоторые технические барьеры не стоит проблем, вызванных:
- вашим обычным пользователям, ухудшая их пользовательский опыт.
- для регулярных и приветственных ботов (поисковых систем)
- и т.д...
Обычный HMTL - самый простой способ - проанализировать простые HTML-страницы с четко определенной структурой и классами css. Например. достаточно проверить элемент с помощью Firebug и использовать правые Xpaths и/или CSS-путь в моем скрепе.
Вы можете динамически генерировать структуру HTML, а также динамически генерировать имена классов CSS (и сам CSS) (например, используя некоторые случайные имена классов) - но
- вы должны предоставлять информацию своим постоянным пользователям согласованным образом.
- например. снова - достаточно проанализировать структуру страницы еще раз, чтобы настроить скребок.
- и это можно сделать автоматически, проанализировав некоторый "уже известный контент",
- как только кто-то уже знает (более ранним скрежетом), например:
- что содержит информацию о "phil collins"
- достаточно отобразить страницу "phil collins" и (автоматически) проанализировать, как страница структурирована "сегодня":)
Вы не можете изменить структуру для каждого ответа, потому что ваши обычные пользователи будут вас ненавидеть. Кроме того, это вызовет больше неприятностей для вас (обслуживание), а не для скребка. Путь XPath или CSS определяется с помощью scraping script автоматически из известного содержимого.
Ajax - немного сложнее в начале, но во многих случаях ускоряет процесс скремблирования:) - почему?
При анализе запросов и ответов я просто настраиваю свой собственный прокси-сервер (написанный на perl), и мой firefox использует его. Конечно, потому что это мой собственный прокси-сервер - он полностью скрыт - целевой сервер видит его как обычный браузер. (Итак, нет X-Forwarded-for и таких заголовков).
Основываясь на протоколах прокси-сервера, в основном можно определить "логику" запросов ajax, например. я мог бы пропустить большую часть html-скрепок и просто использовать хорошо структурированные ответы ajax (в основном в формате JSON).
Итак, ajax не очень помогает...
Некоторые более сложные страницы, которые используют много упакованные функции javascript.
Здесь можно использовать два основных метода:
- распакуйте и поймите JS и создайте скребок, который следует логике Javascript (трудный путь)
- или (предпочтительно, используя его самостоятельно) - просто используйте Mozilla с Mozrepl для очистки. Например. реальное выскабливание выполняется в полнофункциональном браузере с поддержкой javascript, который запрограммирован на щелчок на нужные элементы и просто захватывает "декодированные" ответы непосредственно из окна браузера.
Такая очистка медленная (очистка выполняется как в обычном браузере), но она
- очень легко настроить и использовать
- и почти невозможно противостоять ему:)
- и "медленность" необходима в любом случае для противодействия "блокировке быстрых одинаковых запросов на основе IP"
Фильтрация User-Agent не помогает вообще. Любой серьезный шахматист данных установит его на какой-то правильный в своем скрепе.
Требовать Логин - не помогает. Самый простой способ избить его (без какого-либо анализа и/или написания протокола входа) - это просто войти в сайт как обычный пользователь, используя Mozilla и после запуска скребка на основе Mozrepl...
Помните, что запрос для входа в систему помогает анонимным ботам, но не помогает против кого-то, кто хочет очистить ваши данные. Он просто регистрируется на вашем сайте как обычный пользователь.
Использование фреймовтакже не очень эффективен. Это используется многими живыми фильмами, и это не очень сложно победить. Фреймы - это просто еще одна страница HTML/Javascript, что необходимо для анализа... Если данные, стоящие на проблемах, - данные-шахтер выполнит необходимый анализ.
Ограничение на основе IP неэффективно - здесь слишком много общедоступных прокси-серверов, а также здесь TOR...:) Это не замедляет выскабливание (для кого-то кто действительно хочет ваши данные).
Очень сложно скопировать данные, скрытые в изображениях. (например, просто преобразование данных в серверы изображений). Использование "tesseract" (OCR) помогает много раз, но, честно говоря, данные должны стоить проблем для скребка. (что много раз не стоит).
С другой стороны, ваши пользователи будут ненавидеть вас за это. Я сам (даже когда не соскабливаю) ненавижу веб-сайты, которые не позволяют скопировать содержимое страницы в буфер обмена (потому что информация находится в образах или (глупых), пытающихся связать правой кнопкой мыши какое-то пользовательское событие Javascript.: )
Наиболее сложными являются сайты, которые используют Java-апплеты или flash, и апплет использует внутренние запросы secure https. Но подумайте дважды - насколько счастливы ваши пользователи iPhone...;). Поэтому в настоящее время их очень мало сайтов. Я сам блокирую весь флэш-контент в своем браузере (в обычных сеансах просмотра) - и никогда не использую сайты, зависящие от Flash.
Ваши вехи могут быть..., поэтому вы можете попробовать этот метод - просто помните - вы, вероятно, потеряете некоторых своих пользователей. Также помните, что некоторые файлы SWF декомпилируются.;)
Captcha (хорошие - например, reCaptcha) очень помогает - но ваши пользователи будут вас ненавидеть... - представьте себе, как ваши пользователи будут любить вас, когда им нужно решить какие-то капли во всех страницы с информацией о музыкантах.
Вероятно, вам не нужно продолжать - вы уже попали в картину.
Теперь, что вы должны сделать:
Помните: почти невозможно скрыть свои данные, если вы с другой стороны хотите опубликовать их (по-дружески) своим обычным пользователям.
Итак,
- сделать ваши данные доступными - по некоторым API
- это обеспечивает легкий доступ к данным.
- например. выгрузите свой сервер из соскабливания - хорошо для вас
- установить правильные права использования (например, например, указать источник)
- помните, что многие данные не защищены авторскими правами - и их трудно защитить.
- добавить некоторые поддельные данные (как вы уже сделали) и использовать юридические инструменты
- как уже говорили другие, отправьте "сообщение о прекращении и прекращении"
- другие юридические действия (иск и т.п.), вероятно, слишком дорогостоящи и трудны для победы (особенно против неамериканских сайтов).
Подумайте дважды, прежде чем пытаться использовать некоторые технические барьеры.
Скорее, как попытка блокировать данных-шахтеров, просто добавьте больше усилий для удобства использования вашего сайта. Ваш пользователь будет любить вас. Время (& энергия), инвестированное в технические барьеры, обычно не стоит - лучше потратить время, чтобы сделать еще лучший веб-сайт...
Кроме того, воры данных не похожи на обычных воров.
Если вы покупаете недорогую домашнюю тревогу и добавляете предупреждение "этот дом связан с полицией" - многие воры даже не попытаются проникнуть. Потому что он ошибается, и он садится в тюрьму...
Итак, вы инвестируете всего несколько долларов, но вор инвестирует и рискует много.
Но данные-воры не имеют таких рисков. как раз наоборот: если вы совершаете неправильный ход (например, если вы вводите некоторый BUG в результате технических барьеров), вы потеряете своих пользователей. Если очищающий бот не будет работать в первый раз, ничего не произойдет - шахтер данных просто попробует другой подход и/или отладит script.
В этом случае вам нужно инвестировать гораздо больше - и скребок инвестирует гораздо меньше.
Просто подумайте, где вы хотите инвестировать свое время и энергию...
Ps: английский не мой родной - так простите мой сломанный английский...
Ответ 13
Конечно, это возможно. За 100% -ный успех заведите свой сайт в автономном режиме.
На самом деле вы можете сделать некоторые вещи, которые затрудняют соскабливание. Google делает проверку браузера, чтобы убедиться, что вы не робот, соскабливающий результаты поиска (хотя это, как и все остальное, может быть подделано).
Вы можете делать такие вещи, как несколько секунд между первым подключением к вашему сайту и последующими щелчками. Я не уверен, какое идеальное время было бы или как это сделать, но эта другая идея.
Я уверен, что есть несколько других людей, у которых гораздо больше опыта, но я надеюсь, что эти идеи, по крайней мере, будут несколько полезными.
Ответ 14
Есть несколько вещей, которые вы можете сделать, чтобы попытаться предотвратить скрипинг экрана. Некоторые из них не очень эффективны, в то время как другие (CAPTCHA), но препятствуют удобству использования. Вы должны также помнить, что это может помешать законным скреперам сайтов, таким как индексы поисковых систем.
Однако, я предполагаю, что если вы не хотите, чтобы это очищало, это означает, что вы не хотите, чтобы поисковые системы также индексировали его.
Вот некоторые вещи, которые вы можете попробовать:
- Показать текст в изображении. Это достаточно надёжно и не так больно для пользователя, как CAPTCHA, но означает, что они не смогут вырезать и вставлять, и он не будет масштабироваться красиво или быть доступным.
- Используйте CAPTCHA и требуйте, чтобы он был завершен, прежде чем возвращать страницу. Это надежный метод, но также и самая большая боль, чтобы наложить на пользователя.
- Требовать от пользователя регистрации учетной записи перед просмотром страниц и подтверждения их адреса электронной почты. Это будет довольно эффективно, но не полностью - экранный скребок может настроить учетную запись и может умело запрограммировать их script для входа в систему для них.
- Если строка пользовательского агента клиента пуста, заблокируйте доступ. Скребок сайта script часто будет запрограммирован лениво и не будет устанавливать строку пользовательского агента, тогда как все веб-браузеры будут.
- Вы можете настроить черный список известных строк пользовательского агента скрепера, когда вы их обнаружите. Опять же, это поможет только лениво кодированным; программист, который знает, что он делает, может установить строку пользовательского агента для олицетворения веб-браузера.
- Часто меняйте URL-адрес. Когда вы меняете его, убедитесь, что старый работает, но только до тех пор, пока у одного пользователя, возможно, откроется браузер. Невозможно предсказать, каким будет новый URL-адрес. Это затруднит выполнение скриптов, если их URL жестко закодирован. Было бы лучше сделать это с помощью своего рода script.
Если бы мне пришлось это сделать, я бы, вероятно, использовал комбинацию из трех последних, потому что они сводят к минимуму неудобства для законных пользователей. Тем не менее, вы должны согласиться с тем, что вы не сможете блокировать всех таким образом, и как только кто-то выяснит, как обойти его, они смогут наскрести его навсегда. Вы могли бы просто попытаться заблокировать свои IP-адреса, как вы их обнаружите, я думаю.
Ответ 15
- Нет, невозможно остановить (каким-либо образом)
- Обнимите его. Почему бы не публиковать как RDFa и не стать супер-поисковой системой и поощрять повторное использование данных? Люди будут благодарить вас и предоставлять кредит там, где это необходимо (см. Musicbrainz в качестве примера).
Это не тот ответ, который вы, вероятно, хотите, но зачем скрыть то, что вы пытаетесь сделать общедоступным?
Ответ 16
Метод один (только для небольших сайтов):
Слушайте зашифрованные/закодированные данные.
Я просматриваю веб-страницы с помощью python (urllib, запросы, beautifulSoup и т.д.) И обнаружил множество веб-сайтов, которые обслуживают зашифрованные/закодированные данные, которые не дешифруются на любом языке программирования просто потому, что метод шифрования не существует.
Я достиг этого на веб-сайте PHP, зашифровав и минимизируя вывод (ПРЕДУПРЕЖДЕНИЕ: это не очень хорошая идея для больших сайтов), ответ всегда был беспорядочным.
Пример минимизации вывода в PHP (Как минимизировать вывод HTML-страницы php-страницы?):
<?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");
?>
Метод второй:
Если вы не можете остановить их, закрутите их, чтобы они служили поддельными/бесполезными данными в качестве ответа.
Метод третий:
блокируйте общие пользовательские агенты очистки, вы увидите это на крупных/крупных веб-сайтах, так как невозможно очистить их с помощью "python3.4" в качестве пользователя-агента.
Метод четыре:
Убедитесь, что все заголовки пользователей действительны, я иногда предоставляю как можно больше заголовков, чтобы сделать мой скребок похожим на аутентичного пользователя, некоторые из них даже не верны или не верны, как en-FU:).
Вот список некоторых заголовков, которые я обычно предоставляю.
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"
}
Ответ 17
Вместо черных списков ботов, возможно, вы должны их белыми списками. Если вы не хотите убивать результаты поиска для самых популярных движков, вы можете перечислить их строки-пользовательские агенты, которые, как правило, широко освещаются. Менее этические боты склонны подделывать строки пользовательских агентов популярных веб-браузеров. Лучшие поисковые системы должны превышать 95% трафика.
Идентификация самих ботов должна быть довольно простой, используя методы, предлагаемые другими плакатами.
Ответ 18
Быстрый подход к этому будет заключаться в том, чтобы установить ловушку для мигания/бота.
-
Сделайте страницу, которая, если она откроется определенное количество раз или даже будет открыта вообще, соберет определенную информацию, такую как IP и еще что-то (вы также можете рассмотреть неровности или шаблоны, но эта страница не должна быть открыт вообще).
-
Сделайте ссылку на это на своей странице, которая скрыта с отображением CSS: none; или слева: -9999px; положение: абсолютное; попробуйте поместить его в места, которые вряд ли будут игнорироваться, например, когда ваш контент попадает под вас, а не в нижний колонтитул, поскольку иногда боты могут забыть о некоторых частях страницы.
-
В файле robots.txt задается целая последовательность правил запрета на страницы, на которых вы не хотите дружественных ботов (LOL, например, у них есть счастливые лица!), чтобы собирать информацию и задавать эту страницу как один из них,
-
Теперь, если приходит дружественный бот, он должен игнорировать эту страницу. Правильно, но это все еще недостаточно. Сделайте еще пару этих страниц или каким-то образом переадресовывайте страницу, чтобы принимать разные имена. а затем поместите больше запрещающих правил на эти страницы ловушек в файле robots.txt вместе с страницами, которые вы хотите игнорировать.
-
Соберите IP-адрес этих ботов или всех, кто входит на эти страницы, не запрещайте их, а создавайте функцию для отображения в вашем тексте лапшированного текста, например, случайных чисел, уведомлений об авторских правах, конкретных текстовых строк, отображения страшных изображений, в основном все, что мешает вашему хорошему контенту. Вы также можете установить ссылки, указывающие на страницу, которая будет навсегда загружаться, т.е. в php вы можете использовать функцию sleep(). Это будет бороться с искателем назад, если у него есть своего рода обнаружение, чтобы обойти страницы, которые слишком долго загружаются, так как некоторые хорошо написанные боты настроены на обработку X количества ссылок за раз.
-
Если вы сделали конкретные текстовые строки/предложения, почему бы не перейти в вашу любимую поисковую систему и не найти их, это может показать вам, где заканчивается ваш контент.
В любом случае, если вы думаете тактически и творчески, это может быть хорошей отправной точкой. Лучше всего было бы узнать, как работает бот.
Я также подумал бы о том, как обмануть какой-то идентификатор или указать атрибуты на элементе страницы:
<a class="someclass" href="../xyz/abc" rel="nofollow" title="sometitle">
который каждый раз меняет свою форму, поскольку некоторые боты могут быть настроены на поиск определенных шаблонов на ваших страницах или целевых элементах.
<a title="sometitle" href="../xyz/abc" rel="nofollow" class="someclass">
id="p-12802" > id="p-00392"
Ответ 19
Я согласен с большинством вышеперечисленных сообщений, и я хотел бы добавить, что чем больше поисковая система, поддерживающая ваш сайт, тем более уступчивым оно будет. Вы можете попробовать сделать несколько вещей, которые очень там, что усложняет работу скребков, но это может также повлиять на вашу способность поиска... Это зависит от того, насколько хорошо вы хотите, чтобы ваш сайт оценивался в поисковых системах, конечно.
Ответ 20
Вы не можете остановить обычное очищение экрана. К лучшему или худшему, это характер сети.
Вы можете сделать так, чтобы никто не мог получить доступ к определенным вещам (включая музыкальные файлы), если они не вошли в систему как зарегистрированный пользователь. Это не слишком сложно делать в Apache. Я предполагаю, что это не будет слишком сложно сделать и в IIS.
Ответ 21
Один из способов заключается в том, чтобы обслуживать контент как атрибуты XML, строки с кодировкой URL, предварительно отформатированный текст с JSON с кодировкой HTML или URI данных, а затем преобразовывать его в HTML на клиенте. Вот несколько сайтов, которые делают это:
-
Skechers: XML
<document
filename=""
height=""
width=""
title="SKECHERS"
linkType=""
linkUrl=""
imageMap=""
href="http://www.bobsfromskechers.com"
alt="BOBS from Skechers"
title="BOBS from Skechers"
/>
-
Интернет-магазин Chrome: JSON
<script type="text/javascript" src="https://apis.google.com/js/plusone.js">{"lang": "en", "parsetags": "explicit"}</script>
-
Bing News: URL-адрес данных
<script type="text/javascript">
//<![CDATA[
(function()
{
var x;x=_ge('emb7');
if(x)
{
x.src='data:image/jpeg;base64,/*...*/';
}
}() )
-
Protopage: URL-кодированные строки
unescape('Rolling%20Stone%20%3a%20Rock%20and%20Roll%20Daily')
-
TiddlyWiki: HTML-объекты + предварительно отформатированный JSON
<pre>
{"tiddlers":
{
"GettingStarted":
{
"title": "GettingStarted",
"text": "Welcome to TiddlyWiki,
}
}
}
</pre>
-
Amazon: Lazy Loading
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 + Пользовательский тип MIME + Расширение пользовательского файла
<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>
Если вы просматриваете источник по любому из вышеперечисленных, вы увидите, что очистка будет просто возвращать метаданные и навигацию.
Ответ 22
Помещение вашего содержимого за капчу означает, что роботам будет трудно получить доступ к вашему контенту. Однако людям будет неудобно, так что это может быть нежелательным.
Ответ 23
Скребки экрана работают, обрабатывая HTML. И если они полны решимости получить ваши данные, вы не можете сделать это технически, потому что человеческое глазное яблоко что-то обрабатывает. Юридически уже указывалось, что у вас может быть какое-то обращение, и это было бы моей рекомендацией.
Однако вы можете скрыть критическую часть своих данных с помощью логики представления, отличной от HTML
- Создайте файл Flash для каждого исполнителя/альбома и т.д.
- Сгенерировать изображение для каждого содержимого исполнителя. Возможно, достаточно всего изображения для имени исполнителя и т.д. Сделайте это, отринув текст на JPEG/PNG на сервере и ссылки на это изображение.
Имейте в виду, что это, вероятно, повлияет на ранжирование вашего поиска.
Ответ 24
Создайте HTML, CSS и JavaScript. Легче писать генераторы, чем парсеры, поэтому вы можете генерировать каждую обслуживаемую страницу по-разному. Вы больше не можете использовать кеш или статический контент.
Ответ 25
Если вы хотите увидеть отличный пример, посмотрите http://www.bkstr.com/. Они используют алгоритм j/s для установки файла cookie, а затем перезагружают страницу, чтобы он мог использовать cookie для проверки того, что запрос выполняется в браузере. Настольное приложение, созданное для очистки, может определенно получить это, но это остановит большинство cURL-стираний.
Ответ 26
Большинство из них уже сказано, но вы считали защиту CloudFlare? Я имею в виду это:
Другие компании, вероятно, тоже это делают, CloudFlare - это единственное, что я знаю.
Я уверен, что это усложнит их работу. Я также однажды получил IP запретили автоматически в течение 4 месяцев, когда я попытался отказаться от данных сайта, защищенного CloudFlare из-за ограничения скорости (я использовал простой цикл запроса AJAX).