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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Сайт через QWebView не грузится  (Прочитано 8143 раз)
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« : Декабрь 15, 2016, 16:14 »

Попробовал загрузить http://gama-gama.ru и что-то не выходит

Код
C++ (Qt)
#include <QApplication>
#include <QtWebKit/QWebView>
 
int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
 
   QWebView *view = new QWebView();
   view->load(QUrl("http://gama-gama.ru/"));
   view->show();
 
   return a.exec();
}
 


Может, кто-то на свежую голову расскажет в чем проблема? Улыбающийся
« Последнее редактирование: Декабрь 16, 2016, 19:11 от gil9red » Записан

Bepec
Гость
« Ответ #1 : Декабрь 15, 2016, 22:19 »

Как вариант не включены скрипты, сайт видит сырой заголовок клиентайди или как то так и не отдаёт данные, или сайт подгружает данные из https Веселый
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #2 : Декабрь 15, 2016, 22:34 »

это Qt 4 нужен что ли? не нашел у себя в 5.6 QWebView.
Записан

Изучением 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
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #3 : Декабрь 16, 2016, 08:27 »

Как вариант не включены скрипты, сайт видит сырой заголовок клиентайди или как то так и не отдаёт данные, или сайт подгружает данные из https Веселый

Скрипты включены они вроде бы по умолчанию включены
Клиентайди, т.е. User-Agent?
А вот вариант с подгрузкой данных по https интересен...

Сам сайт при обращении подсовывает html с куском яваскрипта, данных еще нет, потом что-то делает и вжух -- страница загрузилась, и при загрузке в QWebView страница грузится-грузится и потом View предлагает убить скрипт, мол долго выполняется


Да, я на 4-й тестировал, kambala, можешь на 5-й версии проверить?
Записан

Bepec
Гость
« Ответ #4 : Декабрь 16, 2016, 09:50 »

Да, юзер агент. А насчёт Https скорее всего так и есть. У вас какой нить node.js подгружаться пытается из https google хранилища. Соответственно без openssl у него нифига не получается, вот он и виснет.

PS выведите ошибки SSL, хоть определитесь есть они или нет.
PPS скачайте себе openssl, установите, попробуйте. Там есть ещё пара хитрых трюков типо установки ssl сертификата по умолчанию и редактирование Network профиля, но я их уже и не помню, а проектов чего то не нашёл Веселый
« Последнее редактирование: Декабрь 16, 2016, 09:54 от Bepec » Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #5 : Декабрь 16, 2016, 14:34 »

Смог отловить ошибку javascript при прогрузке страницы:

Цитировать

Для этого в наследнике от QWebPage переопределил функцию. А еще я в нем поменял User-Agent:

Код
Python
class UserAgentWebPage(QWebPage):
   def userAgentForUrl(self, url):
       return "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0"
 
   def javaScriptConsoleMessage(self, msg, line, source):
       print('%s line %d: %s' % (source, line, msg))
 


А вот собственно это и приходит при загрузке:
Код:
<html><head>
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <meta http-equiv="refresh" content="10;URL=/ciez2a">
<script src="https://tars2.variti.net/share/aYfXXK0DJ4Y1?sid=108&amp;scheme=http&amp;host=gama-gama.ru&amp;uri=%2f&amp;t=1481888076642&amp;sad=v%2fsDgAmg%3d%3d&amp;uid=iUHgqjLXqoGlw0TH&amp;uct=1481888076641&amp;kct=0&amp;m=4&amp;ver=3&amp;v=T7XgbckrrOYo_1d7_7tM3g&amp;test=0DJ4Y1"></script></head>
<body>
  <script type="text/javascript">
    var head    = document.getElementsByTagName("head")[0];
    var script  = document.createElement("script");
    var done    = false; // Handle Script loading
                
    var url     = "https://tars2.variti.net/share/aYfXXK0DJ4Y1?sid=108&scheme=http&host=gama-gama.ru&uri=%2f&t=1481888076642&sad=v%2fsDgAmg%3d%3d&uid=iUHgqjLXqoGlw0TH&uct=1481888076641&kct=0&m=4&ver=3&v=T7XgbckrrOYo_1d7_7tM3g";
    if (window.callPhantom || window._phantom || window.__phantomas) {
      url = url + "&test=aYfXXK";
    } else {
      url = url + "&test=0DJ4Y1";
    }
    script.src = url;
    script.onload = script.onreadystatechange = function() { // Attach handlers for all browsers
      if ( !done && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete") ) {
        done = true;
        ipp.setCookie();
        location.href="http://gama-gama.ru/?utm_referrer=";
        script.onload = script.onreadystatechange = null; // Handle memory leak in IE
      }
    };
    head.appendChild(script);          
  </script>

</body></html>

Фигня какая-то... Ловля ssl ошибок через слот sslErrorHandler ничего не отобразило
« Последнее редактирование: Декабрь 16, 2016, 14:36 от gil9red » Записан

kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #6 : Декабрь 16, 2016, 18:03 »

все работает, 5.6.2, macOS 10.12
Код
C++ (Qt)
#include <QApplication>
#include <QWebEngineView>
 
int main(int argc, char *argv[])
{
   QApplication app(argc, argv);
 
   QWebEngineView w;
   w.load(QUrl("http://gama-gama.ru/"));
   w.show();
 
   return app.exec();
}
Записан

Изучением 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
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #7 : Декабрь 16, 2016, 19:10 »

Проверил на Qt5 -- работает.
Похоже, дело в движках. Qt4 использует WebKit, а Qt5 -- Chromium, а точнее, то, что тот сайт похоже использует какие-то фишки, которые не смог "переварить" WebKit


Код
Python
url = 'http://gama-gama.ru/'
 
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import *
 
 
app = QApplication([])
 
view = QWebEngineView()
view.setWindowTitle('Qt5 QWebEngineView')
view.show()
 
view.load(QUrl(url))
 
app.exec()
 

Код
Python
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
 
 
app = QApplication([])
 
view = QWebView()
view.setWindowTitle('Qt4 QWebView')
view.show()
 
view.load(QUrl(url))
 
app.exec()
 

Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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