Ответ
Tor (The Onion Router) — это бесплатная, децентрализованная сеть с открытым исходным кодом, предназначенная для обеспечения анонимности и конфиденциальности в интернете. Она скрывает IP-адрес пользователя и шифрует его трафик, направляя его через цепочку из нескольких случайно выбранных серверов (узлов или нод).
Принцип работы: «луковая маршрутизация»
Название происходит от аналогии с луковицей, где данные "заворачиваются" в несколько слоев шифрования.
- Построение цепи: Клиентское ПО Tor получает список доступных узлов и строит случайную цепочку, обычно из трех узлов: входного (entry), промежуточного (middle) и выходного (exit).
- Многослойное шифрование: Данные шифруются последовательно для каждого узла цепи, начиная с последнего. Каждый слой шифрования может быть расшифрован только соответствующим узлом.
- Передача трафика:
- Входной узел знает реальный IP-адрес пользователя, но не знает конечного пункта назначения. Он снимает первый слой шифрования и отправляет данные дальше.
- Промежуточный узел не знает ни отправителя, ни получателя. Он лишь передает трафик между входным и выходным узлами.
- Выходной узел знает конечный пункт назначения, но не знает, кто был изначальным отправителем. Он снимает последний слой шифрования и отправляет запрос на целевой ресурс (например, веб-сайт).
Таким образом, ни один узел в цепи не обладает полной информацией о маршруте, что и обеспечивает анонимность.
Пример использования в Python
Для отправки запросов через Tor можно использовать библиотеку requests с SOCKS-прокси. Для смены IP-адреса (цепочки узлов) используется библиотека stem для взаимодействия с контроллером Tor.
import requests
from stem import Signal
from stem.control import Controller
# Требуется запущенный Tor-сервис с открытым ControlPort (обычно 9051)
def get_tor_session():
session = requests.session()
# Настройка прокси для HTTP и HTTPS
session.proxies = {
'http': 'socks5h://127.0.0.1:9050',
'https': 'socks5h://127.0.0.1:9050'
}
return session
# Функция для смены IP-адреса (цепочки Tor)
def renew_connection():
with Controller.from_port(port=9051) as controller:
controller.authenticate(password="your_control_password") # Укажите пароль, если он установлен
controller.signal(Signal.NEWNYM)
print("Новая цепочка Tor создана!")
# Получаем сессию для работы через Tor
s = get_tor_session()
print("Текущий IP (через Tor):", s.get("http://httpbin.org/ip").json()['origin'])
# Меняем IP
renew_connection()
print("Новый IP (через Tor):", s.get("http://httpbin.org/ip").json()['origin'])
Основные цели использования:
- Защита приватности и анонимности.
- Обход интернет-цензуры и блокировок.
- Безопасный доступ к ресурсам в доменной зоне
.onion(скрытые сервисы).
Ответ 18+ 🔞
Слушай, ну вот объясняю тебе, как эта штука работает, а сам думаю — ёпта, какая же гениальная, блядь, идея! Tor, он же "Луковый маршрутизатор". Представь себе обычную луковицу, сука. Только вместо слёз — шифрование, блядь, овердохуищное.
Суть в трёх словах, чтоб ты понял: Твой запрос в интернет — это как записка. Чтобы её никто не прочитал, ты заворачиваешь её в три конверта, блядь. Каждый следующий конверт — для своего курьера. Первый курьер (входной узел) снимает свой конверт, видит только адрес второго курьера, но не видит, что в записке и кому она в итоге. Второй (промежуточный) — просто передаёт оставшийся пакет третьему. Третий, выходной узел, снимает последний конверт и несёт записку по конечному адресу. Он-то видит, куда нести, но понятия не имеет, от кого она изначально пришла, блядь! Ни один из них всей картины не видит. Красота, да? В рот меня чих-пых!
А теперь на пальцах с кодом. Вот смотри, как через Питон это всё крутить. Главное — чтоб у тебя сам Tor в системе запущен был, конечно.
import requests
from stem import Signal
from stem.control import Controller
# Тут мы сессию Requests настраиваем, чтобы она вся через Tor-прокси гонялась
def get_tor_session():
session = requests.session()
# Вот эта магия 'socks5h' — это и есть указание на наш локальный Tor
session.proxies = {
'http': 'socks5h://127.0.0.1:9050',
'https': 'socks5h://127.0.0.1:9050'
}
return session
# А это, сука, святая святых — смена айпишника! Новая цепочка узлов.
def renew_connection():
# Подключаемся к управляющему порту Tor (обычно 9051)
with Controller.from_port(port=9051) as controller:
controller.authenticate() # Если пароль не ставил, то просто пустые скобки
controller.signal(Signal.NEWNYM) # Команда "Дайте мне новую личность, нахуй!"
print("Цепочка обновлена! Теперь ты другой человек, блядь.")
# Пользуемся
s = get_tor_session()
# Смотрим, под каким айпишником нас видят
print("Сейчас я вот этот:", s.get("http://httpbin.org/ip").json()['origin'])
# А теперь — фокус-покус!
renew_connection()
# И оп-па! Мы уже другие!
print("А теперь я вот этот:", s.get("http://httpbin.org/ip").json()['origin'])
Ну и зачем это всё, спросишь? Да обычному человеку — чтобы его, блядь, не отслеживали каждый чих в сети, чтобы цензуру всякую обходить, если живешь там, где интернет — как зона строгого режима. А ещё есть там целая тёмная материя — сайты .onion, скрытые сервисы. Без Tor к ним просто не подступиться, как к танку с голой жопой.
Вот и вся наука. Не так страшен чёрт, как его малюют. Главное — головой думать, а то анонимность анонимностью, а глупость свою, блядь, не спрячешь ни за какими луковыми прокси.