Сконфигурируйте Tor + Selenium на WSL для веб-скрейпинга - PullRequest
0 голосов
/ 26 апреля 2020

Как настроить Tor для использования с Selenium на WSL?

Я пытаюсь использовать Selenium + Geckodriver с Tor , но я не могу заставить их играть хорошо вместе.

Тест 1: Вождение Tor с Selenium + geckodriver.

Я работаю в python3 на WSL. Я загрузил Tor и geckodriver на мою машину.

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

# Paths to Tor-Firefox and geckodriver executables (Windows):
firefox = '/mnt/c/Users/User/Downloads/Tor Browser/Browser/firefox.exe'
gecko = '/mnt/c/Program Files/Mozilla Firefox/geckodriver.exe'

# Create the webdriver.
binary = FirefoxBinary(firefox)
driver = webdriver.Firefox(firefox_binary=binary,executable_path=gecko) # Doesn't work.

# NOTE: a similar approach with Chrome + chromedriver + selenium works as expected. 

Драйвер не создан, python выплевывает следующее Ошибка Сообщение:

SessionNotCreatedException: Сообщение: невозможно найти соответствующий набор возможностей

# but, its not a problem with the geckodriver.

# Show that geckodriver works...
driver = webdriver.Firefox(executable_path=gecko)
url="https://www.google.com/"
driver.get(url)

# But, it isn't working through tor. 
driver.get('https://check.torproject.org') # Sorry, you are not using Tor.

Тест 2: Рандомизация моего IP-адреса с помощью библиотеки torrequest.

Я могу рандомизировать свой IP-адрес с помощью torrequest, но он не распознается как Tor. Я установил tor с apt-get и выполнил некоторую базовую c конфигурацию ( 1 , 2 ) файла torr c. Я установил HashedControlPass с tor --hash-password <password> и добавил это к своему torrc. Я запустил tor с tor в командной строке. Tor запускается с шумом, возможно, проблема заключается в следующем предупреждении?

Ваш сервер (IP: ADRESS: 9001) не смог подтвердить, что его ORPort доступен. Реле не публикуют дескрипторы sh, пока их ORPort и DirPort не будут доступны. Проверьте свои брандмауэры, порты, адрес, файл / etc / hosts и т. Д. c.

Несмотря на предупреждение, я могу рандомизировать свой IP с помощью torrequest, но он не распознается как tor :

import requests
from torrequest import TorRequest

# Add HashedControlPass.
tr=TorRequest(password='<my HashedControlPass>')

# Check initial IP.
session = requests.session()
response = session.get('http://ipecho.net/plain')
ip = response.text
print("IP address is set to: {}".format(ip)) # my actual ip

# Check new IP with tor.
response = tr.get('http://ipecho.net/plain')
ip = response.text
print("IP address is set to: {}".format(ip)) # my ip is now different.

# Check if tor is active.
response = tr.get('https://check.torproject.org')
response.text # Sorry, you are not using Tor.

Тест 3: Использование tor в командной строке (WSL-Ubuntu).

Несмотря на проблемы с предыдущими методами, я могу успешно использовать torify на командной строки.

torify wget 'https://check.torproject.org' 

Возвращает желаемый ответ:

Поздравляем. Этот браузер настроен на использование Tor.

Любые мысли / помощь / советы приветствуются.

...