¿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)
Acabo de tropezar con este proyecto https://github.com/derekargueta/selenium-profiler . Escupe todos los datos de red para una URL. No debería ser difícil de hackear e integrar en cualquier prueba que esté ejecutando.
Fuente original: https://www.openhub.net/p/selenium-profiler