python - Python Selenium - 如何在初始化 PhantomJS 驱动程序实例时配置客户端证书文件
问题描述
我需要使用证书 (.cer) 连接到网站。我将 PhantomJS 与 Python 一起使用。这是连接代码:
driver = webdriver.PhantomJS(executable_path="Selenium/bin/phantomjs",
service_args=['--ssl-client-certificate-file=certificate.cer'],
desired_capabilities=dcap)
但是,返回的 HTML 是:
<html><head></head><body></body></html>
网址是:
about:blank
但如果我删除:
'--ssl-client-certificate-file=certificate.cer'
然后我得到正确的 URL 和一些 HTML 内容(由于证书丢失而被禁止的消息)。
知道我能做些什么来解决这个问题吗?
更新 1 Ghostdriver.log 包含以下内容:
[INFO - 2018-04-27T15:18:44.680Z] GhostDriver - Main - running on port 55768
[INFO - 2018-04-27T15:18:44.960Z] Session [46addab0-4a2e-11e8-879b-bb8782c84ba6] - page.settings - {"XSSAuditingEnabled":false,"javascriptCanCloseWindows":true,"javascriptCanOpenWindows":true,"javascriptEnabled":true,"loadImages":true,"localToRemoteUrlAccessEnabled":false,"userAgent":"Mozilla/5.0 (Macintosh; Intel Mac OS X) AppleWebKit/538.1 (KHTML, like Gecko) PhantomJS/2.1.1 Safari/538.1","webSecurityEnabled":true}
[INFO - 2018-04-27T15:18:44.960Z] Session [46addab0-4a2e-11e8-879b-bb8782c84ba6] - page.customHeaders: - {}
[INFO - 2018-04-27T15:18:44.960Z] Session [46addab0-4a2e-11e8-879b-bb8782c84ba6] - Session.negotiatedCapabilities - {"browserName":"phantomjs","version":"2.1.1","driverName":"ghostdriver","driverVersion":"1.2.0","platform":"mac-unknown-64bit","javascriptEnabled":true,"takesScreenshot":true,"handlesAlerts":false,"databaseEnabled":false,"locationContextEnabled":false,"applicationCacheEnabled":false,"browserConnectionEnabled":false,"cssSelectorsEnabled":true,"webStorageEnabled":false,"rotatable":false,"acceptSslCerts":false,"nativeEvents":true,"proxy":{"proxyType":"direct"},"phantomjs.page.settings.javascriptEnabled":true}
[INFO - 2018-04-27T15:18:44.960Z] SessionManagerReqHand - _postNewSessionCommand - New Session Created: 46addab0-4a2e-11e8-879b-bb8782c84ba6
[INFO - 2018-04-27T15:19:26.438Z] SessionManagerReqHand - _cleanupWindowlessSessions - Asynchronous Sessions clean-up phase starting NOW
更新 2 - 使用 logging.getLogger()
2018-04-30 09:39:56,730 - selenium.webdriver.remote.remote_connection - DEBUG - POST http://127.0.0.1:57672/wd/hub/session {"requiredCapabilities": {}, "desiredCapabilities": {"platform": "ANY", "browserName": "phantomjs", "version": "", "phantomjs.page.settings.javascriptEnabled": true, "javascriptEnabled": true}}
2018-04-30 09:39:56,745 - selenium.webdriver.remote.remote_connection - DEBUG - Finished Request
2018-04-30 09:39:56,745 - selenium.webdriver.remote.remote_connection - DEBUG - POST http://127.0.0.1:57672/wd/hub/session/0f971930-4c52-11e8-8957-cd8a79dc644c/url {"url": "https://idp.iamfas.belgium.be/fasui/login/commercialnoidservice", "sessionId": "0f971930-4c52-11e8-8957-cd8a79dc644c"}
2018-04-30 09:39:56,971 - selenium.webdriver.remote.remote_connection - DEBUG - Finished Request
2018-04-30 09:39:56,971 - selenium.webdriver.remote.remote_connection - DEBUG - GET http://127.0.0.1:57672/wd/hub/session/0f971930-4c52-11e8-8957-cd8a79dc644c/source {"sessionId": "0f971930-4c52-11e8-8957-cd8a79dc644c"}
2018-04-30 09:39:56,974 - selenium.webdriver.remote.remote_connection - DEBUG - Finished Request
HTML FOUND:
<html><head></head><body></body></html>
2018-04-30 09:39:56,974 - selenium.webdriver.remote.remote_connection - DEBUG - GET http://127.0.0.1:57672/wd/hub/session/0f971930-4c52-11e8-8957-cd8a79dc644c/url {"sessionId": "0f971930-4c52-11e8-8957-cd8a79dc644c"}
2018-04-30 09:39:56,980 - selenium.webdriver.remote.remote_connection - DEBUG - Finished Request
URL: about:blank
2018-04-30 09:39:56,980 - selenium.webdriver.remote.remote_connection - DEBUG - POST http://127.0.0.1:57672/wd/hub/session/0f971930-4c52-11e8-8957-cd8a79dc644c/element {"using": "id", "sessionId": "0f971930-4c52-11e8-8957-cd8a79dc644c", "value": "proceedButton"}
2018-04-30 09:39:57,278 - selenium.webdriver.remote.remote_connection - DEBUG - Finished Request
解决方案
要在通过PhantomJS(.cer)
和 Python连接到网站时使用证书,您需要提供--ssl-client-certificate-file的绝对路径,例如C:\path\to\certificate.cer作为 a ,您可以使用以下内容代码行:service_args
driver = webdriver.PhantomJS(executable_path="Selenium/bin/phantomjs", service_args=['--ssl-client-certificate-file=C:\path\to\certificate.cer'], desired_capabilities=dcap)
推荐阅读
- javascript - 在 django 中显示图像
- laravel - 如何在laravel中使用数组保存多个数据
- linux - 如果我导入“C”,则无法交叉编译
- javascript - 使用矩阵查找最短路径遍历
- javascript - 如何检查整个对象的数组(或至少 2 个键值对)[在 reactjs 中]?
- r - 如何调整interaction.plot和lineplot.CI的图例位置?
- javascript - 带有 Valuegetter 的 Ag Grid 聚合函数
- c# - 如何检查用户是否在 ASP.NET Core 中经过身份验证
- javascript - 检查 JS 变量是否匹配正则表达式模式
- oracle - 使用 Oracle BI Publisher 在邮件正文中插入变量或日期时间