
Комментарии 3
Хорошо разложено по слоям, особенно часть про L4 - её часто опускают.
Один момент, который хотелось бы дополнить: автор пишет, что stealth-плагины «латают симптомы, а не причину» - но не объясняет, почему это принципиальная проблема на архитектурном уровне.
Дело в том, что JS-патчи (тот же puppeteer-extra-plugin-stealth) работают поверх уже запущенного движка. Это значит: между стартом процесса Chromium и моментом, когда патч успевает перехватить управление, есть окно. Агрессивные антифрод-системы (DataDome, некоторые имплементации Akamai) делают fingerprint-замер именно в этом окне - до того как ваш JS вообще загружается.
Единственный способ закрыть это окно - патчить сам движок на уровне C++, до компиляции. Тогда «нечеловеческие» значения просто не попадают в runtime никогда, а не перезаписываются постфактум.
BaaS-решения закрывают эту проблему по-разному: одни через runtime-патчи (быстро, но детектируемо при правильном замере), другие через модифицированный бинарник. Снаружи выглядит одинаково, а уровень защиты принципиально разный.
Хорошо разложено по слоям, особенно часть про L4 - её часто опускают.
Один момент, который хотелось бы дополнить: автор пишет, что stealth-плагины «латают симптомы, а не причину» - но не объясняет, почему это принципиальная проблема на архитектурном уровне.
Дело в том, что JS-патчи (тот же puppeteer-extra-plugin-stealth) работают поверх уже запущенного движка. Это значит: между стартом процесса Chromium и моментом, когда патч успевает перехватить управление, есть окно. Агрессивные антифрод-системы (DataDome, некоторые имплементации Akamai) делают fingerprint-замер именно в этом окне - до того как ваш JS вообще загружается.
Единственный способ закрыть это окно - патчить сам движок на уровне C++, до компиляции. Тогда «нечеловеческие» значения просто не попадают в runtime никогда, а не перезаписываются постфактум.
BaaS-решения закрывают эту проблему по-разному: одни через runtime-патчи (быстро, но детектируемо при правильном замере), другие через модифицированный бинарник. Снаружи выглядит одинаково, а уровень защиты принципиально разный.
Мне вот интересно откуда такие глубокие знания как у автора, так и у вас вообще берутся. Просто я довольно долгое время в парсинге, но о таком слышу впервые, оно как бы и понятно, потому что я использую только готовые библиотеки и не копаю так глубоко, но мне стало даже интересно как вы изучали это всё.
Когда curl перестаёт работать: многоуровневый детект ботов и где в этой схеме живёт облачный браузер