9

Tôi muốn nắm bắt lưu lượng mạng bằng cách sử dụng Trình quản lý web Selenium trên Python. Vì vậy, tôi phải sử dụng một proxy (như BrowserMobProxy)Làm thế nào để nắm bắt lưu lượng truy cập mạng bằng cách sử dụng selenium webdriver và browsermob proxy trên Python?

Khi tôi sử dụng 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'] 

trang web được nạp đúng cách và tất cả các yêu cầu được cung cấp và truy cập vào các tập tin HAR. Nhưng khi tôi sử dụng 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'] 

Trang web không thể được nạp đúng cách và số lượng yêu cầu trong file HAR là nhỏ hơn so với số lượng yêu cầu mà nên.

Bạn có biết bất kỳ vấn đề nào về cài đặt proxy trong mã thứ hai không? Làm thế nào tôi nên sửa chữa nó để sử dụng webdriver.Firefox đúng cho mục đích của tôi?

Trả lời

0

Đối với tôi, thành phần mã sau hoạt động tốt.

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

Điều đó có phù hợp với bạn khi sử dụng https không? Nó không cho tôi (ngay cả khi đặt 'profile.accept_untrusted_certs = True'). – user3468054

Các vấn đề liên quan