Проксирование в TOR

И так чаще всего если вам нужно осуществить проксирование вашего белого домена domain.com в ТОР то по старинке многие использовали socat или всякую самописную дичь.

чего уж там я не исключение. а все дело в том что nginx не умеет работать с socks.

Мы не будем поднимать какой либо модуль, типа nginx-socks-module а воспользуемся банальным и простым решением, чтобы сконвертировать socks в http прокси.

Ставим в общем на наш сервер 3proxy любым удобным для вас способом.

используем следующий конфиг для 3proxy

internal 127.0.0.1
daemon
auth iponly
allow * 127.0.0.1
fakeresolve
parent 100 socks5+ 127.0.0.1 9050
proxy -p3128

и вот такой пример для nginx (vhost)

server {
    listen 80;
    server_name _;

    location / {
        proxy_pass http://127.0.0.1:3128;
        proxy_set_header Host "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.onion";
        proxy_set_header Via "$host";
    }
}

В итоге получаем на нашем белом IP:80 наш TOR домен и контент.

Альетрнативой для 3proxy может быть privproxy или наверное redsocks.

Tor как служба Windows

Для начала нам понадобится сам Torbundle его можно взять тут

https://www.torproject.org/ru/download/tor/

Нам нужен именно Windows Expert Bundle

ну или прямая ссылка на актуальную на момент написания версию.

https://www.torproject.org/dist/torbrowser/10.0.18/tor-win32-0.4.5.9.zip

Скачиваем данный архив переходим в директорию нашего пользователя командой

%USERPROFILE%

Создаем папочку TorBundle и распаковываем туда содержимое скаченного архива.

Дальше нужно создать файлик torrc внутри директории Data\Tor со следующим содержимым

DataDirectory C:\Users\%USERPROFILE%\TorBundle\Data\Tor
GeoIPFile C:\Users\%USERPROFILE%\TorBundle\Data\Tor\geoip
GeoIPv6File C:\Users\%USERPROFILE%\TorBundle\Data\Tor\geoip6
AvoidDiskWrites 1
SocksPort 127.0.0.1:9160

%USERPROFILE% только меняем на имя вашего пользователя.

дальше нам нужно запустить CMD от имени Администратора и установить tor в качестве службы.

выполнив данную команду.

sc create TorBundle binPath= "C:\Users\%USERPROFILE%\TorBundle\Tor\tor.exe --nt-service -f C:\Users\%USERPROFILE%\TorBundle\Data\Tor\torrc" 

%USERPROFILE% меняем на имя вашего пользователя!!!

*ОБРАТИТЕ ВНИМАНИЕ НА ПРОБЕЛ ПОСЛЕ binPath= он должен быть!

пример

После этого идем в службы (Панель управления > Администрирование > Службы) и запускаем наш TorBundle

дополнительно ставим автоматический запуск, что бы служба работала после перезагрузки.

на этом настройка закончена, после всех манипуляций у вас должен быть локально запущен сокс5 на порту 9160.

Для тех кого еб*т все это делать, запилил инсталятор, он автоматически скачивает torbundle распаковывает в директорию вашего профиля в папку TorBundle и устанавливает службу, приложение нужно запускать с правами администратора и в системе должен быть .NET Framework не ниже 4.5

Тестед нах on Windows 7 / 8.1 / 10 | редакции (х64) виз дисаблед УАК ;)

https://nova.ws/dl/release/torbundle.zip

sha256sum exe файла.

0aa936ee30015ca8e56d6170f7433c4f79a27d782b674719b63dc758553f6e4b

Для тех кому интересен сурс этого приложения, он доступен тут

множественный walletnotify

немножко очевидных вещей.

по разным проектам в тестовой среде часто приходится получать txid от bitcoind а постоянно менять скрипт уведомлений на свой урл геморно. тут чинишь там ломаешь.

в общем небольшой выход c множественными уведомлениями.

#!/usr/bin/python3
import requests, sys

callback_url = [
    {'url': 'https://server1.domain.com', 'secret_key': '12356'},
    {'url': 'https://server2.domain.com', 'secret_key': '12356'}
]

for url in callback_url:
    try:
        requests.post(url.get('url'), data={'secret_key': url.get('secret_key'), 'txid': sys.argv[1]})
    except:
        pass

хз насколько это верное решение например для прода если использовать единственную ноду для всех проектов. но вроде работает ;)

Перерыв

В общем что то давно я ничего не писал в бложике, но постараюсь до конца месяца представить миру небольшую статейку на тему Docker и Wvdial и множественных 3G соединений.

Установка python3.6 и Selinium на CentOS 7

Никак не претендую на мега мануал, но многие спрашивают как сделать. решил чутка описать чтоб скидывать урл.

И так, имеем голую центозу 7

подключаем repo от epel.

yum install epel-release

Далее ставим python3.6 и zip

yum install python36 python36-devel python36-pip unzip

Ставим Chrome

yum install https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm

Качаем и распаковываем вебдрайвер, в моем случае он под хром 78 версии.

curl -o chromedriver_linux64.zip https://chromedriver.storage.googleapis.com/78.0.3904.105/chromedriver_linux64.zip
unzip chromedriver_linux64.zip -d /usr/local/bin/ && rm -rf chromedriver_linux64.zip

ставим selenium

pip3 install selenium

теперь все готово. в питоше юзаем путь к драйверу вот так.

webdriver.Chrome(executable_path='/usr/local/bin/chromedriver', chrome_options=options)

Ну и не забываем что для консоли юзаем.

options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--no-sandbox')