通过QWebEngineProfile获取QWebEngineView浏览器默认保存的cookies信息

  • A+
所属分类:编程语言

在上一篇文章pyqt5的QWebEngineView实现登录百度网盘账号并储存cookies中提到了关于如何获取浏览网页登录后的cookies信息,主要方式是通过监听信号并连接槽函数。这种方式能够很及时的获取到当前网址变化后增加的cookies信息,同时文末也提到了另外一种获取浏览器默认保存的cookie的方式。现在具体说说如何实现:

一、浏览器默认保存的cookie存储位置

首先,通过QWebEngineView实现基本的浏览网页界面程序,运行后QtWebEngine会在用户目录AppData\Local下生成缓存文件夹,该文件夹是隐藏的,需要设置文件夹隐藏可见才能具体看到。示例如下:

C:\Users\Administrator\AppData\Local\python\QtWebEngine\Default

其中,包含了缓存文件,同时也包含了cookies信息,cookies保存在QtWebEngine\Default文件夹中。

 

二、cookie信息解析

cookie使用sqlite数据库文件进行存储的,知道了cookies的位置同时知道了文件的类型,那么用Python就很好处理了,使用到的是sqlite3库。具体解析代码如下:

  1. # -*-coding:utf-8-*-
  2. import sqlite3
  3. class ReadSqlite(object):
  4.     def __init__(self, path):
  5.         self.conn = sqlite3.connect(path)
  6.         self.cursor = self.conn.cursor()
  7.         self.cookies = dict()
  8.     def read_cookie(self):
  9.         try:
  10.             self.cursor.execute('select name,value from cookies;')
  11.             cookies = self.cursor.fetchall()
  12.             for key, value in cookies:
  13.                 self.cookies[key] = value
  14.         except:
  15.             pass
  16.         self.cursor.close()
  17.         self.conn.close()
  18.         return self.cookies
  19. if __name__ == '__main__':
  20.     sqlite = ReadSqlite('cookie的文件存储位置')
  21.     sqlite.read_cookie()

需要注意的是浏览器默认保存的cookies里面包含了所有浏览登录网页的cookie信息,需要根据实际情况通过host_key进行过滤提取。

三、cookie及缓存位置设置

QWebEngineView浏览器默认的缓存存储位置已经知道了,但是通过什么方式来提取路径以及如何自定义缓存、cookies等路径呢?查找路径及自定义缓存路径需要使用到QWebEngineProfile,具体方法如下:

在导入QWebEngineView的同时也导入QWebEngineProfile,并通过persistentStoragePath()函数即可获取cookie的路径了。

from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineProfile
QWebEngineProfile.defaultProfile().persistentStoragePath()

设置缓存、cookie的路径同样类似,也可以清除cookie

  1. default_profile = QWebEngineProfile.defaultProfile()
  2. default_profile.setCachePath('自定义的存储路径')
  3. default_profile.setPersistentStoragePath('自定义的存储路径')
  4. default_cookie = default_profile.cookieStore()
  5. default_cookie.deleteAllCookies()

 

weinxin
我的微信公众号
爱真理,得永生!          爱在灵灵久博客,网罗天下,福利大家!

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: