Задача: обойти блокировку Телграма для бота, крутящегося на NodeJS на Raspberry Pi
Устанавливаем 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
Автор: тащит всю команду