Logowanie do nk.pl przy użyciu QWebView.

0

To mój pierwszy post na forum, więc witam wszystkich bardzo serdecznie.

Od pewnego czasu nie mogę poradzić sobie z pewnym dziwnym zachowaniem QWebView. Chodzi mianowicie o próbę zalogowani się na stronie http://nk.pl/ przy pomocy tego elementu. Strona początkowo ładuje się poprawnie, ale po wpisaniu danych do formularza i próbie zalogowania, otrzymuję tylko biały ekran. Dostaję co prawda jakiś kod strony, ale QWebView nic nie wyświetla.

Czy ktoś mógłby mi podpowiedzieć co jest nie tak ? Czy to błąd w qt, czy raczej błąd w moim projekcie ?

Projekt testowy :

test-nk.pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = test-nk
TEMPLATE = app

QT += webkitwidgets

SOURCES += main.cpp
SOURCES += mainwindow.cpp
HEADERS += mainwindow.h

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QWebView>

class MainWindow : public QWebView
{
	Q_OBJECT
	
	public:
	
	MainWindow();
};

#endif // MAINWINDOW_Hmain.cpp

mainwindow.cpp

#include "mainwindow.h"

MainWindow::MainWindow()
{
	this -> setUrl(QUrl("http://nk.pl/"));
	this -> showMaximized();
}

main.cpp

#include <QApplication>

#include "mainwindow.h"

int main(int argc, char *argv[])
{
	QApplication a(argc, argv);
	MainWindow w;
	w.show();
	
	return a.exec();
}

Trochę informacji o sofcie :

Architecture : i386
Operating System : Debian (jessie)

Package:             Version:
qt5-default          5.3.2+dfsg-4+b1
qtbase5-dev          5.3.2+dfsg-4+b1
libqt5webkit5-dev    5.3.2+dfsg-3
qt5-qmake            5.3.2+dfsg-4+b1

PS: Jakieś 3-4 miesiące temu identyczne zachowanie obserwowałem pod Windows XP, jednak nie chciało mi się wtedy tego drążyć.

0

Niestety nadal nie udało mi się rozwiązać tego problemu. Wpadłem natomiast na trop, gdzie znajduje się jego przyczyna. Jeżeli wyłączymy w QWebView obsługę JavaScript, to proces logowania przebiega poprawnie. Udaje się zobaczyć stronę główną nk. Oczywiście uniemożliwia to korzystanie z wszystkich elementów serwisu (galerie, itp.), dlatego to rozwiązanie nie do końca mnie satysfakcjonuje. Był bym wdzięczny za jakikolwiek podpowiedź, czym może być spowodowane takie zachowanie się strony.

Poniżej podaję zmodyfikowany plik mainwindow.cpp dla którego proces logowania przebiega poprawnie :

#include "mainwindow.h"

MainWindow::MainWindow()
{
	this -> settings() -> setAttribute(QWebSettings::JavascriptEnabled, false);
	this -> setUrl(QUrl("http://nk.pl/"));
	this -> showMaximized();
}
0

ee wątpię żeby było to takie proste, ustawiasz url i działa zobaczę za moment

edit:
zobacz tu (sam nie ogłądałem, ale wydaje się ok)

edit:

obejrzałem po łebkach, wydaję się dobre powodzenia

0

Właśnie w QT, to jest aż takie proste :) Jeżeli podmienię URL na jakikolwiek inny (http://pl.wikipedia.org/, https://www.debian.org/, http://www.google.pl/, https://www.facebook.com/) to strona załaduje się bez problemu i będę mógł z niej korzystać. Problem pojawia się właśnie dopiero kiedy przy użyciu takiej 'przeglądarki' spróbuje się zalogować na http://nk.pl/. Strona startowa (formularz logowania) wyświetla się bez problemu, ale po zalogowaniu wszystko znika (dostaję białą stronę). Moim zdaniem błąd jest gdzieś w tym jak WebKit radzi sobie z interpretowaniem JavaScript'u, ale mogę się mylić i może wystarczy pogrzebać tylko w ustawieniach QWebView, albo zastosować jakąś inną sztuczkę żeby nk działało poprawnie.

0

ogólnie nie podoba mi się to dziedziczenie po qwebview

obejrzałeś vid?

0

Tak widziałem i zbudowałem projekt jeszcze raz, tak jak było to pokazane na tym filmie. Jednak tak jak się spodziewałem, nic się nie zmieniło, aplikacja pokazuje po zalogowaniu na nk białą stronę.

Generalnie QWebView dziedziczy po QWidget, dzięki czemu powinien bezproblemowo działać jako oddzielne okno aplikacji, bez potrzeby osadzania go na przykład w QMainWindow. Poza tym jak już wcześniej wspomniałem aplikacja zachowuje się poprawnie dla każdej innej przetestowanej przeze mnie strony, za wyjątkiem nk.

Będę wdzięczny za wszelkie inne wskazówki odnośnie tego gdzie mogę szukać przyczyn takiego dziwnego zachowania tej (bądź co bądź) prostej aplikacji.

0

Przetestowałem jak zachowuje się nk na dwóch przeglądarkach wykorzystujących Qt i WebKit (przeglądarki instalowane z oficjalnego repo Debiana jessie) :

  • Arora (wersja: 0.11.0, wersja WebKita: 538.1) - Działa poprawnie.
  • QupZilla (wersja: 1.6.6, wersja WebKita: 537.21) – Udało mi się zalogować i zobaczyć stronę główną, ale przy niektórych podstronach przeglądarka potrafiła losowo pokazać białą stronę, lub nie załadować strony w całości.

Na podstawie tego można by wysnuć wniosek, że sam WebKit radzi sobie z wyświetleniem nk, trzeba tylko go odpowiednio ustawić. Być może spróbuje poszperać w kodzie Arora, żeby sprawdzić co tam się dzieje że wszystko działa poprawnie, ale póki co nadal będę wdzięczny za wszelkie inne wskazówki gdzie szukać rozwiązania.

PS: Wersja WebKita która jest zwracana przez qWebKitVersion() w moim projekcie to : 538.1.

1 użytkowników online, w tym zalogowanych: 0, gości: 1