Установка и настройка tor в Linux Mint

Предположим, что вы захотели получить информацию с сайта расположенного на домене onion. В общем-то, ничего особенного в этом нет. Даже, в какой-то мере проще, чем в клирнете. Все потому, что здесь используется очень мало скриптов. А следовательно, к особым ухищрениям для парсинга страниц можно не прибегать без необходимости. Вот только туда еще нужно попасть. И с помощью простого requests сделать этого не получиться. Немного покопавшись в Интернете я нашел решение, которое пока работает.

f8e7d9781e583491b2b3380c2cb941b4.jpeg

Дисклеймер:  Данная информация взята из открытых источников и предназначена исключительно для ознакомления с работой указанной технологии. За использование данной информации в целях, отличных от ознакомления, автор ответственности не несет.

Шаг 1: Установка tor

Начнем с начала. По очереди вводим в терминале команды для обновления пакетов и установки пакета tor:

sudo apt-get update
sudo apt-get install tor

И это самое простое. Двигаемся дальше. Дело в том, что с 2022 года трафик Tor стал блокироваться. И просто так, без использования мостов, подключиться к onion-сети не получиться. Поэтому, чтобы использовать мосты, необходимо установить следующий пакет:

sudo apt install obfs4proxy

После этого получаем список мостов. Идем на эту страницу и выполняем пошагово все, что от нас просят, пока не получим необходимый результат. Ну, или можно сделать проще. Находим и запускаем в телеграмм бота и запрашиваем у него мосты. После чего открываем файл конфигурации tor:

sudo xed /etc/tor/torrc

Я это сделал наименее безболезненным способом. После того, как откроется конфигурация, туда нужно дописать следующие строки в конец файла:

ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy
Bridge obfs4 185.246.188.76:7180 0F14...
Bridge obfs4 208.87.97.172:1701 08AA...
Bridge obfs4 54.196.245.125:9162 7966...
UseBridges 1 

Здесь следует обратить внимание на то, что для указания моста сначала пишем ключевое слово: Bridge, и только потом уже мост. Сохраняем конфигурацию и перезапускаем tor.

sudo /etc/init.d/tor restart

Проверить, работает ли сервис можно с помощью команды:

/etc/init.d/tor status

В ответе вы получите что-то вроде этого. Ну или должны получить.

● tor.service - Anonymizing overlay network for TCP (multi-instance-master)
     Loaded: loaded (/lib/systemd/system/tor.service; disabled; vendor preset: enabled)
     Active: active (exited) since Sat 2024-03-02 03:07:00 +06; 35min ago
    Process: 16751 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 16751 (code=exited, status=0/SUCCESS)
        CPU: 2ms

мар 02 03:07:00 hm systemd[1]: Starting Anonymizing overlay network for TCP (multi-instance-master)...
мар 02 03:07:00 hm systemd[1]: Finished Anonymizing overlay network for TCP (multi-instance-master).
Hint: Some lines were ellipsized, use -l to show in full.

Для остановки и запуска tor необходимо использовать следующие команды:

sudo /etc/init.d/tor start
sudo /etc/init.d/tor stop

Еще один нюанс заключается в том, что если вы не хотите, чтобы tor стартовал вместе с системой, следует выполнить команду:

sudo systemctl disable tor.service

И вот только теперь можно переходить ко второму шагу.

Шаг 2: Установка библиотек Python

Чтобы не растягивать повествование, установим нужные библиотеки с помощью одной команды:

pip install requests requests[socks] requests[security]

Теперь, когда все, что нужно нам установлено и настроено, можно переходить к написанию кода. Здесь ничего особого нет. За исключением некоторых нюансов, о которых я расскажу ниже. В целом, после установки библиотек, которые позволяют использовать proxy, код не отличается от обычного.

import requests

proxies = {
    'http': 'socks5h://127.0.0.1:9050',
    'https': 'socks5h://127.0.0.1:9050'
}

url = 'http://flibustaongezhld6dibs2dps6vm4nvqg2kp7vgowbu76tzopgnhazqd.onion/'

r = requests.get(url, proxies=proxies, verify=False)  # using TOR network
print(r.text)

Вот как раз таки в указании прокси есть нюанс. Если вы укажете socks5://127.0.0.1:9050, у вас может ничего не заработать. По крайней мере, у меня не происходило ничего. От слова совсем. И только после того, как я добавил буковку h, чтобы получилось socks5h://127.0.0.1:9050, все встало на свои места, и код заработал в обычном режиме.

В коде, приведенном выше, я получаю html-код главной страницы библиотеки «Флибуста», которая, как вы знаете, уже давно и прочно обосновалась в onion. Но сейчас не об этом. Попробуем выполнить код и получить еще и заголовки.

В итоге вот что у нас получилось:

{'Server': 'nginx', 'Date': 'Fri, 01 Mar 2024 21:49:36 GMT', 'Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 
'Connection': 'keep-alive', 'Keep-Alive': 'timeout=10', 'Vary': 'Accept-Encoding, Cookie', 'Cache-Control': 'public, max-age=600', 
'Last-Modified': 'Fri, 01 Mar 2024 21:49:36 +0000', 'Expires': 'Sun, 11 Mar 1984 12:00:00 GMT', 'ETag': 'W/"1709329776"', 
'Content-Encoding': 'gzip'}

Выше — заголовки, ниже код станицы. Конечно не весь. Только его начало.






  Флибуста | Книжное братство
  

Получилась, этакая, спонтанная инструкция. Для чего это вообще нужно? Тут может быть множество вариантов применения. Включая парсинг сайтов в обычной сети не со своего адреса. Не со всеми сайтами это получается. Некоторые блокируют доступ с адресов Тор. Тем не менее, попробовать можно. Есть инструкции, как написать код, который будет в автоматическом режиме менять личности после выполнения нескольких итераций.

Ну и самое банальное, для чего это нужно мне — просто не забыть. Бывает, что нужно найти что-то. И помнишь, что где-то это видел. Вот только где… На поиски уходит довольно много времени. А так, сводная инструкция будет доступна в одном месте. По крайней мере для меня. Ну и для тех, у кого она окажется.

А на этом все. Спасибо за внимание. Надеюсь, что данная информация будет вам полезна.

Подписывайся на наш канал в телеграме, у нас много полезного!

© Habrahabr.ru