2016-12-16 20 views
1

С этого сайта http://www.thedurkweb.com/automated-anonymous-interactions-with-websites-using-python-and-tor/Использование Selenium на Python для управления Tor. Не работает по неизвестным причинам

Я сделал следующий код

enter code here 

import stem.process 
from stem import Signal 
from stem.control import Controller 
from splinter import Browser 

proxyIP = "127.0.0.1" 
proxyPort = 9150 

proxy_settings = {"network.proxy.type": 1, 
       "network.proxy.ssl": proxyIP, 
       "network.proxy.ssl_port": proxyPort, 
       "network.proxy.socks": proxyIP, 
       "network.proxy.socks_port": proxyPort, 
       "network.proxy.socks_remote_dns": True, 
       "network.proxy.ftp": proxyIP, 
       "network.proxy.ftp_port": proxyPort 
       } 
browser = Browser('firefox', profile_preferences=proxy_settings) 
browser.visit("http://www.icanhazip.com") 

Не работает. Просто получите эти ошибки

Traceback (последний последний звонок): Файл «C: \ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ selenium \ webdriver \ common \ service.py ", строка 74, в начале stdout = self.log_file, stderr = self.log_file) Файл" C: \ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ subprocess.py », строка 947, в инициализации restore_signals, start_new_session) Файл "C: \ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ Lib \ subprocess.py", строка 1224, в _execute_child STARTUPINFO) FileNotFoundError: [WinError 2] Система не может найти указанный файл

Во время обработки вышеуказанного исключения, другое исключение произошло:

Traceback (самый последний вызов последнего): файла "C: /Users/User/PycharmProjects/LittleBot/Main.py", строка 15, в browser = Browser ('firefox', profile_preferences = proxy_settings) Файл "C: \ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ splinter \ browser.py", строка 63 , в браузере return driver (* args, ** kwargs) Файл «C: \ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ splinter \ driver \ webdriver \ firefox. py ", строка 48, в init timeout = timeout) Файл «C: \ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ selenium \ webdriver \ firefox \ webdriver.py", строка 140, в init self.service.start() Файл «C: \ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ selenium \ webdriver \ common \ service.py", строка 81 , в начале os.path.basename (self.path), self.start_error_message) selenium.common.exceptions.WebDriverException: Сообщение: исполняемый файл geckodriver должен находиться в PATH.

Исключение игнорируется:> TraceBack (самый последний вызов последнего): Файл «C: \ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ Lib \ сайта-пакеты \ селеном \ WebDriver \ common \ service.py ", строка 173, в del self.stop() Файл« C: \ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ selenium \ WebDriver \ Common \ service.py», строка 145, в остановке , если это self.process нет: AttributeError: объект 'Сервис' не имеет атрибут 'процесс'

процесс закончил с кодом выхода 1

Я установил все библиотеки, запрошенные на веб-странице, и даже сделал это - обновить selenium в надежде избавиться от ошибок. Есть ли способ решить это? До сих пор все, что я знаю, это то, что программа работает нормально, пока не появится «браузер = браузер» («firefox», profile_preferences = proxy_settings). Также браузер Tor открыт, поэтому проблем нет. Был поиск полтора часа для решения этого вопроса, и я пробовал все, что касается этой темы.

ответ

0

Исправлено: pip install selenium == 2.53.6 Selenium хочет представить какую-то вещь gecko, и это возится со всем. Надеюсь, что это полезно для других людей.

+0

«некоторые геккон вещь» является geckodriver, и теперь это требование в селеном 3.x управлять Firefox ... подобно тому, как вам нужно chromedriver ездить Chrome. –

0

Чтобы использовать selenium 3.x с Firefox, вы должны установить geckodriver. Официальный сайт для релизов здесь: https://github.com/mozilla/geckodriver/releases

из селена питона документы:

"Selenium requires a driver to interface with the chosen browser. Firefox, for example, requires geckodriver, which needs to be installed before the below examples can be run. Make sure it’s in your PATH, e. g., place it in /usr/bin or /usr/local/bin.

Failure to observe this step will give you an error selenium.common.exceptions.WebDriverException: Message: ‘geckodriver’ executable needs to be in PATH."

0

Если вы используете последнюю версию селена и последний Firefox 1. Скачать последнюю geckodriver TOR браузер 2. Открыть, скрыть Это. 3. запустить код:

from selenium import webdriver 
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary 
from selenium.webdriver.firefoc.firefox_profile import FirefoxProfile 

binary = FirefoxBinary('C:/Program Files(x86)/Mozilla Firefox/firefox.exe') 
profile = webdriver.FirefoxProfile() 

profile.set_preference('network.proxy.type', 1) 
profile.set_preference('network.proxy.socks', '127.0.0.1') 
profile.set_preference('network.proxy.socks_port', 9150) 

driver = webdriver.Firefox(firefox_binary = binary, firefox_profile = profile, executable_path='path/to/geckodriver.exe') 
driver.get('https://check.torproject.org')