Как стать автором
Обновить
4
0
xRay @xRay

Пользователь

Отправить сообщение
Челендж от Cloudflare,у нас например, решается в автоматическом режиме. Но есть провайдеры обход защиты которых действительно сложный. К примеру Distil Networks. В целом я согласен с автором по поводу того, что лучшая защита нервов и машинного времени это публичное API. Что касается юридической стороны то автоматический сбор данных которые доступны без аутентификации — вообще не должен быть наказуем, т.к они публично доступны. Другое дело их использование.
Я с ними не сталкивался, но опыт подсказывает, что если все заголовки идентичны обычному запросу и разрешение рендеринга реальное, то вероятно у них навешаны эвенты на мышку или просто проверка позиции курсора.

Встречал ещё сайты, в которых обязательно надо сначала зайти на главную, получить куки, а потом уже заходить на страницы ценами.
Сталкивались с сайтами под защитой Distil Networks? для меня это первый случай когда я не смог решить задачу.
headless браузер в режиме без headless, то есть полностью рисуется, с чистого ip на первый же запрос срабатывает защита.
Раз уж говорим о неприличном, я скажу про ещё более неприличное.

Так вот, — насчёт утверждения что от парсинга никак не защититься — я не соглашусь. Но вот цена защиты, скорее всего, — неподъёмная.
Желающие могут попробовать зарегистрировать пару тысяч аккаунтов в гугле (задача немного иная, но суть та же, — просто именно там стоит хорошая защита).

Там стоит botguard (его видно сразу в html-коде, его никто не прячет). На каждый запрос он собирает какие-то свойства из браузера, засекает разные таймеры (+ скорее всего таймеры на сервере), собирает события типа нажатий кнопок и движения мышки, скорее всего использует вариации canvas fingerprint (где-то натыкался на исследование, лет 5 назад, сейчас должно было всё стать намного хуже). Вы можете его разобрать (шифрование, обфускация, виртуальная машина, рандом всего — если не пугает, можете заглянуть), но даже это может не помочь.

А дальше, поскольку это гугл — он спокойно анализирует на сервере эти данные. Ваш хром вычисляется на раз, смена юзер-агента не поможет. Более того, вычисляется ваша виртуалка, может не помочь даже смена браузера…
И работает эта защита хорошо только потому, что у гугла огромная аудитория, — ему есть с чем сравнивать данные, чтобы отличать добро от зла.

Люди конечно как-то регистрируют там аккаунты, но насколько мне известно, это либо ручной процесс в малых количествах, либо регистрация со смартфонов.
Ну или в другом формате
firstChild: #text
​​assignedSlot: null
​​baseURI: "https://stolichki.ru/present/27694/"
​​childNodes: NodeList []
​​data: "\uef4c\uf3e8\uf4ad\ueb5d\uf6f3\uf6f3"
> рекомендую потренироваться на сайте «Аптеки Столички» и спарсить цены: stolichki.ru/present/27694
На вскоидку выглядит достаточно просто. По приведенной ссылке цены кодируются юникод символами:
0xef 0x81 0x80 -> '2'
0xef 0x83 0xa3 -> '6'
0xef 0x90 0x84 -> '9'
0xee 0xb9 0x82-> '.'
0xef 0x98 0x89 -> '0'

Декодируется это элементарно.
Или я что-то пропустил?

Я разобрал ваш пример с аптекой и пришел к достаточно элегантному решению.
Картинка
image

Нахождение подобного в каждом из ваших 300 магазинов — ключ к ускорению процесса в сотни раз. Когда я занимался парсингом (для удовольствия) МВидео и Эльдорадо, к примеру, они еще работали на голом (с высоты моего понимания) Битриксе, где инфа о товаре содержалась в json в теле страницы и динамически не подгружалась. Решалось загрузкой по байтам и обрывом соединения там, где кончался json. На заголовок частичной загрузки сервер, увы, не отвечал. Эльдо вообще банили по айпи через 200 запросов, но это было год назад.
Я посмотрел ваше железо в комментарии ниже. Интересно, конечно, но актуальность цен на сайтах — в течение суток, я парсил легкие варианты раз в час, а тяжелые — три раза в сутки, и все равно находилась уйма отличий.
В любом случае, спасибо за ответы, было интересно ознакомиться с тем, как это происходит в промышленных масштабах.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Круто! А что есть в Zabbix для анализа логов? Или просто ставим рядом ExK?
В связи этими постами (раз, два) создается ощущение, что это какой-то заговор.
Там же вроде для сообществ эти методы не закрыты, с ключом сообщества все по-прежнему работает. Не проще перенести бота в группу, и не городить огород?
Ну зачем в микроконтроллере костыли в виде интерпретатора?
Можно было ведь просто на SDK все сделать!
Кстати, в этих модемах в последних прошивках уже реализован функционал GPS/GSM треккера на AT-командах на готовом сервисе
ai-thinker-open.github.io/GPRS-AT/A9_A9G/doc/AT-Command-Set.html
И MQTT зашит!

Если кроме шуток, то существует замечательное мобильное приложение Slowly, через которое можно отправлять письма, у которых время доставки зависит от дальности собеседника. Также можно указать интересующие темы и известные языки, чтобы найти собеседников.

Вот мой простейший конфиг:


let browserSync = require('browser-sync').create();

browserSync.init({
    proxy: 'http://site.com',
    serveStatic: ['static'],
    files: ['static/**/*.*'],
    rewriteRules: [
        {
            match: /<\/head>/i,
            fn: (req, res, match) => `<link rel="stylesheet" href="/custom.css" />`
        },
        {
            match: /<\/body>/i,
            fn: (req, res, match) => `<script async src="/scripts.js"></script>`
        }
    ]
});

В serveStatic указываем из какой папки брать файлы. В rewriteRules пишем где в html и какие файлы вставлять.

Для подобных целей использую browser-sync. Его можно использовать для внешнего сайта как прокси и инжектить стили и скрипты из локальной папки.

У вас включено в настройках браузера участие в исследрваниях и стоит стороннее антивирусное ПО?

Если да, то вы в контрольной группе.
НЛО прилетело и опубликовало эту надпись здесь
Ну я думаю потому что разработчики проголосовали кодом:
www.drupal.org/project/openapi — 86 issues, 2,266 сайтов, последний коммит в прошлом году
www.drupal.org/project/jsonapi — 920 issues, 8,531 сайтов, последний коммит позавчера.
Пусть стандартный калькулятор останется калькулятором, а если, например, нужны графики — берите GeoGebr'у, решать уравнения — Maxim'у или SageMath, и. т. д. У каждого инструмента должна быть своя область, потребностям которой он удовлетворяет. Область определения стандартного калькуятора — простые вычисления, для большего есть свои инструменты, которые будут лучше, разработчики которых уже поняли, «методом проб и ошибок», каким именно должен быть инструмент, и тратили все время на движение в этом направлении.

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность