2012-07-12 24 views
16

webdriver Python krom için proxy ayarlamak. Bu FF için çalışıyor. Chrome'da bu gibi proxy nasıl ayarlanır? Bu exmaple buldum ama çok yararlı değil. Komut dosyasını çalıştırdığımda hiçbir şey olmuyor (Chrome tarayıcı başlatılmamış). Benim için çalışannasıl ben ben bu kodu kullanıyorum

+0

Açık olanı sorduğum için üzgünüm, ama Firefox’un satırlarını kendi Chrome eşdeğerlerine mi dönüştürdün? Kodunuzu gönderir misiniz? –

+0

Ayrıca, "hiçbir şey olmuyor?" Bir hata mesajı var mı? Herhangi bir çeşit çıkış durumu? –

+0

Internet Explorer'da bir proxy ayarladığımda betiğin çalışmadığını fark ettim (FF açılır, ancak sürücüde başarısız olur ("google.com/";)). Hata mesajı yok, bağlanmayı reddediyor. Internet Explorer'da proxy ayarlarının etkin olmaması durumunda betik çalışıyor. – sarbo

cevap

35
from selenium import webdriver 

PROXY = "23.23.23.23:3128" # IP:PORT or HOST:PORT 

chrome_options = webdriver.ChromeOptions() 
chrome_options.add_argument('--proxy-server=%s' % PROXY) 

chrome = webdriver.Chrome(chrome_options=chrome_options) 
chrome.get("http://whatismyipaddress.com") 
+1

Tarayıcıyı yeniden başlatmadan herhangi bir yöntem var mı? thx – 176coding

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

myProxy = "86.111.144.194:3128" 
proxy = Proxy({ 
    'proxyType': ProxyType.MANUAL, 
    'httpProxy': myProxy, 
    'ftpProxy': myProxy, 
    'sslProxy': myProxy, 
    'noProxy':''}) 

driver = webdriver.Firefox(proxy=proxy) 
driver.set_page_load_timeout(30) 
driver.get('http://whatismyip.com') 
+3

Soruyu cevaplamıyor. – Collin

+1

Chrome - Chrome ile ilgili soru –

6

Onun ...

from selenium import webdriver 

PROXY = "23.23.23.23:3128" # IP:PORT or HOST:PORT 

chrome_options = webdriver.ChromeOptions() 
chrome_options.add_argument('--proxy-server=http://%s' % PROXY) 

chrome = webdriver.Chrome(chrome_options=chrome_options) 
chrome.get("http://whatismyipaddress.com") 
+0

Proxy'nin sauthen olması gerekiyorsa nasıl kullanıcı adı/şifre ekliyorsunuz? – desmond

4

Ben de aynı şeyi ile bir sorunu vardı. ChromeOptions çok garip çünkü düşündüğünüz gibi istenen kapasitelerle entegre değil. Tam ayrıntıları unuttum, ancak temel olarak ChromeOptions, istediğiniz yetenekleri dict yapıp yapmadığınıza göre belirli değerleri varsayılan olarak sıfırlayacak.

def __init__(self, executable_path="chromedriver", port=0, 
      chrome_options=None, service_args=None, 
      desired_capabilities=None, service_log_path=None, skip_capabilities_update=False): 
    """ 
    Creates a new instance of the chrome driver. 

    Starts the service and then creates new instance of chrome driver. 

    :Args: 
    - executable_path - path to the executable. If the default is used it assumes the executable is in the $PATH 
    - port - port you would like the service to run, if left as 0, a free port will be found. 
    - desired_capabilities: Dictionary object with non-browser specific 
     capabilities only, such as "proxy" or "loggingPref". 
    - chrome_options: this takes an instance of ChromeOptions 
    """ 
    if chrome_options is None: 
     options = Options() 
    else: 
     options = chrome_options 

    if skip_capabilities_update: 
     pass 
    elif desired_capabilities is not None: 
     desired_capabilities.update(options.to_capabilities()) 
    else: 
     desired_capabilities = options.to_capabilities() 

    self.service = Service(executable_path, port=port, 
     service_args=service_args, log_path=service_log_path) 
    self.service.start() 

    try: 
     RemoteWebDriver.__init__(self, 
      command_executor=self.service.service_url, 
      desired_capabilities=desired_capabilities) 
    except: 
     self.quit() 
     raise 
    self._is_remote = False 
:

bana ChromeOptions

komplikasyonları hakkında

değişikliği /selenium/webdriver/chrome/webdriver.py aşağıdaki kod endişesi olmadan kendi dicti belirlemenizi sağlar aşağıdaki maymun yama yaptılar

tüm bunlar değişti "skip_capabilities_update" kwarg. Şimdi bunu kendi ritimimi ayarlamak için yapıyorum:

capabilities = dict(DesiredCapabilities.CHROME) 

if not "chromeOptions" in capabilities: 
    capabilities['chromeOptions'] = { 
     'args' : [], 
     'binary' : "", 
     'extensions' : [], 
     'prefs' : {} 
    } 

capabilities['proxy'] = { 
    'httpProxy' : "%s:%i" %(proxy_address, proxy_port), 
    'ftpProxy' : "%s:%i" %(proxy_address, proxy_port), 
    'sslProxy' : "%s:%i" %(proxy_address, proxy_port), 
    'noProxy' : None, 
    'proxyType' : "MANUAL", 
    'class' : "org.openqa.selenium.Proxy", 
    'autodetect' : False 
} 

driver = webdriver.Chrome(executable_path="path_to_chrome", desired_capabilities=capabilities, skip_capabilities_update=True)