Использование Selenium на Python для работы с Tor. Не работает по неизвестным причинам

С этого веб-сайта http://www.thedurkweb.com/automated-anonymous-interactions-with-websites-using-python-and-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")

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

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

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

Отслеживание (последний вызов последним): файл "C: /Users/User/PycharmProjects/LittleBot/Main.py", строка 15, в браузере = Browser ('firefox', profile_preferences = proxy_settings) Файл "C: \ Users \ User \ AppData \ Local \ Programs \ Python \ Python35-32 \ lib \ site-packages \ splinter \ browser.py ", строка 63, в драйвере возврата браузера (* 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 \ site-packages \ selenium \ 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 равен None: AttributeError: объект 'Service' не имеет атрибута 'process'

Процесс завершен с кодом выхода 1

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


person NoName Johnson    schedule 16.12.2016    source источник


Ответы (3)


Починил это

pip install selenium==2.53.6

Selenium хочет ввести какую-то штуку с гекконами, а это все портит. Надеюсь, это будет полезно другим людям.

person NoName Johnson    schedule 16.12.2016
comment
какая-то вещь gecko - geckodriver, и теперь это требование в selenium 3.x для работы с Firefox ... аналогично тому, как вам нужен хромированный драйвер для работы с Chrome. - person Corey Goldberg; 26.01.2017

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

из документов selenium python:

"Selenium требует наличия драйвера для взаимодействия с выбранным браузером. Firefox, например, требует geckodriver, который необходимо установить перед запуском приведенных ниже примеров. Убедитесь, что он находится в вашем PATH, например, поместите его в / usr / bin или / USR / местные / бен.

Несоблюдение этого шага приведет к ошибке selenium.common.exceptions.WebDriverException: Сообщение: исполняемый файл geckodriver должен находиться в PATH. "

person Corey Goldberg    schedule 26.01.2017
comment
Это не отвечает на вопрос, а просто указывает на то, где возникает ошибка, и даже не доходит до Tor. - person DebanjanB; 10.12.2018

Если вы используете последнюю версию Selenium и последнюю версию Firefox 1. Загрузите последнюю версию geckodriver 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')    
person AK9309    schedule 24.02.2017
comment
tor - это браузер, он пытается использовать tor вместо firefox, а не использовать firefox для перехода на сайт tor. даже tho tor и firefox построены из одного и того же родителя - person Mr-Programs; 31.12.2018