簡體   English   中英

如何在公司代理后面使用帶有 python-selenium 的 browsermob?

[英]How to use browsermob with python-selenium behind a corporate proxy?

我的測試環境在公司代理下(“ proxy.ptbc.std.com:2538 ”)。我想在 YoTube 上打開特定視頻一段時間(例如 200 秒)並為每次訪問捕獲 har 文件,該過程重復多次以進行大規模測試。 我嘗試了此處找到的不同示例,但 firefox / chrome 瀏覽器無法連接到互聯網,因為它們位於代理后面。

如何在公司代理后面運行“python-selenium + browsermobproxy”並捕獲每個實例的 har 文件。

示例代碼:

 from browsermobproxy import Server
    server = Server("C:\\Utility\\browsermob-proxy-2.1.4\\bin\\browsermob-proxy")
    server.start()
    proxy = server.create_proxy()

    from selenium import webdriver
    profile  = webdriver.FirefoxProfile()
    profile.set_proxy(proxy.selenium_proxy())
    driver = webdriver.Firefox(firefox_profile=profile)


    proxy.new_har("google")
    driver.get("http://www.google.co.in")
    proxy.har # returns a HAR JSON blob

    server.stop()
    driver.quit()

任何幫助,將不勝感激

根據browsermob-proxy 文檔

有時您會希望通過上游代理服務器路由請求。 在這種情況下,通過將 httpProxy 參數添加到您的創建代理請求來指定您的代理服務器:

 [~]$ curl -X POST http://localhost:8080/proxy?httpProxy=yourproxyserver.com:8080 {"port":8081}

根據browsermob-proxy 的源代碼 API for Python

def create_proxy(self, params=None):
    """
    Gets a client class that allow to set all the proxy details that you
    may need to.

    :param dict params: Dictionary where you can specify params
    like httpProxy and httpsProxy
    """
    params = params if params is not None else {}
    client = Client(self.url[7:], params)
    return client

因此,您需要做的就是根據您使用的代理(http 或 https)在create_proxy中指定params

from browsermobproxy import Server
from selenium import webdriver
import json

server = Server("C:\\Utility\\browsermob-proxy-2.1.4\\bin\\browsermob-proxy")
server.start()
# httpProxy or httpsProxy
proxy = server.create_proxy(params={'httpProxy': 'proxy.ptbc.std.com:2538'})
profile = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)

proxy.new_har("google")
driver.get("http://www.google.co.in")
result = json.dumps(proxy.har, ensure_ascii=False)
print(result)

server.stop()
driver.quit()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM