- Что такое Tor
- Как установить Tor в Windows
- Как установить Tor в Windows в роли прокси
- Как настроить прокси Tor для Google Chrome
- Как настроить Tor в Windows в роли службы
- Установка Tor в Debian, Ubuntu (linux)
- Как перезагрузить Tor
- Как проверить работу Tor
- Как запустить несколько экземпляров Tor с разными IP одновременно
- Как добавить Tor в автозагрузку
- Как менять IP в Tor через консоль SSH
- Как использовать Tor как прокси через PHP и менять свой IP (готовый класс)
- Как выходить из Tor под определённым GEO IP
- Как разрешить строго определённые страны GEO IP
- Как запретить строго определённые страны GEO IP
Что такое Tor
Tor — это распределённая сеть прокси-серверов. С помощью Tor можно маскировать и подменять свой реальный IP, чтобы обходить блокировки и другие подобные ограничения.
На официальном сайте можно скачать браузер на основе Firefox, который с помощью сети распределённых прокси-серверов позволяет анонимно серфить в интернете. Ниже будет описан способ использовать Tor в роли прокси для php
curl
.
Как установить Tor в Windows
Если вам нужно использовать Tor только для сёрфинга в интернете, то будет достаточно скачать браузер Tor.
Как установить Tor в Windows в роли прокси
Также, есть возможность установить сам проксер Tor, без браузера. Этот вариант позволит использовать его в роли прокси для любой программы, которая поддерживает прокси. Например, можно настроить Tor в роли прокси для Google Chrome или Mozilla Firefox.
- Переходим в Downloads — скачиваем
Windows Expert Bundle
- Создаём каталог
C:\Tor\
, туда распаковываем содержимое архива (в архиве 2 каталога:Data
иTor
) - Создаём файл
C:\Tor\Data\Tor\torrc
, пишем в него:DataDirectory Tor # Каталог с рабочими файлами Tor GeoIPFile geoip # Каталог с IPv4 GeoIPv6File geoip6 # Каталог с IPv6 AvoidDiskWrites 1 # Проводить меньше операций с диском SocksPort 9050 # Порт для работы Tor ControlPort 9051 # Порт для контроля CookieAuthentication 0 # Отключаем авторизацию на контрольный порт
- На рабочем столе создаём Ярлык (чтобы запускать Tor) со следующим расположением объекта:
C:\Tor\Tor\tor.exe -f "C:\Tor\Data\Tor\torrc"
Теперь Можно запустить Ярлык, и если всё верно, увидите следующее:
Отлично! Tor работает в роли прокси по адресу: socks5h://127.0.0.1:9050
(помните порт SocksPort
из настроек? Его можно менять на своё усмотрение, впрочем как и порт контроля ControlPort
).
Можно запускать много экземпляров Tor одновременно, сделав несколько подобных примеру выше каталогов, главное чтобы они работали на разных портах.
Как настроить прокси Tor для Google Chrome
У
Google Chrome
нет отдельного профиля для работы с прокси, поэтому настройка будет затрагивать глобальное подключение к интернету. Проще говоря, все запросы в интернет через любые программы будут идти через Tor прокси
Чтобы трафик Google Chrome прогонять через прокси Tor, достаточно сделать следующее:
- Открываем настройки Google Chrome
chrome://settings/
- Отматываем страницу настроек до конца и открыть раздел Дополнительные
- В разделе Система находим ссылку
Настройки прокси-сервера
- В открывшемся окне переходим к настройке сети
- Сохраняем все изменения. Проверить работу прокси можно на странице https://check.torproject.org/. Если всё настроено верно, увидите надпись: Congratulations. This browser is configured to use Tor.
Как настроить Tor в Windows в роли службы
Чтобы не запускать каждый раз Ярлык, можно настроить Tor в роли службы Windows.
Для этого достаточно:
-
Открыть командную строку: Win+R —
cmd
- Прописать туда:
C:\Tor\Tor\tor.exe --service install -options -f "C:\Tor\Data\Tor\torrc"
Служба установлена. Чтобы управлять ею в дальнейшем, можно создать ярлыки под следующие команды:
- Старт службы Tor
C:\Tor\Tor\tor.exe --service start
- Остановка службы Tor
C:\Tor\Tor\tor.exe --service stop
Или управлять службой через Проводник:
Открыть командную строку: Win+R — команда services.msc
Чтобы удалить сервис, достаточно воспользоваться командой:
C:\Tor\Tor\tor.exe --service remove
Установка Tor в Debian, Ubuntu (linux)
В консоль SSH пишем команду, которая установит Tor, если он ещё не установлен, к нам на сервер:
apt update
apt install tor
Чтобы проверить успешность установки Tor, можно воспользоваться командой:
curl --socks5 localhost:9050 --socks5-hostname localhost:9050 -s https://check.torproject.org/ | cat | grep -m 1 Congratulations | xargsЕсли всё нормально, увидите строку:
Congratulations. This browser is configured to use Tor.
Теперь нужно отредактировать файл конфигурации Tor:
nano /etc/tor/torrc
Просто добавьте в любом месте в файл (например, в начало) 2 строки и сохраните изменения:
ControlPort 9051 # порт для контроля CookieAuthentication 0 # не использовать куки для контроля авторизации
Затем перезагружаем Tor
Как перезагрузить Tor
service tor restart
Как проверить работу Tor
torsocks wget -qO - https://api.ipify.org; echo
В результате, вы увидите IP, с которого вас видит внешний сервис или сайт. Если он отличается от адреса сервера, значит всё в порядке.
Как запустить несколько экземпляров Tor с разными IP одновременно
В Linux можно создать несколько процессов Tor на разных портах, таким образом получая сеть выходных прокси. Покажу для примера 2 шт., но сделать можно бесконечно много. Для этого:
- Создаём
/etc/tor/torrc.9052
:nano /etc/tor/torrc.9052
- Прописываем внутри:
SocksPort 9052 # Порт, на котором висит Tor ControlPort 9053 # Порт для контроля, с его помощью можно менять IP CookieAuthentication 0 # Авторизация для контроля отключена DataDirectory /var/lib/tor9052 # Тут хранятся файлы либы, адрес каждый раз уникальный
- Копируем готовый конфиг в новый файл:
cd /etc/tor cp torrc.9052 torrc.9054
- Прописываем в
torrc.9054
:SocksPort 9054 # Порт, на котором висит Tor ControlPort 9055 # Порт для контроля, с его помощью можно менять IP CookieAuthentication 0 # Авторизация для контроля отключена DataDirectory /var/lib/tor9054 # Тут хранятся файлы либы, адрес каждый раз уникальный
Теперь можно запустить дополнительные экземпляры Tor:
tor -f /etc/tor/torrc.9052 & tor -f /etc/tor/torrc.9054 &
Знак
&
позволяет держать процесс в фоне.
А чтобы не привязываться к консоли, можно использоватьnohup
:nohup tor -f /etc/tor/torrc.9052 & nohup tor -f /etc/tor/torrc.9054 &
Чтобы проверить, работает ли Tor на нужном порту, можно воспользоваться командой:
netstat -lnt | grep 9052
Если всё нормально, то в результате будет:
tcp 0 0 127.0.0.1:9052 0.0.0.0:* LISTEN
Как добавить Tor в автозагрузку
Вообще, сервис Tor при установке автоматически включается в автозагрузку, но вот вариант на случай, когда его экземпляров много. Открываем crontab:
crontab -e
И прописываем туда:
# Tor @reboot tor -f /etc/tor/torrc.9052 & @reboot tor -f /etc/tor/torrc.9054 & @reboot tor -f /etc/tor/torrc.9056 & # И так далее по вашему списку экземпляров Tor ...
@reboot
— сигнал, какую команду запустить после перезагрузки сервера.
Как менять IP в Tor через консоль SSH
В консоль SSH пишем:
(echo authenticate '""'; echo signal newnym; echo quit) | nc localhost 9051
Теперь так же можно проверить новый IP:
curl --socks5 127.0.0.1:9050 http://checkip.amazonaws.com/
Как использовать Tor как прокси через PHP и менять свой IP (готовый класс)
class TorProxy { private $ch, $proxy; function __construct() { $torSocks5Proxy = "socks5://127.0.0.1:9050"; $this -> ch = curl_init(); curl_setopt( $this -> ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5 ); curl_setopt( $this -> ch, CURLOPT_PROXY, $torSocks5Proxy ); curl_setopt( $this -> ch, CURLOPT_SSL_VERIFYPEER, false ); curl_setopt( $this -> ch, CURLOPT_FOLLOWLOCATION, true ); curl_setopt( $this -> ch, CURLOPT_RETURNTRANSFER, true ); curl_setopt( $this -> ch, CURLOPT_HEADER, false ); } public function curl( $url, $postParameter = null ) { if ( count( $postParameter ) > 0 ) curl_setopt( $this -> ch, CURLOPT_POSTFIELDS, $postParameter ); curl_setopt( $this -> ch, CURLOPT_URL, $url ); return curl_exec( $this -> ch ); } public function changeProxyIdentity() { $ip = '127.0.0.1'; $port = '9051'; $fp = fsockopen( $ip, $port, $error_number, $err_string, 10 ); if ( !$fp ) { echo "Error while changing Tor proxy identity: {$error_number} : {$err_string}"; return false; } else { fwrite( $fp, "AUTHENTICATE\n" ); $received = fread( $fp, 512 ); fwrite( $fp, "signal NEWNYM\n" ); $received = fread( $fp, 512 ); } fclose( $fp ); return $received; } function __destruct() { curl_close( $this -> ch ); } }
Используя класс выше, можно проверить правильность работы Tor с помощью GET запроса:
$proxy = new TorProxy(); // Инициализируем подключение к Tor $proxy -> changeProxyIdentity(); // Меняем свой IP echo $proxy -> curl( "http://check.torproject.org" ); // Отправляем запрос с помощью curl
Ниже пример того, как можно отправлять POST запросы через Tor (используя вышеуказанный класс):
$proxy = new TorProxy(); ; // Инициализируем подключение к Tor $proxy -> changeProxyIdentity(); // Меняем свой IP $parameter = array( // Определяем параметры для POST 'parameter1' => 'value1', 'parameter2' => 'value2' ); echo $proxy -> curl( "http://check.torproject.org", $parameter ); // Отправляем запрос с помощью curl
Как выходить из Tor под определённым GEO IP
По умолчанию, Tor выдаёт случайный IP из случайной страны. Чтобы иметь возможность ограничить выбор страны, из которой будет выдан IP, необходимо внести некоторые настройки в конфигурацию Tor.
Расположение файла конфигурации Tor в зависимости от операционной системы:
- Windows:
{каталог Tor}\Browser\TorBrowser\Data\Tor\torrc
. Каталог можно посмотреть в Свойствах Ярлыка, с которого запускается Tor Browser- Linux (Debian, Ubuntu):
/etc/tor/torrc
Внутри файл конфигурации выглядит примерно так:
# This file was generated by Tor; if you edit it, comments will not be preserved # The old torrc file was renamed to torrc.orig.1 or similar, and Tor will ignore it DataDirectory С:\Tor Browser\Browser\TorBrowser\Data\Tor GeoIPFile С:\Tor Browser\Browser\TorBrowser\Data\Tor\geoip GeoIPv6File С:\Tor Browser\Browser\TorBrowser\Data\Tor\geoip6В него мы и добавляем изменения
Как разрешить строго определённые страны GEO IP
ExitNodes {US},{GB},{DE} # Разрешённые страны, через запятую (США, Великобритания, Германия) StrictExitNodes 1
Ниже пример, как настроить выход строго из России:
ExitNodes {RU} # Выходные ноды разрешены только из России StrictExitNodes 1
Как запретить строго определённые страны GEO IP
StrictExitNodes {IN},{PR},{CG} # Запрещённые страны, через запятую (Индия, Пуэрто-Рико, Конго)
Если вы используете
ExitNodes
, тоStrictExitNodes
игнорируется
Список кодов и стран: https://ru.wikipedia.org/wiki/ISO_3166-2
После внесения изменений в файл конфигурации не забудьте перезапустить Tor
Свежие комментарии