Anonim

Я запускаю веб-сайт для клієнта, де вони відображають велику базу даних, яку вони збирали точно і повільно протягом багатьох років. Вони знаходять свої дані в Інтернеті в різних місцях. Більше, ніж ймовірно, це пов'язано з тим, що скрепер перебирає їх сторінку за сторінкою і витягує необхідну інформацію в власну базу даних. І якщо вам цікаво, вони знають, що це їх дані через єдиний висаджений фрагмент даних у кожній категорії на їхньому сайті.

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

Відхилені від хвороби дані

Якщо у вас багато пагінованих даних, і ви здійснюєте пагін даних, просто додавши інше число до кінця URL-адреси, тобто http://www.domain.com/category/programming/2 - тоді ви робите робота гусениці набагато простіша. Перша проблема полягає в тому, що вона легко визначиться, тому встановити скребок на цих сторінках легко як пиріг. Друга проблема, незалежно від URL-адрес наступних сторінок у категорії, більш ймовірно, що для них буде наступне та попереднє посилання.

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

Випадковий вибір шаблону

Шкребки часто будуть трохи підлаштовані під ваші дані. Вони прив’язуються до певного ідентифікатора або класу div для заголовка, 3-ї клітинки в кожному рядку для вашого опису тощо. Існує легко визначити шаблон для більшості скреперів, з якими можна працювати з більшістю даних, що надходять із тієї ж таблиці, відображається тим самим шаблоном. Рандомізуйте свої ідентифікатори та імена класів, вставляйте порожні стовпці таблиці навмання 0 шириною Покажіть свої дані в таблиці на одній сторінці, в стилі діви та комбінації на іншій шаблоні. Представляючи ваші дані передбачувано, їх можна буде передбачити передбачувано та точно.

Горщик для меду

Це досить акуратно за своєю простотою. Я натрапив на цей метод на кількох сторінках щодо запобігання вискоблюванню сайту.

  • Створіть на своєму сервері новий файл під назвою gotcha.html.
  • У свій файл robots.txt додайте наступне:
    Користувач-агент: *
    Відключити: /gotcha.html

    Це повідомляє всім роботам і павукам, що там індексують ваш сайт, щоб не індексувати файл gotcha.html. Будь-який звичайний веб-сканер поважатиме побажання вашого файлу robots.txt і не матиме доступу до цього файлу. тобто Google та Bing. Ви, можливо, захочете реалізувати цей крок та почекати 24 години, перш ніж перейти до наступного кроку. Це забезпечить, щоб сканер випадково не був заблокований вами через те, що під час оновлення файлу robots.txt він вже був посеред сканування.
  • Розмістіть посилання на gotcha.html десь на своєму веб-сайті. Неважливо, де. Я рекомендую в нижньому колонтитулі переконатися, що це посилання не видно, у CSS відображається: немає;
  • Тепер запишіть IP / загальну інформацію про зловмисника, який відвідав цю сторінку, і заблокуйте їх. Крім того, ви можете придумати сценарій, щоб надати їм неправильні дані та сміття. А може, приємне особисте повідомлення від вас їм.

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

Є кілька причин, які можуть не завжди працювати. По-перше, багато скреперів не функціонують як звичайні веб-сканери, і не просто виявляйте дані, переходячи по кожному посиланню з кожної сторінки вашого сайту. Шкребки часто побудовані для закріплення на певних сторінках і слідування лише певним структурам. Наприклад, скрепер може бути запущений на сторінці з категоріями, а потім наказати лише відвідувати URL-адреси зі словом / даними в слизі. По-друге, якщо хтось запускає свій скрепер у тій самій мережі, що й інші, і використовується спільний IP-адресу, ви будете заборонити всю мережу. Вам справді доведеться мати дуже популярний веб-сайт, щоб це було проблемою.

Записуйте дані до зображень на льоту

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

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

Це був не варіант для цього проекту. Потрібна реєстрація після певного обсягу перегляду сторінок або відображення обмеженої кількості даних без входу в систему. Тобто, якщо у вас є 10 стовпців, відображатимуться лише 5 користувачів, які не ввійшли в систему.

Не робіть цієї помилки

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

Запобігання вискоблюванню сайту