2017-05-04 64 views
1

我試圖爲FireFox上的每次運行設置一個新的隨機代理。 Itried很多,但只有這一個工作,但想不出如何使它隨機:Selenium Webdriver Firefox 52 Python每次運行選擇隨機代理

profile.set_preference("network.proxy.type", 1) 
      profile.set_preference("network.proxy.http", "Host") 
      profile.set_preference("network.proxy.http_port", port) 
      browser = webdriver.Firefox(profile) 

我試過了這個例子但不工作的:

from selenium.webdriver.common.proxy import * 
myProxy = "xx.xx.xx.xx:xxxx" 

proxy = Proxy({ 
    'proxyType': ProxyType.MANUAL, 
'httpProxy': myProxy, 
'ftpProxy': myProxy, 
'sslProxy': myProxy, 
'noProxy': '' # set this value as desired 
}) 
driver = webdriver.Firefox(proxy=proxy) 
driver.get("http://www.google.com") 

這是最好的辦法,我因爲我可以使用:

myProxy = random.choice(open('data.txt').readlines()) 

我試圖讓從文本文件的代理這項工作,但不知道如何隨機:

with open('IPs.txt') as proxylist: 
for line in proxylist: 
    proxyserv, proxyport = line.split(':') 
    proxy= proxyserv , proxyport 

而且lastlly我想:

def random_line(): 
line_num = 0 
selected_line = '' 
with open('IPs.txt') as f: 
    while 1: 
     line = f.readline() 
     if not line: break 
     line_num += 1 
     if random.uniform(0, line_num) < 1: 
      selected_line = line 
return selected_line.strip() 

這一個獲得隨機線,但無法弄清楚如何將結果解析到 X = IP Y = PORT 然後:

profile.set_preference("network.proxy.type", 1) 
     profile.set_preference("network.proxy.http", "RANDOM IP") 
     profile.set_preference("network.proxy.http_port", Random PORT) 
     browser = webdriver.Firefox(profile) 
+0

端口需要是一個整數。 –

回答

1

Port需要是一個整數,你可能想要使用:

import random 
myProxy = random.choice(open('IPs.txt').readlines()) 
parts = myProxy.strip().split(":") # strip removes spaces and line breaks 
host = parts[0] 
port = int(parts[1]) # port needs to be an integer 
+0

謝謝你的幫助。有用。 – Doni