python - 为 Browsermob/Selenium 激活 Ecc
问题描述
我的问题是使用 Selenium 和 browsermob 的测试对于某些网站来说变得非常慢。这是我当前设置服务器和代理的代码:
server = Server(path_browsermob)
server.start()
proxy = server.create_proxy()
co = webdriver.ChromeOptions()
co.add_argument('--proxy-server={host}:{port}'.format(host='localhost', port=proxy.port))
driver = webdriver.Chrome(path_driver, chrome_options=co)
我已经读过加快测试的一种方法是使用 EC 证书而不是 RSA。但是,如何使用上面的代码激活 ECC?
解决方案
在了解了 browsermob-proxy 和 SSL 证书的这个“问题”之后,我遇到了同样的问题。
在浏览器浏览器代理 python 库中挖掘之后,它看起来好像在创建代理时将任何额外的参数传递到 URL 中。
有了它,您应该能够将API 文档中概述的任何参数传递到 create_proxy()。
这是我的代码片段(虽然,我不确定如何查询代理以查看其是否实际设置)。
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from browsermobproxy import Server
#Create proxy server
bmp_server_opts = {"port": 8080}
bmp_server = Server("browsermob-proxy-2.1.4/bin/browsermob-proxy", options = bmp_server_opts)
bmp_server.start()
time.sleep(1)
proxy_server = bmp_server.create_proxy({"useEcc": True, "trustAllServers": True})
time.sleep(1)
selenium_proxy = proxy_server.selenium_proxy()
#Create Firefox options
firefox_opts = webdriver.FirefoxOptions()
firefox_profile = webdriver.FirefoxProfile()
firefox_opts.set_headless()
firefox_profile.set_proxy(selenium_proxy)
#Fire up a Firefox browser
firefox_browser = webdriver.Firefox(firefox_profile = firefox_profile, firefox_options = firefox_opts)
wait_load = WebDriverWait(firefox_browser, 10)
proxy_server.new_har("103398", options = {'captureHeaders': True, "captureContent": True})
尽管即使将 useEcc 设置为 true 仍然存在一些问题,并且我最终添加了 trustAllServers ,它忽略了 ssl 检查,但如果您需要接近真实的用户体验,我不确定这是否是正确的方法。无论哪种情况,我的 SSL/TLS 连接仍然相当慢。
推荐阅读
- typescript - 注释允许数组或参数传播作为参数的 TypeScript 函数?
- macos - MacOS:如何在有或没有 Chromium 的情况下安装 puppeteer?
- c# - 选择新的Linq where子句
- java - 如何在 Spring Boot 应用程序中使用 RestTemplate 和异常处理程序获取消息或特定类型的异常
- appium - 在 Robot Framewok 中并行运行两个关键字
- java - Apache Tomcat-9.0.16 将属性“maxConcurrentStreamExecution”设置为“100”未找到匹配的属性
- php - 如何编辑 home.php 文件的 css 和 html
- maximo - IBM Maximo Worker Insights - 如何配置它?
- java - 使用按钮创建文件
- blockchain - 我正在使用 RIDE 测试多重签名合约,但出现以下错误?