我想通过在 Python 上使用 Selenium Webdriver 来捕获网络流量。因此,我必须使用代理(如 BrowserMobProxy)
当我使用 webdriver.Chrome 时:
from browsermobproxy import Server
server = Server("~/browsermob-proxy")
server.start()
proxy = server.create_proxy()
from selenium import webdriver
co = webdriver.ChromeOptions()
co.add_argument('--proxy-server={host}:{port}'.format(host='localhost', port=proxy.port))
driver = webdriver.Chrome(executable_path = "~/chromedriver", chrome_options=co)
proxy.new_har
driver.get(url)
proxy.har # returns a HAR
for ent in proxy.har['log']['entries']:
print ent['request']['url']
网页已正确加载,并且所有请求都可以在 HAR 文件中访问。但是当我使用 webdriver.Firefox 时:
# The same as above
# ...
from selenium import webdriver
profile = webdriver.FirefoxProfile()
driver = webdriver.Firefox(firefox_profile=profile, proxy = proxy.selenium_proxy())
proxy.new_har
driver.get(url)
proxy.har # returns a HAR
for ent in proxy.har['log']['entries']:
print ent['request']['url']
网页无法正常加载,HAR 文件中的请求数小于应有的请求数。
您知道第二个代码中代理设置的问题吗?我应该如何修复它以正确使用 webdriver.Firefox 以达到我的目的?