python - Selenium、Python、Marionette 证书警告

标签 python selenium ssl firefox

我正在尝试从(本地) 自动推送备份文件 headless 数据服务器,到(远程)安全备份服务器 - [出于](目前)需要通过网页完成。
我编写了一个运行良好的 Selenium/Python 脚本,但忽略了所有证书错误——在这种情况下,这不是所需的行为。

  • 平台:树莓派 3B/Raspbian 10
  • Selenium:v3.141.0(来自 Raspbian 存储库)
  • Geckdriver:v0.29(使用 rust v1.50 从 github 发布源构建)
    ...安装:cp /path/to/geckodriver-0.29.0/target/debug/geckodriver /usr/local/bin
  • Firefox:v78.7.0esr(来自 Raspbian 存储库)

  • 大多数人(在我的搜索中)似乎都有确切的/opposite/问题 - IE。他们想要禁用安全机制......但是在这些许多不同的解决方案中反转(字面意思是真/假)逻辑并没有让我找到一个允许我启用证书检查的解决方案。
    这是一些(缩写和注释)示例代码,我的(许多)尝试之一:
    #!/bin/python3
    
    from selenium import webdriver  # selenium instance
    from selenium.webdriver.firefox.options import Options  # headless
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities  # Reject bad SSL
    
    # Set headless mode
    opts = Options()
    opts.headless = True
    
    # Enforce certificate checking - [this fails]
    caps = DesiredCapabilities.FIREFOX
    print(caps)  # {'browserName': 'firefox', 'marionette': True, 'acceptInsecureCerts': True}
    caps['acceptInsecureCerts'] = False
    print(caps)  # {'browserName': 'firefox', 'marionette': True, 'acceptInsecureCerts': False}
    
    driver = webdriver.Firefox(capabilities=caps, options=opts)
    
    # LOG FILE ENTRY APPEARS in geckodriver.log:
    # "Marionette  WARN  TLS certificate errors will be ignored for this session"
    
    driver.get("https://wrong.host.badssl.com")
    
    # <<perform upload here>>
    
    driver.save_screenshot("test.png")  # Page was NOT blocked! :(
    
    driver.close()
    
    我的问题是:
    可以对此代码进行哪些修改,以使 <<upload>>当(且仅当)SSL/TLS 证书有效时会发生吗?
    如果 <<upload>> 显示原因 {"self-signed cert", "cert revoked", etc},则额外增加一行代码的额外荣誉被阻止。

    最佳答案

    from selenium import webdriver
    capabilities = webdriver.DesiredCapabilities().FIREFOX
    capabilities['acceptInsecureCerts'] = False
    capabilities['marionette'] = True
    driver = webdriver.Firefox(desired_capabilities=capabilities)
    
    
    # LOG FILE ENTRY APPEARS in geckodriver.log:
    # "Marionette  WARN  TLS certificate errors will be ignored for this session"
    
    driver.get("https://wrong.host.badssl.com")
    
    您应该使用 desiredcapability ,使用上面的代码

    关于python - Selenium、Python、Marionette 证书警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66392387/

    相关文章:

    java - 将 Grizzly 的 keystore 设置为使用 jar 中的 jks

    python - 创建信号量时“设备上没有剩余空间”?

    python - 值错误: ['path' ]

    python - scikit-learn 的 LassoCV 的评分指标

    具有函数值的 Python 3 枚举

    javascript - 在模板中使用定位器名称来编写更简单的 E2E 测试是一个坏主意吗?

    python - 如何在扭曲的 SSL 客户端中验证 SSL 服务器证书

    java - 无法通过 getAttribute 获取 'index' 节点详细信息

    python - Selenium:获取特定类(class)的 child

    java - TLS-Package 后的神秘字节