У вашому питанні є 2 аспекти -
- Надсилання запитів за допомогою Tor
- Поновлення з'єднання відповідно до вимоги (у вашому випадку після кожного запиту)
Частина 1
Перший з них легко зробити за допомогою останньої (до версії v2.10.0) requests
бібліотеки з додатковою вимогою requests[socks]
щодо використання проксі-сервера socks.
Встановлення -
pip install requests requests[socks]
Основне використання -
import requests
def get_tor_session():
session = requests.session()
session.proxies = {'http': 'socks5://127.0.0.1:9050',
'https': 'socks5://127.0.0.1:9050'}
return session
session = get_tor_session()
print(session.get("http://httpbin.org/ip").text)
print(requests.get("http://httpbin.org/ip").text)
Частина 2
Щоб поновити IP-адресу Tor, тобто мати свіжий видимий вихідний IP-адресу, потрібно мати можливість підключитися до служби Tor через неї, ControlPort
а потім надіслати NEWNYM
сигнал.
Звичайна установка Tor не вмикає значення ControlPort
за замовчуванням. Вам доведеться відредагувати файл torrc і розкоментувати відповідні рядки.
ControlPort 9051
HashedControlPassword 16:05834BCEDD478D1060F1D7E2CE98E9C13075E8D3061D702F63BCD674DE
Зверніть увагу, що HashedControlPassword
вище вказано пароль "password"
. Якщо ви хочете встановити інший пароль, замініть HashedControlPassword
в torrc, зазначивши вихід, tor --hash-password "<new_password>"
звідки <new_password>
знаходиться пароль, який ви хочете встановити.
.................................................. ..............................
Попередження для користувачів Windows: див. Пост тут .
У Windows виникає проблема, коли налаштування для порту керування у файлі torrc ігнорується, якщо tor було встановлено за допомогою такої команди:
tor --service install
Щоб вирішити проблему, після редагування файлу torrc введіть такі команди:
tor --service remove
tor --service install -options ControlPort 9051
.................................................. ..............................
Гаразд, отже, тепер, коли Tor налаштовано належним чином, вам доведеться перезапустити Tor, якщо він уже запущений.
sudo service tor restart
Tor тепер повинен працювати та працювати на 9051, ControlPort
через який ми можемо надсилати йому команди. Я вважаю за краще використовувати офіційну стовбурну бібліотеку для управління Tor.
Встановлення -
pip install stem
Тепер ви можете відновити Tor IP, викликавши наступну функцію.
Поновити IP -
from stem import Signal
from stem.control import Controller
def renew_connection():
with Controller.from_port(port = 9051) as controller:
controller.authenticate(password="password")
controller.signal(Signal.NEWNYM)
Щоб перевірити, що Tor має новий вихідний IP, просто повторіть код із Частини 1. З якоїсь невідомої мені причини вам потрібно створити новий session
об’єкт, щоб використовувати новий IP.
session = get_tor_session()
print(session.get("http://httpbin.org/ip").text)