Якщо ж перевіряти кожен IP, то можна отримати блокування (тим більше будуть в логах і справжні боти). Чи є якісь більш просунуті методики?
У мануалах пошуковиків описаний алгоритм визначення справжніх / фейкових ботів:
- Google (developers.google.com/search/docs/advanced/crawling/verifying-googlebot)
- Yandex (yandex.com/support/webmaster/robot-workings/check-yandex-robots.html)
Як бачимо, і там і там нам пропонують робити reverse DNS lookup.
Проблема в тому, що більшість зупиняються на пункті, де ми отримуємо Hostname, посилаючи запит на IP адресу, однак це не зовсім правильно (читаємо, що таке IP spoofing (en.wikipedia.org/wiki/IP_address_spoofing)). Необхідно ще послати на Hostname назад запит, після чого вже порівняти отриманий IP з оригінальним IP з лога.
Як можна оптимізувати алгоритм, щоб нас не забанили?
- Брати для аналізу підмережу, а не окрему IP адресу.
- Google нещодавно виклав у відкритий доступ діапазони IP Googlebot (developers.google.com/search/apis/ipranges/googlebot.json). На жаль, по Yandex такого немає, але можна в процесі аналізу досить швидко зібрати свою базу, знайти або купити в цих наших інтернетах (є свої плюси та мінуси).
- Очевидно, але уточню – не парсити повторно одну і ту ж IP адресу (чим більше робимо запитів до одного IP в якийсь невеликий відрізок часу, тим вище ризик блокування). А ще не робити перевірки з IP сервери, де сидить наш сайт (підключіть проксі).
Коли робимо подібні маніпуляції, то ми завжди балансуємо між “швидко” і “повільно “. Завжди можна знайти свою золоту середину. З мого досвіду, робити повноцінну перевірку зі зворотним відправленням пакетів на Hostname часто немає сенсу, тільки в жорстких по конкуренції тематиках або коли ви об’єктивно розумієте, що вас “валять”.