Приветствую всех! Сегодня поговорим о том как же нам работать с Telegram API, если доступ к нему запрещен. Все дело в том, что мы легко можем получить доступ как к telegram.org, так и api.telegram.org используя tor-browser. Проблемы начинаются на этапе разработки так как мы не можем посылать get-post запросы напрямую из скрипта по причине блокировки. Для того что бы получить возможность отправлять и получать запросы мы настроим tor и прокси сервер на локальной машине, дабы облегчить и ускорить разработку, не использую сторонние прокси. Работать будем исключительно в терминале. Конфигурировать все будем так что бы данное соединение было активно только в среде разработки. Операционная система ubuntu 18.04. Поехали!!
Этапы:
1. Установка пакетов.
2. Конфигурация privoxy.
3. Запуск tor+privoxy только в среде разработки.
4. Тестируем telegram API.
Этап 1.
Ставим пакеты tor и privoxy:
sudo apt install tor privoxy
Этап 2.
Настраиваем privoxy:
sudo nano /etc/privoxy/config
Вставляем в начало файла следующие строчки(точки нужны!!):
forward-socks5 / localhost:9050 .
forward-socks4 / localhost:9050 .
Этап 3.
Настраиваем все так что бы данный софт работал только тогда когда нам необходимо(ручной запуск):
Отключаем автозапуск демонов:
sudo systemctl disable tor
sudo systemctl disable privoxy
sudo service tor stop
sudo service privoxy stop
Экспортируем переменные окружения для текущего открытого терминала:
export HTTP_PROXY="http://127.0.0.1:8118"
export HTTPS_PROXY="https://127.0.0.1:8118"
Внимание после закрытия текущего окна терминала данные настройки будут сброшены( При желании можно все упаковать в bash скрипт)
Запускаем сервисы:
sudo service tor start
sudo service privoxy start
На данном этапе настройка закончена. переходим к тесту.
Этап 4.
Создаем python скрипт test_proxy.py
import requests
URL = "https://api.telegram.org/bot"
bot_token = input("Enter bot api:")
r = requests.get(URL + bot_token + '/getme')
print(r.json())
Запускаем из нашего настроенного теминала:
python3 test_proxy.py
Вводим API token нашего бота и жмем Enter.
Если все работает правильно получим ответ от telegram API:
Как видим ответ пришел, значит все работает правильно.
По окончании разработки не забываем останавливать tor и privoxy=)