【问题标题】:Qt WebEngine Password Manager - How To Detect When A Username / Password Is Used On A WebsiteQt WebEngine 密码管理器 - 如何检测网站上何时使用用户名/密码
【发布时间】:2019-08-31 17:32:01
【问题描述】:

我使用 PyQt5 框架在 Python 3.7.2 中构建了一个浏览器。创建密码管理器,如何检测用户名和密码的输入和发送,以及用户名和密码是什么,以便弹出提示保存用户名和密码?

【问题讨论】:

    标签: python pyqt5 python-3.7 qtwebengine


    【解决方案1】:

    QWebView::url方法可以帮你判断当前加载的网站。您应该有一个存储密码的本地数据库;因此,使用当前域,在所述数据库中查找任何存储的密码。 (理想情况下,密码将使用密码加密)。

    至于 HTML 插入部分,您可以采用两种方法;我已经有一段时间没有这样做了,但请看一下以下方法:

    `QWebView::setHtml` 
    `QWebFrame::evaluateJavaScript`
    `QWebFrame::documentElement()`
    
    With a `QWebFrame` there are many helpful methods that you can use.
    

    更新:以上这些已被弃用,但仍有办法实现这一点。

    注意:您应该有一个强大的密码字段检测

    决定何时是存储新密码的合适时间是一件非常棘手的事情,这似乎是它在商业浏览器上的工作方式:

    • 检测到包含password-type 字段的成功 POST 请求(为此,您需要监视和检查浏览器内发生的所有 HTTP 请求。

    • 查找是否有存储的域密码。如果有,如果密码不同,提示用户更新密码,否则提示用户存储新密码。 INSERT/UPDATE将密码存入数据库。

    【讨论】:

    • QWebView 和 QWebFrame 是 QtWebkit 的一部分,自 Qt 5.6 起已弃用,目前使用的是 QtWebEngine,所以我认为您的一般建议是足够的,但您指出的部分不再有效。 QtWebEngine 不再由 Qt Network(QNetworkAccessManager) 处理,而是由内部 API + chromium 处理,因此不再可能使用 QNetworkRequest 和 QWebPage::setNetworkAccessManager(...) 方法访问请求
    • @eyllanesc 感谢您的澄清。新版本中是否有新的方式访问网络请求?
    • 也许doc.qt.io/qt-5/qwebengineurlrequestinterceptor.html,虽然我认为Qtwebengine提供了所需的功能,但我还没有能够测试它
    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-27
    • 2022-07-08
    • 2011-08-20
    • 2012-05-19
    • 2022-11-22
    • 2010-09-30
    相关资源
    最近更新 更多