Челендж от Cloudflare,у нас например, решается в автоматическом режиме. Но есть провайдеры обход защиты которых действительно сложный. К примеру Distil Networks. В целом я согласен с автором по поводу того, что лучшая защита нервов и машинного времени это публичное API. Что касается юридической стороны то автоматический сбор данных которые доступны без аутентификации — вообще не должен быть наказуем, т.к они публично доступны. Другое дело их использование.
Я с ними не сталкивался, но опыт подсказывает, что если все заголовки идентичны обычному запросу и разрешение рендеринга реальное, то вероятно у них навешаны эвенты на мышку или просто проверка позиции курсора.
Встречал ещё сайты, в которых обязательно надо сначала зайти на главную, получить куки, а потом уже заходить на страницы ценами.
Сталкивались с сайтами под защитой Distil Networks? для меня это первый случай когда я не смог решить задачу.
headless браузер в режиме без headless, то есть полностью рисуется, с чистого ip на первый же запрос срабатывает защита.
Раз уж говорим о неприличном, я скажу про ещё более неприличное.
Так вот, — насчёт утверждения что от парсинга никак не защититься — я не соглашусь. Но вот цена защиты, скорее всего, — неподъёмная.
Желающие могут попробовать зарегистрировать пару тысяч аккаунтов в гугле (задача немного иная, но суть та же, — просто именно там стоит хорошая защита).
Там стоит botguard (его видно сразу в html-коде, его никто не прячет). На каждый запрос он собирает какие-то свойства из браузера, засекает разные таймеры (+ скорее всего таймеры на сервере), собирает события типа нажатий кнопок и движения мышки, скорее всего использует вариации canvas fingerprint (где-то натыкался на исследование, лет 5 назад, сейчас должно было всё стать намного хуже). Вы можете его разобрать (шифрование, обфускация, виртуальная машина, рандом всего — если не пугает, можете заглянуть), но даже это может не помочь.
А дальше, поскольку это гугл — он спокойно анализирует на сервере эти данные. Ваш хром вычисляется на раз, смена юзер-агента не поможет. Более того, вычисляется ваша виртуалка, может не помочь даже смена браузера…
И работает эта защита хорошо только потому, что у гугла огромная аудитория, — ему есть с чем сравнивать данные, чтобы отличать добро от зла.
Люди конечно как-то регистрируют там аккаунты, но насколько мне известно, это либо ручной процесс в малых количествах, либо регистрация со смартфонов.
Я разобрал ваш пример с аптекой и пришел к достаточно элегантному решению.
Картинка
Нахождение подобного в каждом из ваших 300 магазинов — ключ к ускорению процесса в сотни раз. Когда я занимался парсингом (для удовольствия) МВидео и Эльдорадо, к примеру, они еще работали на голом (с высоты моего понимания) Битриксе, где инфа о товаре содержалась в json в теле страницы и динамически не подгружалась. Решалось загрузкой по байтам и обрывом соединения там, где кончался json. На заголовок частичной загрузки сервер, увы, не отвечал. Эльдо вообще банили по айпи через 200 запросов, но это было год назад.
Я посмотрел ваше железо в комментарии ниже. Интересно, конечно, но актуальность цен на сайтах — в течение суток, я парсил легкие варианты раз в час, а тяжелые — три раза в сутки, и все равно находилась уйма отличий.
В любом случае, спасибо за ответы, было интересно ознакомиться с тем, как это происходит в промышленных масштабах.
Там же вроде для сообществ эти методы не закрыты, с ключом сообщества все по-прежнему работает. Не проще перенести бота в группу, и не городить огород?
Ну зачем в микроконтроллере костыли в виде интерпретатора?
Можно было ведь просто на SDK все сделать!
Кстати, в этих модемах в последних прошивках уже реализован функционал GPS/GSM треккера на AT-командах на готовом сервисе ai-thinker-open.github.io/GPRS-AT/A9_A9G/doc/AT-Command-Set.html
И MQTT зашит!
Если кроме шуток, то существует замечательное мобильное приложение Slowly, через которое можно отправлять письма, у которых время доставки зависит от дальности собеседника. Также можно указать интересующие темы и известные языки, чтобы найти собеседников.
Пусть стандартный калькулятор останется калькулятором, а если, например, нужны графики — берите GeoGebr'у, решать уравнения — Maxim'у или SageMath, и. т. д. У каждого инструмента должна быть своя область, потребностям которой он удовлетворяет. Область определения стандартного калькуятора — простые вычисления, для большего есть свои инструменты, которые будут лучше, разработчики которых уже поняли, «методом проб и ошибок», каким именно должен быть инструмент, и тратили все время на движение в этом направлении.
Встречал ещё сайты, в которых обязательно надо сначала зайти на главную, получить куки, а потом уже заходить на страницы ценами.
headless браузер в режиме без headless, то есть полностью рисуется, с чистого ip на первый же запрос срабатывает защита.
Так вот, — насчёт утверждения что от парсинга никак не защититься — я не соглашусь. Но вот цена защиты, скорее всего, — неподъёмная.
Желающие могут попробовать зарегистрировать пару тысяч аккаунтов в гугле (задача немного иная, но суть та же, — просто именно там стоит хорошая защита).
Там стоит botguard (его видно сразу в html-коде, его никто не прячет). На каждый запрос он собирает какие-то свойства из браузера, засекает разные таймеры (+ скорее всего таймеры на сервере), собирает события типа нажатий кнопок и движения мышки, скорее всего использует вариации canvas fingerprint (где-то натыкался на исследование, лет 5 назад, сейчас должно было всё стать намного хуже). Вы можете его разобрать (шифрование, обфускация, виртуальная машина, рандом всего — если не пугает, можете заглянуть), но даже это может не помочь.
А дальше, поскольку это гугл — он спокойно анализирует на сервере эти данные. Ваш хром вычисляется на раз, смена юзер-агента не поможет. Более того, вычисляется ваша виртуалка, может не помочь даже смена браузера…
И работает эта защита хорошо только потому, что у гугла огромная аудитория, — ему есть с чем сравнивать данные, чтобы отличать добро от зла.
Люди конечно как-то регистрируют там аккаунты, но насколько мне известно, это либо ручной процесс в малых количествах, либо регистрация со смартфонов.
На вскоидку выглядит достаточно просто. По приведенной ссылке цены кодируются юникод символами:
0xef 0x81 0x80 -> '2'
0xef 0x83 0xa3 -> '6'
0xef 0x90 0x84 -> '9'
0xee 0xb9 0x82-> '.'
0xef 0x98 0x89 -> '0'
Декодируется это элементарно.
Или я что-то пропустил?
Нахождение подобного в каждом из ваших 300 магазинов — ключ к ускорению процесса в сотни раз. Когда я занимался парсингом (для удовольствия) МВидео и Эльдорадо, к примеру, они еще работали на голом (с высоты моего понимания) Битриксе, где инфа о товаре содержалась в json в теле страницы и динамически не подгружалась. Решалось загрузкой по байтам и обрывом соединения там, где кончался json. На заголовок частичной загрузки сервер, увы, не отвечал. Эльдо вообще банили по айпи через 200 запросов, но это было год назад.
Я посмотрел ваше железо в комментарии ниже. Интересно, конечно, но актуальность цен на сайтах — в течение суток, я парсил легкие варианты раз в час, а тяжелые — три раза в сутки, и все равно находилась уйма отличий.
В любом случае, спасибо за ответы, было интересно ознакомиться с тем, как это происходит в промышленных масштабах.
Можно было ведь просто на SDK все сделать!
Кстати, в этих модемах в последних прошивках уже реализован функционал GPS/GSM треккера на AT-командах на готовом сервисе
ai-thinker-open.github.io/GPRS-AT/A9_A9G/doc/AT-Command-Set.html
И MQTT зашит!
Если кроме шуток, то существует замечательное мобильное приложение Slowly, через которое можно отправлять письма, у которых время доставки зависит от дальности собеседника. Также можно указать интересующие темы и известные языки, чтобы найти собеседников.
Вот мой простейший конфиг:
В serveStatic указываем из какой папки брать файлы. В rewriteRules пишем где в html и какие файлы вставлять.
Для подобных целей использую browser-sync. Его можно использовать для внешнего сайта как прокси и инжектить стили и скрипты из локальной папки.
Если да, то вы в контрольной группе.
www.drupal.org/project/openapi — 86 issues, 2,266 сайтов, последний коммит в прошлом году
www.drupal.org/project/jsonapi — 920 issues, 8,531 сайтов, последний коммит позавчера.