Re: Как отловить JS-редирект?
От: Kolesiki  
Дата: 22.06.20 17:07
Оценка: 89 (2)
Моё небольшое расследование: (если кому-то интересно, это "обычный" развлекательный сайт fishki.net )

Итак, есть лента постов. При открытии поста, он весь загружается. Далее хитрый скрипт проверяет аргументы в URL и если там нет sign, переходит на yandex, передавая ему URL поста (в URL и в Referer) и конечно же, куки для отслеживания.
Яндекс возвращает целую простыню JS, которая формирует какую-то подпись и снова редиректит браузер обратно, но уже с добавкой "?sign=832085446311592%2C301828071123841" (как пример). sign для одной страницы каждый раз разный.
Фишки заново релоадят пост (спасибо, б***, за "экономию" трафика!) и скрипт проверяет sign (наверное, что-то вроде хэша). Если подпись правильная, скрипт добавляет к элементам страницы события (напр, позволяет отвечать на комменты). Таким образом, полностью отрубить JS — нельзя. Вычислять подпись — алгоритм неизвестен. Едиственный вариант — перехватить место вычисления подписи и заменить if (sign is valid) на pofig.

Что я "нахакал" в процессе расследования:

1. Ставим в hosts "127.0.0.1 yandex.ru" — там мы можем получать запросы вместо яндекса.
2. Написал собственный web-сервер (на C#) и создал подписанный сертификат на yandex.ru. Таким образом я могу делать абсолютно валидные подключения из браузера по SSL "якобы к яндексу".
3. Получил код JS, который яндекс отсылает браузеру.
4. Когда мой "яндекс-сервер" принимает запрос, пытался отвечать "301 moved permanently" (с оригинальной URL с и без sign) или "302 Found" — браузер входит в бесконечный рефреш поста.

Кстати, говносервер яндекса напрочь игнорирует "Accept-Encoding: identity" и продолжает настырно слать "chunked" контент, хотя я явно говорю, что поддерживаю только несжатые данные.

Короче, я всё контролирую на уровне протокола, но ни черта не могу поделать, чтобы отрубить напрочь шпионство на яндексе. Ибо монстроидоидный Хромой не даёт никакого контроля над скриптами и что они могут делать.
Вот такое говно нам подложил радостный разраб JS — не удивительно, что все дерьмокомпании так живо схватились за возможность "скриптячить" на страницах! А с WebAssembly нам вообще настанет хана.

Есть ещё какие-нибудь идеи?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.