Защита от парсинга PHP

я тут побегал по логам обратных dns запросов: us-east-2.compute.amazonaws.com - что за зверь? никто не сталкивался? и что этому вычислителю нужно на сайте?

плюс идея: можно ли в случае с обратным dns запросом считать условно - безопасным ответ от подсети мобильных операторов: ну, например: mobile.kyivstar.net. Здесь по идее парсером и не пахнет. и парсить с мобильного...

По скрипту выше: проверяет в том числе и по установке реферера. Но та же опера с ее блокировщиком следов реферер не передает. Так что относиться к antibot.cloud следует с осторожностью.
 
плюс идея: можно ли в случае с обратным dns запросом считать условно - безопасным ответ от подсети мобильных операторов: ну, например: mobile.kyivstar.net. Здесь по идее парсером и не пахнет. и парсить с мобильного...

Думаю, что эта ссылка ответит на ваш вопрос Для просмотра ссылки Войди или Зарегистрируйся
 
Итак в первой реализации сделал вот что: закидываем iframe + timestamp в url на одном домене (его все равно не качают боты). В iframe js делаем не линейный расчет (js кодирован, содержимое iframe меняется (microtime), iframe: noindex, nofollow:( берем фикс. массив из неск. переменных, завязанных на UTC время (переменные разные и меняются), и берем (например) куб корень каждого не четного числа / 2, после чего складываем все в сумму и кидаем в куку, на сервере считаем все то же самое и сравниваем с кукой. Данные есть и данные правильные: белый список и пусть гуляет 6 часов, данные не правильные: попытка++, если попыток больше, чем 10 раз в три секунды, то - черный список и 403. Попыток с ip меньше, сбрасываем счетчик к 0 и все заново. Раз в 6 ч: всех в серый список на проверку. Если бот пришел с обратным запросом от google, yandex, bing (согласно документации, а не маскируется) или с собственного домена, проверки нет, если бот пришел из черного списка, например: censys-scanner и ему подобных, или не представился нормальным ip: сразу 403. Покатаю дней несколько, и выложу. Если есть недостатки алгоритма, или можно улучшить, также открыт критике и советам.

Может кто видел список обратных (reverse dns lookup) поисковых запросов для поисковых ботов?

Все, что пока что-нашел по документации и логам сервера:
googlebot.com
google.com
search.msn.com
msn.com
yandex.ru
yandex.net
yandex.com
rambler.ru
crawl.yahoo.net
crawl.baidu.jp
crawl.baidu.com
facebook.com (по логам представляется, приятно удивило, ибо по документации по-другому)
applebot.apple.com
ahrefs.com
googleusercontent.com

Врубил логирование, еще собирается все это добро.
 
Последнее редактирование:
Итак в первой реализации сделал вот что: закидываем iframe + timestamp в url на одном домене (его все равно не качают боты). В iframe js делаем не линейный расчет...

Все ваше решение ломается, если бот умеет обрабатывать js скрипты.
 
Все ваше решение ломается, если бот умеет обрабатывать js скрипты.
и это нормально. задача - убрать только не умных ботов. если бот умеет подгружать iframe, исполнять в нем js (human emulator?), то с ботом толком ничего не сделаешь, не осложнив жизнь обычным посетителям. остается только банить по активности. больше, чем запросов, в минуту.
 
Я бы попробовал отследить события мыши/скролла/тач, если их нет - считаем ботом, дальше в течение часа для этого айпи доступ только по белому списку "поисковиков".
 
итак, наши беседы подтолкнули к следующим идеям (спасибо за Ваши отзывы) : 1) проверять поведенческий фактор: сколько времени в среднем пользователь проводит на страницах при посещении 30-50-100 страниц, если средний показатель меньше 3-4 секунд, перед нами бот, блокировать 2) собирать пользовательские действия при unload страницы: был ли click, был ли scroll, был ли touch, был ли resize (можно подсчитывать кол-во этих событий), и где была мышка (x,y), если передаваемые данные совпадают раз за разом, или их нет, перед нами тоже бот, тоже в блок. Да, будут отшибаться текстовые браузеры типа Lynx, но их процент не значителен. 3) боты не ждут, ставить timeout, после которого добавлять iframe с js проверками, и если данные переданы без timeout на нескольких десятках посещенных страниц, тоже блокировать.
 
Последнее редактирование:
итак, наши беседы подтолкнули к следующим идеям (спасибо за Ваши отзывы) : 1) проверять поведенческий фактор: сколько времени в среднем пользователь проводит на страницах при посещении 30-50-100 страниц, если средний показатель меньше 3-4 секунд, перед нами бот, блокировать 2) собирать пользовательские действия при unload страницы: был ли click, был ли scroll, был ли touch, был ли resize (можно подсчитывать кол-во этих событий), и где была мышка (x,y), если передаваемые данные совпадают раз за разом, или их нет, перед нами тоже бот, тоже в блок. Да, будут отшибаться текстовые браузеры типа Lynx, но их процент не значителен. 3) боты не ждут, ставить timeout, после которого добавлять iframe с js проверками, и если данные переданы без timeout на нескольких десятках посещенных страниц, тоже блокировать.
От ботов умеющих выполнять JS есть фингерпринт Для просмотра ссылки Войди или Зарегистрируйся
Я в свое время им хитроботов яндекса выявлял.
 
Можно ещё кодировать весь текст страницы внутри <p> например в инлайновый стиль с css-переменной. И делать что-то типа
HTML:
<p style="--content: '\041F \0440 \0438 \0432 \0435 \0442 !'"></p>
CSS:
p.protected::before{
  content: var(--content);
}

В итоге визуально получим читаемый текст, который не воспримется роботом. Правда, и SEO отлетит, т.к. поисковики еще не дошли до парсинга текста в before-элементах, + нельзя использовать вложенные теги
 
Назад
Сверху