QWebEngineView浏览器如何获取全部cookie

本文总结了使用QWebEngineView在开发过程中获取全部cookie的尝试,包括JavaScript获取的限制、QWebEngineHttpRequest的问题以及最终通过信号槽成功获取所有cookie的方法。在多次尝试中,作者遇到了浏览器对cookie获取的限制以及WebEngineView对请求头的修改等问题,最后通过特定的方式来实现需求。
摘要由CSDN通过智能技术生成

总结记录下用QWebEngineView开浏览器过程中遇到的一些坑

第一次尝试:用JavaScript获取cookie,发现是可以获取cookie的,但是获取不全。代码如下:

static QString g_cookie = "";
void writeCookie(QString strText)
{
    QString path = QCoreApplication::applicationDirPath();
    path.append("/cookies/cookie.txt");

    //创建文件对象
    QFile file(path);
    //打开文件,只写方式
    bool error = file.open(QIODevice::WriteOnly | QIODevice::Truncate);
    if(error)
    {
        QByteArray data = strText.toLatin1();
        file.write(data);
        file.close();
    }
}

void MyWebEngineView::getCookieByJavaScript()
{
    this->page()->runJavaScript("function GetCookie(){return document.cookie}");
    this->page()->runJavaScript("GetCookie();",[](const QVariant& v){

        QString strCookie = "";
        strCookie = v.toString();
        g_cookie  = strCookie;
        qDebug()<<g_cookie;
        writeCookie(strCookie);
    });
}

QString MyWebEngineView::readCookie()
{
    QString path = QCoreApplication::applicationDirPath();
    path.append("/cookies/cookie.txt");
    qDebug()<<path;

    QString strCookie = "";
    QFile file(path);
    bool error = file.open(QIODevice::ReadWrite);
    if(error)
    {
        QByteArray data = file.readAll();
        strCookie.append(data);

        qDebug()<<"-------------- readCookie start ---------------";
        qDebug()<<strCookie.size()<<strCookie;
        qDebug()<<"-------------- readCookie end ---------------";

        file.close();
    }

    return strCookie;
}

第二次尝试:重写

QWebEngineUrlRequestInterceptor࿰
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值