Связывание Python Selenium с браузером TOR

Я исследовал это, но я получил это решение:

from selenium import webdriver
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', 9050)
driver = webdriver.Firefox(profile)
driver.get('http://estoeslapollaconcebol.la')

Это дает эту ошибку:

Не могу загрузить профиль. Профиль Dir: C: \ Users \ HPPAV1 ~ 1 \ AppData \ Local \ Temp \ tmppcuwx3xd Выходные данные Firefox: Нет

Когда я пробую это решение.

from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
profile=webdriver.FirefoxProfile('C:\\Users\\HP PAV 15\\Desktop\\Tor     Browser\\Browser\\TorBrowser\\Data\\Browser\\profile.default\\')
binary =FirefoxBinary('C:\\Users\\HP PAV 15\\Desktop\\Tor Browser\\Browser\\firefox')
#browser = binary.launch_browser(profile)
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)
browser=webdriver.Firefox( binary, profile)
browser.get("http://yahoo.com")
browser.save_screenshot("/Users/admin/Pictures/screenshot.png")
browser.close()

Это дает мне следующую ошибку:

Отслеживание (последний вызов последним): файл "C: /Python34/torfirstscript.py", строка 10, в браузере = webdriver.Firefox (двоичный, профиль) Файл "C: \ Python34 \ lib \ site-packages \ selenium-2.43 .0-py3.4.egg \ selenium \ webdriver \ firefox \ webdriver.py ", строка 46, в init self.NATIVE_EVENTS_ALLOWED и self.profile.native_events_enabled) AttributeError: объект FirefoxBinary не имеет атрибут native_events_enabled

Применяя

browser=webdriver.Firefox( firefox_binary = binary, firefox_profile = profile)

У меня такая ошибка:

Отслеживание (последний вызов последним): файл «C: \ Python34 \ torfirstscript.py», строка 9, в браузере = webdriver.Firefox (firefox_binary = binary, firefox_profile => profile) Файл «C: \ Python34 \ lib \ site- пакеты \ selenium-2.43.0-> py3.4.egg \ selenium \ webdriver \ firefox \ webdriver.py ", строка 59, в init self.binary, тайм-аут), файл" C: \ Python34 \ lib \ site-packages \ selenium-2.43.0-> py3.4.egg \ selenium \ webdriver \ firefox \ extension_connection.py ", строка 47, в> init self.binary.launch_browser (self.profile) Файл "C: \ Python34 \ lib \ site-packages \ selenium-2.43.0-> py3.4.egg \ selenium \ webdriver \ firefox \ firefox_binary.py", строка 64, в launch_browser self._wait_until_connectable () Файл "C: \ Python34 \ lib \ site-packages \ selenium-2.43.0-py3.4.egg \ selenium \ webdriver \ firefox \ firefox_binary.py", строка 108, в _wait_until_connectable self.profile.path, self ._get_firefox_output ())) selenium.common.exceptions.WebDriverException: Сообщение: «Не удается загрузить профессиональную версию. файл. Profile Dir:> C: \ Users \ HPPAV1 ~ 1 \ AppData \ Local \ Temp \ tmpig7zvx_0 \ webdriver-py-profilecopy Вывод Firefox: Нет "

с этим изображением в качестве вывода.

введите описание изображения здесь


person Umar Asghar    schedule 16.12.2015    source источник


Ответы (8)


Рабочий пример с Selenium и Tor на windows:

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

binary = FirefoxBinary(r"C:\Program Files (x86)\TorBrowser\Browser\firefox.exe")
profile = FirefoxProfile(r"C:\Program Files (x86)\TorBrowser\Browser\TorBrowser\Data\Browser\profile.default")

driver = webdriver.Firefox(profile, binary)
driver.get("http://stackoverflow.com")
driver.save_screenshot("screenshot.png")
driver.quit()
person Florent B.    schedule 26.03.2016
comment
Это не работает. Голосование против. - person Rajendra Prasad Patil; 29.11.2020

Обновите селен, используя:

pip install -U selenium

Затем запустите свой код, конечно, после запуска TOR. Эта ошибка была подтверждена и исправлена.

P.S: Не забывайте Sudo, если вы работаете в Linux.

person Black Crescent    schedule 26.03.2016
comment
Первый код неверен, профиль и двоичный файл следует поменять местами. - person alecxe; 26.03.2016
comment
Да, вы правы, мне очень жаль, что я не рассмотрел это подробнее. - person Black Crescent; 30.03.2016
comment
вам не нужно запускать sudo в Linux! - person Corey Goldberg; 05.12.2017

Код для последней установки TOR в Windows:

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

binary = FirefoxBinary(r"C:\Users\<Windows User>\Desktop\Tor Browser\Browser\firefox.exe")
profile = FirefoxProfile(r"C:\Users\<Windows User>\Desktop\Tor Browser\Browser\TorBrowser\Data\Browser\profile.default")

driver = webdriver.Firefox(profile, binary)
driver.get("http://stackoverflow.com")
person Md. Mohsin    schedule 06.04.2016

Я пробовал что-то вроде этого и работал:

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(profile)

Откройте браузер Tor, пока вы это делаете

person Shawn    schedule 03.08.2017

Еще одно простое решение: создайте новый профиль в Firefox или Chrome, настройте свой браузер на использование прокси-сервера Tor (установите прокси-сервер SOCKS 5 на адрес 127.0.0.1 порт 9150), а затем загрузите этот профиль при использовании веб-драйвера.

person Serpentr    schedule 24.06.2020

Я решил свою аналогичную проблему в Windows:

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

binary = FirefoxBinary(r"C:\Users\<Windows User>\Desktop\Tor Browser\Browser\firefox.exe")

driver = webdriver.Firefox(firefox_binary=binary)
driver.profile.set_preference('network.proxy.type', 1)
driver.profile.set_preference('network.proxy.socks', '127.0.0.1')
driver.profile.set_preference('network.proxy.socks_port', 9051)

driver.get("http://stackoverflow.com")
person Grigory Solovyev    schedule 22.03.2017

Поскольку некоторые из этих методов не работают в текущих версиях Windows, возврат ошибки «tor не удалось запустить» будет информировать пользователей о том, что для запуска прокси им потребуется tor, уже запущенный перед выполнением вашего скрипта.

person Yasin Demircioglu    schedule 20.11.2019

Это работает с 12.05.2020. Перед запуском этого скрипта вам необходимо запустить браузер. Это запустит Tor в Chrome. Сделаю это только в режиме инкогнито. Если вы удалите эту опцию, он будет подключаться через вашего провайдера.

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options


tor_proxy = "127.0.0.1:9150"

chrome_options = Options()

'''chrome_options.add_argument("--test-type")'''
chrome_options.add_argument('--ignore-certificate-errors')
'''chrome_options.add_argument('--disable-extensions')'''
chrome_options.add_argument('disable-infobars')
'''chrome_options.add_argument("--incognito")'''
chrome_options.add_argument('--user-data=C:\\Users\\user\\AppData\\Local\\Google\\Chrome\\User Data\\Default')
chrome_options.add_argument('--proxy-server=socks5://%s' % tor_proxy)
driver = webdriver.Chrome(executable_path='C:\\chromedriver.exe', options=chrome_options)
driver.get('https://www.google.com')
time.sleep(4)
driver.switch_to.frame(0)
driver.find_element_by_id("introAgreeButton").click()
person Abhishek Rai    schedule 05.12.2020