Задача: обойти блокировку Телграма для бота, крутящегося на NodeJS на Raspberry Pi
Устанавливаем Tor
Открываем конфиг tor, расположенный по адресу: /etc/tor/torrc
И убеждаемся, что там есть такие строки
А вот эту строку надо «закомитить», т.е. она должна выглядеть так
Это означает, что мы принимаем все запросы, ничего не отфильтровывая.
Устанавливаем прокси сервер privoxy (tor не является прокси-сервером, это прокси-сервер socks, поэтому нужен http-прокси, который будет перенаправлять запросы в сеть Тор)
Далее открываем конфиг privoxy, расположенный по адресу: /etc/privoxy/config
И добавляем в конфиг строку:
Внимание знак «.» (точка) обязателен!
Этой записью мы перенаправляем трафик прокси на сеть Tor.
Запускаем сервисы
Готово! Прокси сервер должен работать на порту 8118.
Проверяем
должны увидеть запущенные по протоколу tcp сервисы tor и privoxy на соответствующих портах.
Но это не все. Надо заставить приложения ходить на proxy
Открываем (создаем) конфиг linux для форварда на proxy, расположенный по адресу /etc/apt/apt.conf.d/10proxy
и прописываем туда строки
Открываем (создаем) конфиг:
/etc/environment
и прописываем туда строки
Перезапускаем сеть
В ноде (см. примечание * ниже) используем следующий код для запуска бота
Если все работает, то теперь надо настроить автостарт tor и privoxy
или еще так рекомендуют
Примечание
* Нода не должна быть древней, а телеграм бот не древнее версии 0.25
Проверить версию бота можно так:
Полезные команды:
Устанавливаем Tor
apt-get install tor
Открываем конфиг tor, расположенный по адресу: /etc/tor/torrc
И убеждаемся, что там есть такие строки
SocksPort 127.0.0.1:9050
А вот эту строку надо «закомитить», т.е. она должна выглядеть так
# SocksPolicy accept
Это означает, что мы принимаем все запросы, ничего не отфильтровывая.
Устанавливаем прокси сервер privoxy (tor не является прокси-сервером, это прокси-сервер socks, поэтому нужен http-прокси, который будет перенаправлять запросы в сеть Тор)
apt-get install privoxy
Далее открываем конфиг privoxy, расположенный по адресу: /etc/privoxy/config
И добавляем в конфиг строку:
listen-address 127.0.0.1:8118
forward-socks5t/ localhost:9050 .
Внимание знак «.» (точка) обязателен!
Этой записью мы перенаправляем трафик прокси на сеть Tor.
Запускаем сервисы
service tor start
/etc/init.d/privoxy restart # для Jessie
service privoxy restart # Ubuntu
Готово! Прокси сервер должен работать на порту 8118.
Проверяем
netstat –tlnp
должны увидеть запущенные по протоколу tcp сервисы tor и privoxy на соответствующих портах.
Но это не все. Надо заставить приложения ходить на proxy
Открываем (создаем) конфиг linux для форварда на proxy, расположенный по адресу /etc/apt/apt.conf.d/10proxy
и прописываем туда строки
Acquire::http::Proxy “http://localhost:8118/”;
Acquire::https::Proxy “http://localhost:8118/”;
Открываем (создаем) конфиг:
/etc/environment
и прописываем туда строки
http_рroxy="http://localhost:8118/"
https_рroxy=”http://localhost:8118/”
Перезапускаем сеть
/etc/init.d/networking restart
В ноде (см. примечание * ниже) используем следующий код для запуска бота
var TelegramBot = require('node-telegram-bot-api');
var bot = new TelegramBot(MyToken, {
polling: true,
request: {
proxy: "http://localhost:8118"
}
});
Если все работает, то теперь надо настроить автостарт tor и privoxy
sudo update-rc.d privoxy enable
sudo update-rc.d tor enable
или еще так рекомендуют
update-rc.d -f tor remove && update-rc.d -f tor defaults && update-rc.d -f privoxy remove && update-rc.d -f privoxy defaults && update-rc.d -f privoxy enable
Примечание
* Нода не должна быть древней, а телеграм бот не древнее версии 0.25
Проверить версию бота можно так:
npm list node-telegram-bot-api
Полезные команды:
sudo service tor status
sudo service tor stop