9

Vorrei acquisire il traffico di rete utilizzando Selenium Webdriver su Python. Pertanto, devo usare un proxy (come BrowserMobProxy)Come catturare il traffico di rete usando il selenio webdriver e il proxy browsermob su Python?

Quando 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 pagina web viene caricata correttamente e tutte le richieste sono disponibili e accessibili nel file HAR. Ma quando 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 pagina web non può essere caricato correttamente e il numero di richieste nel file HAR è inferiore al numero di richieste che dovrebbero essere.

Avete qualche idea di quale sia il problema delle impostazioni proxy nel secondo codice? Come dovrei risolverlo per usare webdriver.Firefox correttamente per il mio scopo?

risposta

0

Per me, componente seguente codice funziona bene.

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

Funziona quando si utilizza https? Non fa per me (anche se si imposta 'profile.accept_untrusted_certs = True'). – user3468054