python selenium selenium-webdriver python-requests browsermob

¿Cómo capturar el tráfico de red usando selenium webdriver y proxy de browsermob en Python?



selenium-webdriver python-requests (2)

Me gustaría capturar el tráfico de red mediante el uso de Selenium Webdriver en Python. Por lo tanto, debo usar un proxy (como BrowserMobProxy)

Cuando uso 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'']

la página web se carga correctamente y todas las solicitudes están disponibles y accesibles en el archivo HAR. Pero cuando uso 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'']

La página web no se puede cargar correctamente y la cantidad de solicitudes en el archivo HAR es menor que la cantidad de solicitudes que deberían ser.

¿Tiene alguna idea de cuál es el problema de la configuración proxy en el segundo código? ¿Cómo debo solucionarlo para usar webdriver.Firefox correctamente para mi propósito?


Para mí, el siguiente componente de código funciona bien.

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