59 python browser selenium python-3.x selenium-webdriver
我正在使用Selenium来启动浏览器.如何处理要求浏览器接受证书的网页(URL)?
在Firefox中,我可能有一个这样的网站要求我接受这样的证书:

在Internet Explorer浏览器上,我可能会得到以下内容:

在Google Chrome上:

我再重复一个问题:当我使用Selenium(Python编程语言)启动浏览器(Internet Explorer,Firefox和Google Chrome)时,如何自动接受网站证书?
ale*_*cxe 89
对于Firefox,您需要将accept_untrusted_certs FirefoxProfile()选项设置为True:
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
driver = webdriver.Firefox(firefox_profile=profile)
driver.get('https://cacert.org/')
driver.close()
Run Code Online (Sandbox Code Playgroud)
对于Chrome,您需要添加参数:--ignore-certificate-errors ChromeOptions()
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://cacert.org/')
driver.close()
Run Code Online (Sandbox Code Playgroud)
对于Internet Explorer,您需要设置acceptSslCerts所需的功能:
from selenium import webdriver
capabilities = webdriver.DesiredCapabilities().INTERNETEXPLORER
capabilities['acceptSslCerts'] = True
driver = webdriver.Ie(capabilities=capabilities)
driver.get('https://cacert.org/')
driver.close()
Run Code Online (Sandbox Code Playgroud)
实际上,根据Desired Capabilities文档,设置acceptSslCerts功能True应适用于所有浏览器,因为它是通用的读/写功能:
acceptSslCerts
布尔
会话是否应默认接受所有SSL证书.
Firefox的工作演示:
>>> from selenium import webdriver
Run Code Online (Sandbox Code Playgroud)
设置acceptSslCerts为False:
>>> capabilities = webdriver.DesiredCapabilities().FIREFOX
>>> capabilities['acceptSslCerts'] = False
>>> driver = webdriver.Firefox(capabilities=capabilities)
>>> driver.get('https://cacert.org/')
>>> print(driver.title)
Untrusted Connection
>>> driver.close()
Run Code Online (Sandbox Code Playgroud)
设置acceptSslCerts为True:
>>> capabilities = webdriver.DesiredCapabilities().FIREFOX
>>> capabilities['acceptSslCerts'] = True
>>> driver = webdriver.Firefox(capabilities=capabilities)
>>> driver.get('https://cacert.org/')
>>> print(driver.title)
Welcome to CAcert.org
>>> driver.close()
Run Code Online (Sandbox Code Playgroud)
小智 7
对于Firefox:
ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("default");
myprofile.setAcceptUntrustedCertificates(true);
myprofile.setAssumeUntrustedCertificateIssuer(true);
WebDriver driver = new FirefoxDriver(myprofile);
Run Code Online (Sandbox Code Playgroud)
对于Chrome,我们可以使用:
DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors"));
driver = new ChromeDriver(capabilities);
Run Code Online (Sandbox Code Playgroud)
对于Internet Explorer,我们可以使用:
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
Webdriver driver = new InternetExplorerDriver(capabilities);
Run Code Online (Sandbox Code Playgroud)
对于 Firefox Python:
Firefox 自签名证书错误现已修复: 使用 marionette firefox webdrive python splinter 接受 ssl 证书
“acceptSslCerts”应替换为“acceptInsecureCerts”
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
caps = DesiredCapabilities.FIREFOX.copy()
caps['acceptInsecureCerts'] = True
ff_binary = FirefoxBinary("path to the Nightly binary")
driver = webdriver.Firefox(firefox_binary=ff_binary, capabilities=caps)
driver.get("https://expired.badssl.com")
Run Code Online (Sandbox Code Playgroud)
对于通过 python selenium 提出与无头 chrome 相关的问题的人,您可能会发现https://bugs.chromium.org/p/chromium/issues/detail?id=721739#c102很有用。
看起来你可以做
chrome_options = Options()
chrome_options.add_argument('--allow-insecure-localhost')
Run Code Online (Sandbox Code Playgroud)
或类似以下内容的内容(可能需要适应 python):
ChromeOptions options = new ChromeOptions()
DesiredCapabilities caps = DesiredCapabilities.chrome()
caps.setCapability(ChromeOptions.CAPABILITY, options)
caps.setCapability("acceptInsecureCerts", true)
WebDriver driver = new ChromeDriver(caps)
Run Code Online (Sandbox Code Playgroud)
在 C# (.net core) 中使用Selenium.WebdriverandSelenium.Chrome.Webdriver像这样:
ChromeOptions options = new ChromeOptions();
options.AddArgument("--ignore-certificate-errors");
using (var driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),options))
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
67833 次 |
| 最近记录: |