无法使用BrowserMob代理使用硒访问不安全的https

Ere*_*ein 5 https proxy selenium selenium-chromedriver browsermob

我试图在我的硒(chrome)框架中嵌入browsermob代理以进行UI自动化测试,以便拦截响应和其他网络。

说明:

使用浏览器代理的Selenium Webdriver可以正常工作-HTTP和受保护的HTTPS URL都可以。当我尝试导航到不安全的HTTPS URL时,出现以下Chrome错误:ERR_TUNNEL_CONNECTION_FAILED

这是我的python代码:

class Browser(object):
    display = None
    browser = None

    def __init__(self, implicitly_wait_seconds=10, is_visible=True, display_size=None, browser_name='chrome'):
        if not is_visible:
            self.display = Display(display_size)
        self.server = Server('/home/erez/Downloads/browsermob-proxy-2.1.4/bin/browsermob-proxy')
        self.server.start()
        self.proxy = self.server.create_proxy()
        self.capabilities = DesiredCapabilities.CHROME
        self.proxy.add_to_capabilities(self.capabilities)
        self.proxy.new_har("test", options={'captureHeaders': True, 'captureContent': True})
        self.start_browser(display_size, implicitly_wait_seconds, browser_name)

    def __enter__(self):
        return self

    def __exit__(self, _type, value, trace):
        self.close()

    def start_browser(self, display_size, implicitly_wait_seconds=10, browser_name='chrome'):
        if browser_name == 'chrome':
            chrome_options = Options()
            # chrome_options.add_argument("--disable-extensions")
            chrome_options.add_experimental_option("excludeSwitches", ["ignore-certificate-errors"])
            chrome_options.add_argument("--ssl-version-max")
            chrome_options.add_argument("--start-maximized")
            chrome_options.add_argument('--proxy-server=%s' % self.proxy.proxy)
            chrome_options.add_argument('--ignore-certificate-errors')
            chrome_options.add_argument('--allow-insecure-localhost')
            chrome_options.add_argument('--ignore-urlfetcher-cert-requests')
            self.browser = webdriver.Chrome(os.path.dirname(os.path.realpath(__file__)) + "/chromedriver",
                                            chrome_options=chrome_options, desired_capabilities=self.capabilities)
            self.browser.implicitly_wait(implicitly_wait_seconds)
Run Code Online (Sandbox Code Playgroud)

小智 6

您还可以使用 trustAllServers 作为参数调用 create_proxy:

self.proxy = self.server.create_proxy(params={'trustAllServers':'true'})
Run Code Online (Sandbox Code Playgroud)


小智 3

我在使用 BrowserMob 代理进行 SSL 代理时遇到了同样的问题。为此,您必须在浏览器中安装此链接中定义的证书

转到文档底部,您将看到一个名为“SSL 支持”的部分。在浏览器中安装 ca-certificate-rsa.cer,SSL 代理就不再有问题了。