我正在尝试从(本地) 自动推送备份文件 headless 数据服务器,到(远程)安全备份服务器 - [出于](目前)需要通过网页完成。
我编写了一个运行良好的 Selenium/Python 脚本,但忽略了所有证书错误——在这种情况下,这不是所需的行为。
...安装:
cp /path/to/geckodriver-0.29.0/target/debug/geckodriver /usr/local/bin
大多数人(在我的搜索中)似乎都有确切的/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/