Anonim

Я управляю веб-сайтом для клиента, где они отображают большую базу данных, которую они собирали точно и медленно за эти годы. Они находят свои данные в Интернете в разных местах. Скорее всего, это связано с тем, что скребок просматривал страницу за страницей и извлекал необходимую информацию в собственную базу данных. И, если вам интересно, они знают, что это их данные, потому что в каждой категории на их сайте размещены отдельные данные.

Я провел много исследований по этому вопросу в последние пару дней и могу сказать вам, что не существует идеального универсального решения. Однако я нашел несколько способов сделать это немного сложнее для них. Это то, что я реализовал для клиента.

Аджаксифицированные пагинационные данные

Если у вас много разбитых на страницы данных, и вы разбиваете на страницы свои данные, просто добавляя другое число в конец своего URL, т.е. http://www.domain.com/category/programming/2 - тогда вы делаете Работа гусеницы намного проще. Первая проблема заключается в том, что его легко определить, поэтому освободить скребок на этих страницах просто, как пирог. Вторая проблема, независимо от URL последующих страниц в категории, скорее всего, будет следующая и предыдущая ссылки, к которым они могут привязаться.

Загружая разбитые на страницы данные через javascript без перезагрузки страницы, это значительно усложняет работу многих скребков. Google только недавно сам начал разбирать javascript на странице. Нет недостатка в перезагрузке данных, подобных этой. Вы предоставляете Google несколько страниц для индексации, но технически все страницы должны разбиваться на страницы корневой категории через канонизацию в любом случае. Аяксифицируйте ваши страничные страницы данных.

Рандомизировать вывод шаблона

Часто скребки будут слегка адаптированы под ваши данные. Они будут привязаны к определенному идентификатору div или классу для заголовка, 3-й ячейке в каждой строке для вашего описания и т. Д. Для большинства скребков существует легко идентифицируемый шаблон, с которым большинство данных, поступающих из одной таблицы, отображается тем же шаблоном. Произведите произвольную выборку идентификаторов и имен классов, вставьте пустые столбцы таблицы случайным образом с шириной 0 Покажите свои данные в таблице на одной странице, в стиле div и комбинации в другом шаблоне. Представляя ваши данные предсказуемо, они могут быть обработаны предсказуемо и точно.

Горшок меда

Это довольно опрятно в своей простоте. Я сталкивался с этим методом на нескольких страницах о предотвращении очистки сайта.

  • Создайте новый файл на вашем сервере с именем gotcha.html.
  • В файле robots.txt добавьте следующее:
    Пользователь-агент: *
    Disallow: /gotcha.html

    Это говорит всем роботам и паукам, которые проиндексировали ваш сайт, чтобы не индексировать файл gotcha.html. Любой обычный веб-сканер будет учитывать пожелания вашего файла robots.txt и не будет обращаться к нему. то есть Google и Bing. Возможно, вы захотите выполнить этот шаг и подождать 24 часа, прежде чем перейти к следующему шагу. Это гарантирует, что сканер не будет случайно заблокирован вами из-за того, что он был уже в середине сканирования при обновлении файла robots.txt.
  • Разместите ссылку на gotcha.html где-нибудь на вашем сайте. Не важно где. Я бы порекомендовал в нижнем колонтитуле, однако, убедиться, что эта ссылка не видна, в CSS, display: none;
  • Теперь зарегистрируйте IP / общую информацию о преступнике, посетившем эту страницу, и заблокируйте их. В качестве альтернативы, вы можете придумать сценарий, который предоставит им неверные и ненужные данные. Или, может быть, приятное личное сообщение от вас.

Обычные веб-зрители не смогут увидеть ссылку, поэтому она не будет случайно нажата. Авторитетные сканеры (например, Google) будут уважать пожелания вашего robots.txt и не посещать файл. Таким образом, единственные компьютеры, которые должны наткнуться на эту страницу, это компьютеры со злонамеренными намерениями или кто-то просматривает ваш исходный код и случайным образом щелкает по нему (ну да ладно, если это произойдет).

Есть несколько причин, по которым это не всегда работает. Во-первых, многие скребки не работают, как обычные сканеры, и не просто обнаруживают данные, переходя по каждой ссылке на каждой странице вашего сайта. Скреперы часто создаются для закрепления на определенных страницах и следуют только определенным структурам. Например, скребок может быть запущен на странице категории, а затем приказывать только посещать URL-адреса со словом / данными в слаге. Во-вторых, если кто-то запускает свой скребок в той же сети, что и другие, и используется общий IP-адрес, у вас будет бан всей сети. Вы должны иметь очень популярный веб-сайт, чтобы это стало проблемой.

Записывайте данные в изображения на лету

Найдите поле данных меньшего размера, необязательно длинные строки текста, так как это может усложнить стилизацию страницы. Вывод этих данных внутри изображения, я уверен, что почти во всех языках программирования есть методы для динамической записи текста в изображение (в php, imagettftext). Это, вероятно, наиболее эффективно с числовыми значениями, так как числа обеспечивают намного более незначительное преимущество SEO.

альтернатива

Это не вариант для этого проекта. Требование входа в систему после определенного количества просмотров страниц или отображение ограниченного объема данных без входа в систему. То есть, если у вас есть 10 столбцов, отображается только 5 для незарегистрированных пользователей.

Не делай эту ошибку

Не пытайтесь придумать какое-то решение, основанное на пользовательском агенте бота. Эта информация может быть легко подделана скребком, который знает, что они делают. Например, бот Google может быть легко эмулирован. Вы, скорее всего, не хотите запретить Google.

Предотвращение соскоба сайта