2

我的问题是关于在python(2.7)for Firefox(Geckodriver v0.18.0-win64)中为selenium(3.4.3。)编码设置代理。 规格 http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp 只提供了一个java示例。在python for Firefox中为硒设置代理Geckodriver

from selenium import webdriver 
PROXY = "94.56.171.137:8080" 
class Proxy(object):   
    def __call__(self):  
     self.base_url = "https://whatismyip.com" 
     print self.base_url   
     # proxy json object 
     desired_capability = webdriver.DesiredCapabilities.FIREFOX['proxy']={ 
      "httpProxy":PROXY, 
      "ftpProxy":PROXY, 
      "sslProxy":PROXY, 
      #"noProxy":None, 
      "proxyType":"manual" 
     }  
     firefox_profile = webdriver.FirefoxProfile() 
     firefox_profile.set_preference("browser.privatebrowsing.autostart", True) 
     self.driver = webdriver.Firefox(executable_path='D:\Code\Drivers\geckodriver',firefox_profile=firefox_profile, capabilities=desired_capability)   
     self.driver.get(self.base_url)  

if __name__ == "__main__":   
    proxy_test = Proxy() 
    proxy_test() 

我收到以下错误消息:

selenium.common.exceptions.WebDriverException:消息:无法加载 轮廓。可能的firefox版本不匹配。您必须使用GeckoDriver 代替Firefox 48+。

如果我评论有关代理的代码,我能够以隐私模式获取页面,并以指定的配置文件。我认为这是代理乱了事。

+0

我认为这个错误是相当自我解释的。你需要更新Firefox。 – Kapil

+0

不,我有最新的Firefox版本55.0.3。 – Yaso

回答

2

我花了数小时找到答案,我想分享它。 简单的问题出现在代理规范中。 最初的代理和端口是一个字符串

PROXY = "94.56.171.137:8080" 

答案应该使端口为数字

PROXY = "94.56.171.137" 
PORT = 8080 

下面是代码

from selenium import webdriver 

PROXY = "94.56.171.137" 
PORT = 8080 

class Proxy(object):   
    def __call__(self):  
     self.base_url = "https://whatismyip.com" 
     print self.base_url   
     # https://github.com/mozilla/geckodriver 
     # proxy json object 
     desired_capability = webdriver.DesiredCapabilities.FIREFOX 
     desired_capability['proxy']={ 
      "proxyType":"manual", 
      "httpProxy":PROXY, 
      "httpProxyPort": PORT, 
      "ftpProxy":PROXY, 
      "ftpProxyPort": PORT, 
      "sslProxy":PROXY, 
      "sslProxyPort" : PORT 
     }   

     firefox_profile = webdriver.FirefoxProfile() 
     firefox_profile.set_preference("browser.privatebrowsing.autostart", True) 
     self.driver = webdriver.Firefox(executable_path='D:\Drivers\geckodriver',firefox_profile=firefox_profile, capabilities=desired_capability) 

     self.driver.get(self.base_url)  

if __name__ == "__main__":  

    proxy_test = Proxy() 
    proxy_test() code here 
3

YASO的回答没”的其余部分t为我工作,而我用这个

proxyString = "Ip:port" 

desired_capability = webdriver.DesiredCapabilities.FIREFOX 
     desired_capability['proxy'] = { 
      "proxyType": "manual", 
      "httpProxy": proxyString, 
      "ftpProxy": proxyString, 
      "sslProxy": proxyString 
     }