Pregunta Qt QWebView clase personalizada usuario-agente


¿Hay alguna manera fácil de configurar el User-Agent que está usando la clase QWebView?

El único enlace relevante que encontré buscando fue este

http://www.qtforum.org/article/27073/how-to-set-user-agent-in-qwebview.html 

Estoy aprendiendo C ++ / Qt en este momento y realmente no entiendo lo que se explica en ese sitio web. Tal vez alguien sabe una manera fácil de hacerlo? ¿O puede ayudarme a entender ese código?


9
2017-10-11 14:07


origen


Respuestas:


Qt le permite proporcionar un agente de usuario basado en la URL en lugar de un único agente de usuario sin importar cuál sea la URL. La idea es devolver el agente de usuario cada vez que se crea una nueva página web:

class UserAgentWebPage : public QWebPage {
    QString userAgentForUrl(const QUrl &url ) const {
        return QString("My User Agent");
    }
};

Para utilizar esa página en lugar de la página estándar que se crea, puede establecer esa página en el objeto de control del navegador antes de realizar la solicitud:

yourWebView->setPage(new UserAgentWebPage(parent));

De hecho, esperaría que una fábrica esté presente en algún lugar que garantice que la página web creada siempre sea de cierto tipo, pero no vi ninguna.

Otra opción más debería ser establecer el encabezado del agente de usuario dentro del QNetworkRequest:

QNetworkRequest request = new QNetworkRequest();
request->setRawHeader(
    QString("User-Agent").toAscii(),
    QString("Your User Agent").toAscii()
    );
// ... set the URL, etc.
yourWebView->load(request);

En realidad, querrás comprobar si es toAscii() o toUtf8() o una de las otras variantes ya que no estoy seguro exactamente de lo que permite el estándar HTTP.


13
2017-10-11 14:32



simplemente,

class myWebPage : public QWebPage
{
    virtual QString userAgentForUrl(const QUrl& url) const {
        return "your user agent";
    }
};

//Attention here is new myWebPage() not new myWebPage(parent) 
UI->webView->setPage(new myWebPage());

2
2017-10-06 09:56