Russian Qt Forum
Ноябрь 25, 2024, 08:08 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как выполнить JS код на QT  (Прочитано 9031 раз)
rudireg
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« : Июль 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>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta http-equiv="refresh" content="10;URL=/ciez2a">
</head>
<body>
  <script type="text/javascript">
    var ipp = {
setCookie:function()
{
document.cookie="ipp_key=v1563109400764/v3394bd940fb9f20d860d271638eca2afa04ab3/LBgoFoc1kjRqgOKpylxeJA==; path=/;";
document.cookie="ipp_uid=1563109400764/XmY5i8ip0xP6CnMe/luPzUft7syB0zcwZ45odDg==; expires=Tue, 31 Dec 2030 23:59:59 GMT; path=/;";
document.cookie="ipp_uid1=1563109400764; expires=Tue, 31 Dec 2030 23:59:59 GMT; path=/;";
document.cookie="ipp_uid2=XmY5i8ip0xP6CnMe/luPzUft7syB0zcwZ45odDg==; expires=Tue, 31 Dec 2030 23:59:59 GMT; path=/;";
},
makeUrl:function(url)
{
url += "fa821dba_ipp_key=v1563109400764%2fv3394bd940fb9f20d860d271638eca2afa04ab3%2fLBgoFoc1kjRqgOKpylxeJA%3d%3d" + "&" + "fa821dba_ipp_uid=1563109400764%2fXmY5i8ip0xP6CnMe%2fluPzUft7syB0zcwZ45odDg%3d%3d" + "&" + "fa821dba_ipp_uid1=1563109400764" + "&" + "fa821dba_ipp_uid2=XmY5i8ip0xP6CnMe%2fluPzUft7syB0zcwZ45odDg%3d%3d";
return url;
}
};

    location.href=ipp.makeUrl("https://www.vseinstrumenti.ru/search_main.php?what=%D0%90%D0%B4%D0%B0%D0%BF%D1%82%D0%B5%D1%80+1/2%22+%D0%A5+8MM+JTC+/1&utm_referrer=https%3a%2f%2fwww.vseinstrumenti.ru%2f&");
  </script>
</body>
</html>

А так выглядит Rsponse для Windows
https://codepen.io/rudireg/pen/GbaQRX



« Последнее редактирование: Июль 14, 2019, 16:26 от rudireg » Записан
rudireg
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« Ответ #1 : Июль 16, 2019, 23:22 »

Ответа не нашел...
Но удивительно то, что для разных ОС один и тот же код отдает разные ответы.
Решил запускать через docker контейнер версию Linux, так как выполнение кода в Linux решает проблему с JS
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Июль 17, 2019, 13:41 »

возьми любую программа для захвата сетевых пакетов (fiddler, Charles proxy, Wireshark) и посмотри какие запросы (все детали — заголовки и т.д.) отправляются из каждой ОС. Возможно, на каждой ОС разный User-Agent.
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
rudireg
Новичок

Offline Offline

Сообщений: 9


Просмотр профиля
« Ответ #3 : Июль 17, 2019, 22:00 »

возьми любую программа для захвата сетевых пакетов (fiddler, Charles proxy, Wireshark) и посмотри какие запросы (все детали — заголовки и т.д.) отправляются из каждой ОС. Возможно, на каждой ОС разный User-Agent.
User-Agent - передается в коде программы, он не может быть другим на разных ОС, QNetworkAccessManager его определяет.
Но вот по поводу остальных заголовков посмотреть можно.
« Последнее редактирование: Июль 17, 2019, 22:01 от rudireg » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.121 секунд. Запросов: 22.