2024-08-27 1950 как заставить программы использовать Tor для обхода блокировок
В заметке Tor Browser есть информация о том, как легко и безопасно бродить по недоступным в России веб-сайтам. Но как научить Ваши прочие приложения (а не только Tor Browser) использовали сеть Tor для обхода незаконных блокировок?
HTTP и HTTPS прокси, а также VPN я не рассматриваю ввиду их небезопасности и возможной утечки Ваших чувствительных данных. Tor же является безопасным способом для установки анонимных защищённых соединений.
Для примера, научим приложение yt-dlp работать через Tor, а заодно обходить защиту вида "Sign in to confirm you’re not a bot. This helps protect our community". Будем использовать операционную систему Debian Linux, хотя это не суть важно.
Устанавливаем сам Tor, Tor SOCKS через который будут работать наши программы и obfs4proxy для поддержки мостов типа obfs.
sudo apt install tor torsocks obfs4proxy
Получаем список мостов подходящим для Вас способом и добавляем их в общесистемный конфигурационный файл Tor /etc/tor/torrc
.
UseBridges 1
ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy
Bridge obfs4 57.128.103.61:32950 4F86D9622E8A0E8B4205B89EF85F7DB8B7CC0220 cert=+lFNN1VlgYVnUZkWdPuhz/2mKPWHydm+CHXcjAuiUedfdxQUmPtAwRf8VUKPUPMei3h1HA iat-mode=0
Bridge obfs4 217.182.211.27:33195 3AE3A0122F9BD856822F894205A30EE444CC2014 cert=JFY6acJoWywowYneRpLbvZj+nvSxI1qI6ohfAQ3eI7P/yTL9qliv4C4lwpczR3m9O/qAGA iat-mode=0
Где,
UseBridges 1
- включает использование мостов;ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy
- включает транспортное расширение для поддержки мостов типа obfs;Bridge obfs4 57.128.103.61:32950 4F86...
иBridge obfs4 217.182.211.27:33195 3AE3...
- сами мосты.
Проверяем, что сервис Tor запущен.
sudo service tor@default status
И применяем изменения конфигурации.
sudo service tor@default reload
Видим sudo journalctl --unit tor@default.service
журнал запуска сети.
Aug 27 21:49:36.736 [notice] Tor 0.4.7.16 running on Linux with Libevent 2.1.12-stable, OpenSSL 3.0.13, Zlib 1.2.13, Liblzma 5.4.1, Libzstd 1.5.4 and Glibc 2.36 as libc.
Aug 27 21:49:36.736 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://support.torproject.org/faq/staying-anonymous/
Aug 27 21:49:36.736 [notice] Read configuration file "/etc/tor/torrc".
Aug 27 21:49:36.738 [notice] Opening Socks listener on 127.0.0.1:9050
Aug 27 21:49:36.738 [notice] Opened Socks listener connection (ready) on 127.0.0.1:9050
Aug 27 21:49:36.000 [notice] Parsing GEOIP IPv4 file /usr/share/tor/geoip.
Aug 27 21:49:36.000 [notice] Parsing GEOIP IPv6 file /usr/share/tor/geoip6.
Aug 27 21:49:37.000 [notice] Bootstrapped 0% (starting): Starting
Aug 27 21:49:37.000 [notice] Starting with guard context "bridges"
Aug 27 21:49:37.000 [notice] Delaying directory fetches: No running bridges
Aug 27 21:49:38.000 [notice] Bootstrapped 1% (conn_pt): Connecting to pluggable transport
...
Aug 27 21:49:45.000 [notice] Bootstrapped 100% (done): Done
Также существует инструкция по установке Tor в Micosoft Wndows1.
Когда соединение с сетью установится, можем запускать наши приложения через Tor командой torsocks ...
, которая будет использовать порт 9050
для общения с Tor.
Например, можем скачать видео с YouTube в максимальном качестве без каких либо ограничений.
torsocks ./yt-dlp "https://www.youtube.com/watch?v=PIQuruu7fXE"
Если же нам нужно скачать плейлист с большим количеством видеозаписей и чтобы YouTube не блокировал соединение считая нас ботом, мы можем подсунуть программе yt-dlp
куки из браузера, в котором мы залогинены в YouTube, например в Mozilla Firefox следующей командой.
torsocks ./yt-dlp --cookies-from-browser=firefox --output="%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" "https://www.youtube.com/playlist?list=PLRDzFCPr95fLjzcv6nNdjMu_9RcZgIM9U"
Где,
--cookies-from-browser
- и есть тот самый параметр с названием браузера в котором мы авторизованы в YouTube и может иметь следующие значения:brave
,chrome
,chromium
,edge
,firefox
,opera
,safari
,vivaldi
,whale
.
Двигаемся дальше. Не всегда удобно запускать программы из командной строки, для таких случаев можно использовать HTTP-прокси запущенный поверх Tor.
Например, в России не работает обновление IDEs от JetBrains (IntelliJ IDEA, WebStorm, CLion, PyCharm, GoLand, Rider и прочие) даже в случае, если у Вас есть действующая, приобретённая за кровно заработанные деньги, лицензия. При попытке обновить IDE до актуальной версии появляется сообщение "Failed to prepare an update: We are sorry, but we are currently unable to provide our products or services to you due to export control regulations."
Не беда. Добавляем в конфигурационный файл Tor /etc/tor/torrc
ещё одну запись.
HTTPTunnelPort 9060
Применяем изменения конфигурации Tor sudo service tor@default reload
и видим новые сообщения sudo journalctl --unit tor@default.service
гласящие о запуске HTTP-прокси по адресу 127.0.0.1:9060
поверх Tor.
Aug 28 09:42:20.824 [notice] Opening HTTP tunnel listener on 127.0.0.1:9060
Aug 28 09:42:20.824 [notice] Opened HTTP tunnel listener connection (ready) on 127.0.0.1:9060
Заходим в настройки HTTP Proxy в IntelliJ IDEA, указываем наш прокси и...
... вуаля, всё работает!
Альтернативно можно заменить среды разработки от JetBrains, на некоммерческие с открытым исходным кодом, например VSCode или VSCodium2.