Re: Tree.TV (2017.04.19)
Разобрался.
В общем, путём исследований и проб было выяснено, что есть некая привязка отпечатка (значения mycook) к IP адресу.
Хотя разбор функции Fingerprint2 не дал результатов по поводу привязки (там есть всё, но привязки к ip нет), то было решено проанализировать остальные запросы.
Но как-то же он проверял?
Например, я делал один в один запросы, но с разных IP и в одном случае - проходило, во втором, вместо json данных от /guard получал html.
В общем, подозрение пало на POST запрос к /film/index/imprint с полученными результатами отпечатка и данными, из которых можно проверить правильность отпечатка.
Так и есть - после вычисления отпечатка, нужно отправлять запрос на /film/index/imprint с того адреса, с которого будут идти запросы на /guard.
Это типа port knocking, только для запросов с определённого IP. Т.е. нужно отстучаться по определённому адресу с определёнными значениями, после чего с этого ip будут проходить запросы.
Правда, пришлось повозиться с http заголовками ещё.
В общем, в заголовках должны быть указаны user-agent, который должен подходить к отпечатку, X-Requested-With: XMLHttpRequest и Origin: http://player.tree.tv.
Делаем запрос на страницу фильма для установки кук.
Задаём уже вычисленный отпечаток в куках (значение mycook).
Отправляем запрос на /film/index/imprint с уже готовыми параметрами для нашего заданного отпечатка.
И только после этого делаем запросы на /guard.
Т.к. в отпечатке нет информации о том, откуда идут запросы, то его можно отправлять уже конкретный вычисленный заранее и один и тот же.
Для примера и proof of concept, подправил php скрипт вот в этом сообщении: https://hms.lostcut.net/viewtopic.php?pid=7715#p7715