← Назад к вопросам

Что такое TOR?

2.8 Senior🔥 171 комментариев
#DevOps и инфраструктура#Django

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

TOR — The Onion Router

TOR (The Onion Router) — это бесплатная сеть для обеспечения анонимности в интернете. Она позволяет пользователям маршрутизировать свой трафик через несколько промежуточных узлов, скрывая реальный IP адрес и местоположение.

Как работает TOR

Принцип работы основан на луковой маршрутизации (Onion Routing):

Пользователь (IP: 192.168.1.1)
         ↓
    TOR Client
         ↓
   Уровень 1: Node A (видит IP пользователя, но не финальный пункт назначения)
         ↓
   Уровень 2: Node B (видит данные от Node A, но не знает реальный IP)
         ↓
   Уровень 3: Node C (выход в интернет, видит только Node B)
         ↓
   Целевой сервер (видит IP адрес Node C, не реальный IP)

Каждый слой шифруется отдельно, как слои лука (отсюда и название):

Данные пользователя
     ↓
Шифр слоя 3 (ключ C)
     ↓
Шифр слоя 2 (ключ B)
     ↓
Шифр слоя 1 (ключ A)
     ↓
Отправка через Node A → Node B → Node C

Архитектура TOR сети

1. TOR Client — установлен на компьютере пользователя

# Пример использования TOR в Python
import requests
from requests.adapters import HTTPAdapter
from socks import SOCKS5ProxyManager

# TOR по умолчанию слушает на localhost:9050
proxies = {
    'http': 'socks5://127.0.0.1:9050',
    'https': 'socks5://127.0.0.1:9050'
}

response = requests.get('https://api.ipify.org?format=json', proxies=proxies)
print(response.json())  # Вернёт IP адрес exit node, не вашего

2. Relay nodes — промежуточные узлы, которыми добровольно делятся люди

  • Entry node (Guard) — первый узел, знает ваш реальный IP
  • Middle relay — промежуточный узел, ничего не знает
  • Exit node — последний узел, выходит в обычный интернет

3. Directory servers — хранят список всех node в TOR сети

Шифрование в TOR

# Упрощённое представление многоуровневого шифрования
from cryptography.fernet import Fernet

# Каждый узел имеет свой ключ
keys = {
    'node_a': Fernet.generate_key(),
    'node_b': Fernet.generate_key(),
    'node_c': Fernet.generate_key(),
}

data = b"Hello, Target Server!"

# Пользователь шифрует для всех трёх узлов
encrypted = data
for node in ['node_c', 'node_b', 'node_a']:
    cipher = Fernet(keys[node])
    encrypted = cipher.encrypt(encrypted)

# Node A расшифровывает одинарный слой
cipher_a = Fernet(keys['node_a'])
once_decrypted = cipher_a.decrypt(encrypted)

# Отправляет дальше на Node B (всё ещё закрыто)
# Node B расшифровывает свой слой
# Node C расшифровывает финальный слой и видит оригинальные данные

Hidden Services (Dark Web)

TOR позволяет создавать скрытые сервисы без открытого IP адреса:

# Скрытый сервис на TOR
# Адрес: 3g2upl4pq6kufc4m.onion (вымышленный пример)
# Такие сервисы доступны только через TOR

# Например, Facebook имеет скрытый сервис:
# facebookcorewwwi.onion

# Это позволяет людям в странах с цензурой получать доступ

Преимущества TOR

Анонимность — скрывает реальный IP адрес ✅ Конфиденциальность — данные зашифрованы ✅ Обход цензуры — доступ к заблокированным сайтам ✅ Свобода слова — защита от надзора ✅ Бесплатно — спонсируется Tor Project ✅ Decentralized — нет единого сервера контроля

Недостатки TOR

Медленнее обычного интернета — прохождение через 3 узла добавляет задержку ❌ Не полная анонимность — выход node видит ваш трафик ❌ Уязвимость для timing attacks — можно коррелировать входящий и исходящий трафик ❌ JavaScript уязвимости — сайты могут определить реальный IP ❌ Exit node operator может перехватить данные — если соединение не HTTPS

Использование в Python разработке

1. Проверка безопасности

# Проверить, является ли IP из TOR
import geoip2.database

tor_exit_nodes = set()  # Скачать список из Tor Project

user_ip = request.remote_addr
if user_ip in tor_exit_nodes:
    print("Пользователь использует TOR")

2. Защита от DDoS через TOR

# TOR часто используют для атак из-за анонимности
# Защита: rate limiting с учётом exit node IP

from flask_limiter import Limiter

limiter = Limiter(
    key_func=lambda: request.remote_addr,  # Ограничение по IP
    default_limits=["100/hour"]
)

3. Правильное использование

# Установить браузер TOR Bundle (не пишите сам клиент)
# Использовать Tor Browser для веб-серфинга
# Или запустить TOR daemon и проксировать трафик

import subprocess

# Запустить TOR service
tor_process = subprocess.Popen(
    ['tor', '--DataDirectory', '/var/lib/tor'],
    stdout=subprocess.PIPE
)

Легальность

🔵 TOR легален в большинстве стран включая:

  • США
  • Европа
  • Россия

Запрещён или ограничен в:

  • Китай (Great Firewall блокирует)
  • Иран (требует лицензия)
  • Корея

Реальные примеры

  • Wikileaks — использует TOR для получения утечек
  • Edward Snowden — использовал TOR для контакта с журналистами
  • News organizations — используют TOR для защиты источников
  • Facebook Hidden Service — доступен на facebookcorewwwi.onion

Итоги

TOR — это мощный инструмент для приватности и свободы в интернете. Для Python разработчика важно:

  1. Понимать механизм — как работает анонимность
  2. Знать уязвимости — TOR не волшебная пуля
  3. Используй HTTPS — даже с TOR
  4. Не комбинируй — не используй TOR + обычный интернет
  5. Уважай правила — TOR легален, но его использование для преступлений нет