1. ホーム
  2. python

[解決済み] Seleniumで証明書を扱うには?

2023-01-05 03:03:10

質問

私は セレン を使ってブラウザを起動しています。ブラウザが証明書を受け入れるかどうかを尋ねるウェブページ(URL)にはどのように対処すればよいでしょうか。

Firefoxで、このように証明書を受け入れるかどうかを聞いてくるようなWebサイトがあるかもしれません。

Internet Explorerのブラウザでは、このように表示されることがあります。

Google Chromeの場合。

私の質問を繰り返します。 どのように私はSelenium(Pythonプログラミング言語)でブラウザ(Internet Explorer、Firefox、Google Chrome)を起動するときに、ウェブサイトの証明書の受け入れを自動化することができます。 ?

どのように解決するのですか?

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()

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()

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()


実は Desired Capabilities のドキュメントによると 設定 acceptSslCerts ケーパビリティを True は、一般的な読み取り/書き込み能力であるため、すべてのブラウザで動作するはずです。

acceptSslCerts

ブーリアン

セッションがすべてのSSL証明書を受け入れるかどうか をデフォルトで受け入れるかどうか。


Firefox用の動作確認済みデモです。

>>> from selenium import webdriver

設定 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()

設定 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()