通过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文件夹中。

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

 

二、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
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

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