2013-08-01 58 views
12

Tôi đã sử dụng selen cho các mô phỏng trình duyệt tự động và duyệt web trong python và nó đã hoạt động tốt cho tôi. Nhưng bây giờ, tôi phải chạy nó sau một máy chủ proxy. Vì vậy, bây giờ selenium mở cửa sổ nhưng không thể mở trang được yêu cầu vì cài đặt proxy không được đặt trên trình duyệt đã mở. Mã hiện tại như sau (mẫu):Chạy selen phía sau máy chủ proxy

from selenium import webdriver 

sel = webdriver.Firefox() 
sel.get('http://www.google.com') 
sel.title 
sel.quit() 

Làm cách nào để thay đổi mã ở trên để hoạt động với máy chủ proxy ngay bây giờ?

+0

bạn có thể thử http://stackoverflow.com/a/38168865/5409601 –

Trả lời

21

Bạn cần phải thiết lập khả năng mong muốn hoặc hồ sơ trình duyệt, như thế này:

profile = webdriver.FirefoxProfile() 
profile.set_preference("network.proxy.type", 1) 
profile.set_preference("network.proxy.http", "proxy.server.address") 
profile.set_preference("network.proxy.http_port", "port_number") 
profile.update_preferences() 
driver = webdriver.Firefox(firefox_profile=profile) 

Xem thêm chủ đề liên quan:

+0

Tôi đã thử những gì bạn đề xuất nhưng vẫn không thể vượt qua máy chủ proxy – Aryabhatt

+0

Tôi đã kiểm tra cài đặt trình duyệt được mở bằng selen sau khi thực hiện cập nhật tùy chọn. Trên thực tế vấn đề là, nó không phải là thiết lập http_port chính xác (và để nó ra là 0), vì nó không kết nối. Có bất kỳ vấn đề nào trong cài đặt cổng không? – Aryabhatt

+0

Hm, bạn có thể thử đặt số này thành một số (không phải chuỗi) không? – alecxe

8

Tài liệu chính thức của Selenium (http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp#using-a-proxy) cung cấp các nguyên tắc rõ ràng và hữu ích về cách sử dụng proxy. Đối với Firefox (mà là trình duyệt được lựa chọn trong mẫu mã của bạn), bạn nên làm như sau:

from selenium import webdriver 
from selenium.webdriver.common.proxy import * 

myProxy = "host:8080" 

proxy = Proxy({ 
    'proxyType': ProxyType.MANUAL, 
    'httpProxy': myProxy, 
    'ftpProxy': myProxy, 
    'sslProxy': myProxy, 
    'noProxy': '' # set this value as desired 
    }) 

driver = webdriver.Firefox(proxy=proxy) 
3

này sẽ thực hiện công việc:

import selenium 
from selenium.webdriver.common.proxy import * 

proxyHost = "my.proxy.host or IP" 
proxyPort = "55555" 

fp = webdriver.FirefoxProfile() 
fp.set_preference("network.proxy.type", 1) 
#fp.set_preference("network.proxy.http", proxyHost) #HTTP PROXY 
#fp.set_preference("network.proxy.http_port", int(proxyPort)) 
#fp.set_preference("network.proxy.ssl", proxyHost) #SSL PROXY 
#fp.set_preference("network.proxy.ssl_port", int(proxyPort)) 
fp.set_preference('network.proxy.socks', proxyHost) #SOCKS PROXY 
fp.set_preference('network.proxy.socks_port', int(proxyPort)) 
fp.update_preferences() 

driver = webdriver.Firefox(firefox_profile=fp) 

driver.get("http://www.whatismyip.com/") 
+1

cách thêm người dùng: vượt qua – Umair

+1

Quan trọng cần lưu ý: nếu 'proxyHost' là tên máy chủ không được chứa tiền tố _" http: // "_ – salvob

0
def install_proxy(PROXY_HOST,PROXY_PORT): 
    fp = webdriver.FirefoxProfile() 
    print PROXY_PORT 
    print PROXY_HOST 
    fp.set_preference("network.proxy.type", 1) 
    fp.set_preference("network.proxy.http",PROXY_HOST) 
    fp.set_preference("network.proxy.http_port",int(PROXY_PORT)) 
    fp.set_preference("network.proxy.https",PROXY_HOST) 
    fp.set_preference("network.proxy.https_port",int(PROXY_PORT)) 
    fp.set_preference("network.proxy.ssl",PROXY_HOST) 
    fp.set_preference("network.proxy.ssl_port",int(PROXY_PORT)) 
    fp.set_preference("network.proxy.ftp",PROXY_HOST) 
    fp.set_preference("network.proxy.ftp_port",int(PROXY_PORT)) 
    fp.set_preference("network.proxy.socks",PROXY_HOST) 
    fp.set_preference("network.proxy.socks_port",int(PROXY_PORT)) 
    fp.set_preference("general.useragent.override","Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/7046A194A") 
    fp.update_preferences() 
    return webdriver.Firefox(firefox_profile=fp) 
Các vấn đề liên quan