Как стать автором
Обновить

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

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров15K

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

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

Шаг 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'}

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru" xml:lang="ru">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>Флибуста | Книжное братство</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link href="/opds" type="application/atom+xml;profile=opds-catalog" rel="related" />
<link rel="alternate" type="application/rss+xml" title="Флибуста RSS" href="http://flibustaongezhld6dibs2dps6vm4nvqg2kp7vgowbu76tzopgnhazqd.onion/rss.xml" />

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

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

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

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

Теги:
Хабы:
Всего голосов 13: ↑11 и ↓2+16
Комментарии7

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
20 – 22 сентября
BCI Hack Moscow
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн