Название: Как выполнить JS код на QT Отправлено: rudireg от Июль 14, 2019, 15:43 Привет. Использую Qt5.
Пишу консольную программу парсер сайта https://www.vseinstrumenti.ru/ Использую QNetworkAccessManager. На сайте стоит защита, при заходе на их страницу они отправляют на сайт прокладку например по адресу https://ohio8.vchecks.me/share/sWWtMUH7cqM1?sid=2588&scheme=https&host=www.vseinstrumenti.ru&uri=%2f%3futm_referrer%3d&t=1563107574249&sad=v%2fuQ1wLA%3d%3d&uid=s7RKQDx4LDWnaSFq&uct=1563107574249&kct=0&m=2&ver=7&flags=2176&ua=776215760362579538&v=5F5kK4Iq9WBf_xq6ZAsJQQ Там идет выполнение JS кода, а именно выполняется JS код который генерирует что-то вроде секрета с которым идет перенаправление назад на сайт https://www.vseinstrumenti.ru/ И таким образом проверка пройдена. Вопрос №1, почему один и тот же С++ код, скомпилированный на разных ОС, а именно Windows и Linux (Ubuntu) отдает разный ответ при переходе по выше указанной ссылке. Разница ответов (Response) в том, что если программа исполняется в Linux то Response НЕ содержит JS функцию отвечающую за генерацию секрета, вместо нее в JS код уже есть готовый результат её генерирования. А вот в Windows наоборот, нет готового секрета, но есть функция которая этот секрет генерирует. Как такое вообще возможно... код же на с++ один и тот же... Вопрос № 2 Как в QT можно выполнить JS код полученный в Response учитывая что программа консольная. QScriptEngine не помог, видимо JS код для него слишком сложный. Доп инфо Так выглядит Response для Linux Код: <!DOCTYPE html> А так выглядит Rsponse для Windows https://codepen.io/rudireg/pen/GbaQRX Название: Re: Как выполнить JS код на QT Отправлено: rudireg от Июль 16, 2019, 23:22 Ответа не нашел...
Но удивительно то, что для разных ОС один и тот же код отдает разные ответы. Решил запускать через docker контейнер версию Linux, так как выполнение кода в Linux решает проблему с JS Название: Re: Как выполнить JS код на QT Отправлено: kambala от Июль 17, 2019, 13:41 возьми любую программа для захвата сетевых пакетов (fiddler, Charles proxy, Wireshark) и посмотри какие запросы (все детали — заголовки и т.д.) отправляются из каждой ОС. Возможно, на каждой ОС разный User-Agent.
Название: Re: Как выполнить JS код на QT Отправлено: rudireg от Июль 17, 2019, 22:00 возьми любую программа для захвата сетевых пакетов (fiddler, Charles proxy, Wireshark) и посмотри какие запросы (все детали — заголовки и т.д.) отправляются из каждой ОС. Возможно, на каждой ОС разный User-Agent. User-Agent - передается в коде программы, он не может быть другим на разных ОС, QNetworkAccessManager его определяет.Но вот по поводу остальных заголовков посмотреть можно. |