LINUX.ORG.RU

Используем socks для доступа к ChatGPT и ускорения YouTube

 ,

Используем socks для доступа к ChatGPT и ускорения YouTube

8

4

Эта статья не содержит описания способов обхода блокировок для доступа к противоправому контенту. Socks-прокси нужны исключительно для того чтобы смотреть YouTube и просить ChatGPT писать за тебя домашние задания!!! У первого какие-то проблемы со скоростью последнее время, говорят, что из-за отключения кеширующих серверов, а второй сам заблокировал жителей из России, Беларуси и Китая…

Socks — это протокол, подходящий для доступа к ChatGPT, так как позволяет скрыть российский ip-адрес. При этом socks-туннели не шифруют трафик, они передают его как есть, поэтому рекомендуется их использовать только с https:// (через http://chatgpt.com/ бот работать не будет). В настройках браузера можно включить принудительное использование https, а так же отключить WebRTC с помощью расширения WebRTC Control (чтобы ChatGPT не спалил вас, что вы из России). Данный метод сравнительно простой и не требует наличия своего сервера, socks-прокси продаются за копейки, но сайты, продающие их в основном заблокированы. Из недостатков следует отметить, что socks4 не поддерживает UDP в отличие от socks5 (WebRTC работает через UDP, поэтому мы его и блочим). Так же требуется включить dns over socks, в случае с огнелисом. Chromium не поддерживает авторизацию через socks, поэтому нужно использовать PAC-файлы либо что-то универсальное типа proxychains-ng:

$ yay -S proxychains-ng

$ sudo -e /etc/proxychains.conf
# находим 
[ProxyList]
# записываем что-то вроде
socks5 X.X.X.X 1080 proxy_user proxy_pass

Проверим наш айпи:

proxychains -q curl -s https://ipinfo.io

А так запускаем браузер:

proxychains -q chromium --incognito https://2ip.ru

Не забудьте настроить браузер чтобы он использовал DNS-Over-TLS (DOT) или DNS-over-HTTPs (DOH), чтобы скрыться от всевидящего 👁️ ChatGPT.

Как выше написано, шифрование используется только при доступе к сайтам через https://, а что делать, если нужно гарантированное шифрование всего трафика? — Нам придется запустить локальный прокси-сервер, который будет шифровать запросы на целевой.

👨‍💻 -> 💻 localhost:1080 -> 🔐 encryption layer -> 🖥 remote-server -> 🌎 clearnet

Далее рассмотрим методы создания шифрованный туннелей.

SSH-Туннели

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

# предварительно нужно скопировать публичный ключ на сервер чтобы постоянно не спрашивало пароль
# ssh-keygen -t rsa - для генерации оного
ssh-copy-id -i ~/.ssh/id_rsa.pub user@ssh-server

# создать туннель можно так
ssh -fND 1080 user@ssh-server

# но первый способ требует ручного перезапуска в случае падения

# для поддержания постоянного соединения
yay -S autossh

# данную команду можно запускать через cronie (в KDE таски создаются через интерфейс) либо создать сервис systemd
autossh -M 0 -o TCPKeepAlive=yes -o "ServerAliveInterval 15" -o "ServerAliveCountMax 3" -fND 1080 user@ssh-server

Shadow Socks

Данный метод был придуман в Китае на случай если китайцам заблокируют доступ к ChatGPT. Он хорош тем, что у нас будет стабильное шифрованное соединение.

Удаленный сервер

Для начала зайдем на целевой сервер и установим shadowsocks-сервер.

На debian можно установить shadowsocks-libev — это C-реализация пакета shadowsocks, написанного на Python.

# Устанавливаем shadowsocks-libev
apt install shadowsocks-libev

# Генерируем случайный пароль длиной 40 символов, состоящий из букв и цифр
password=$(tr -dc '[:alnum:]' </dev/urandom | head -c 40)

# Создаем файл конфигурации для сервера Shadowsocks
cat <<EOF> /etc/shadowsocks-libev/server.json
{
   "server":["[::0]", "0.0.0.0"],
   "mode":"tcp_and_udp",
   "server_port":8488,
   "password":"$password",
   "timeout":300,
   "method":"aes-128-gcm",
   "nameserver":"1.1.1.1"
}
EOF

# Включаем и запускаем службу shadowsocks-libev-server с конфигурацией 'server'
systemctl enable --now shadowsocks-libev-server@server

# Проверяем статус службы, чтобы убедиться, что она запущена
systemctl status shadowsocks-libev-server@server

# Выведем ip сервера и пароль от него
echo "Ip:       $(curl -s https://api.ipify.org)"
echo "Password: $password"

Для других дистрибутивов, где нет shadowsocks в репозиториях, я советую go-реализацию, объясню почему: Go — это язык, который тащит с собой рантайм, ему не нужны системные зависимости типа libastral.so, если бинарь собран с CGO_ENABLED=0, те любой такой гошный бинарник гарантированно запустится на любом линукс-сервере даже если там старое ядро (с 3 точно запускается).

# для начала получим ссылку на последний бинарный релиз, благо эта ссылка всегда первая
download_url=$(wget -qO- https://api.github.com/repos/shadowsocks/go-shadowsocks2/releases | grep -oP 'http.+linux\.gz(?=")' | head -1)

# выкачаем и распакуем
wget -qO- $download_url | gzip -d > go-shadowsocks2 

# сделаем исполняемым
chmod +x go-shadowsocks2

# почитайте справку
./go-shadowsocks2 -h

# сгенерируем пароль
password=$(tr -dc '[:alnum:]' </dev/urandom | head -c 40)

# выведем пароль, чтобы скопировать
echo "Generated Password: $password"

# но лучше всего это дело засунуть в systemd service
# $PWD будет заменен на текущий рабочий каталог, в случае необходимости пропишите другой путь 
cat << __EOF__ > /etc/systemd/system/shadowsocks-server.service
[Unit]
Description=Shadowsocks Server
After=network.target

[Service]
Type=simple
ExecStart=$PWD/go-shadowsocks2 -s "ss://AEAD_AES_128_GCM:${password}@0.0.0.0:8488"
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
__EOF__

# для запуска сервиса
systemctl enable --now shadowsocks-server

Не забудьте открыть порты. Например, на Digital Ocean они все кроме 22,80,443… закрыты.

Пример с использованием ufw:

ufw allow 8488/tcp
ufw allow 8488/udp

Локальный сервер

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

# можно установить питонячью реализацию, так как она не ставит всякое говно типа Rust или Go, которые весят по 500 мегабайт + столько же с собой тянут
$ yay -S shadowsocks

# справка по локальному серверу
$ sslocal -h

$ sudo cp /etc/shadowsocks/{example,server}.json

# тут нужно вписать данные от сервера
$ sudo -e /etc/shadowsocks/server.json              
{
    "server":"<server-ip>",
    "password":"<password>",
    "server_port":8488,
    "local_address": "127.0.0.1",
    "local_port":1080,
    "timeout":300,
    "method":"aes-128-gcm",
    "workers": 10
} 

# запускаем локальный сервер, где через @ указывается имя json-конфига
$ sudo systemctl start shadowsocks@server.service

# проверяем

# должен быть: active (running)
$ systemctl status shadowsocks@server.service

# можно еще раз удостовериться
$ curl --socks5 localhost:1080 https://ipinfo.io

# в случае кривых рук, запустите локальный сервер напрямую и посмотрите ошибки, возможно, занят порт или допущена иная ошибка
$ sslocal -c /etc/shadowsocks/server.json

Дополнения

В KDE socks5 можно сделать системными в настройках (как и в Windows, мало того для него есть и клиенты shadowsocks, так что инструкция почти универсальна).

Если же прокси нужен только для браузера:

# Учтите, что файл с флагами по умолчанию не должен содержать кавычек типа `--arg="value"`
echo '--proxy-server=socks5://localhost:1080' >> ~/.config/chromium-flags.conf

Для лучшей защиты нужна цепочка прокси, так как провайдер ведет логи ваших подключений к тому или иному адресу и может их передать ChatGPT. У вас трафик должен шифроваться только до промежуточного сервера, естественно, сервера должны быть не из этой страны.



Проверено: hobbit ()
Последнее исправление: rtxtxtrx (всего исправлений: 26)

Продолжаю публикацию своих компьютерных заметок.

rtxtxtrx
() автор топика
Последнее исправление: rtxtxtrx (всего исправлений: 1)

для нормальной работы Youtube достаточно включить протокол QUIC в браузере. ChatGpt и подобные llm можно установить локально…

vpnvpnvpn
()
Ответ на: комментарий от rtxtxtrx

ну да.. пока проще quick включить, но не исключено что может вскоре потребоваться подобное вашему решение. ну а локальные llm конечно не сильно быстрые по сравнению с публично доступными в интернете…

vpnvpnvpn
()

Пока что для обхода замедления ютуба лучше использовать софт ломающий логику DPI у провайдера.

https://github.com/bol-van/zapret

sudo ./tpws --daemon --port 999 --socks --disorder --tlsrec=sni --split-pos=2

И запилить фильтр для *://*googlevideo.com* в FoxyProxy или другом плагине.

вот этого пока достаточно.

Если забанят по IP, то другое дело, но тащить трафик через VPN - загрузка видео всё равно будет лагать - уже начиная с 720p60fps.

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 1)

Кстати, shadowsocks бесит тем что нет поддержки http proxy. Например для загрузки апдейтов для Qt через maintenance tool.

Skullnet ★★★★★
()
Ответ на: комментарий от Skullnet

Он позволяет что-то типа такого делать:

#      Client         Public Server A          Server B (NAT)
#     +------+        +-------------+         +-------------+
#     | curl | <----> | gost:8080   | <-----> | gost:1080   |
#     +------+        +-------------+         +-------------+
#                      (SOCKS5 Proxy)          (WebSocket)

# Настройка сервера A (публичный)
# Сервер A принимает WebSocket соединения и использует их для работы через SOCKS5 прокси
gost -L=:8080/ws -F=socks5://127.0.0.1:1080

# Настройка сервера B (за NAT)
# Сервер B будет подключаться к серверу A через WebSocket
gost -L=:1080 -F=ws://user:pass@PUBLIC_SERVER_A_IP:8080

curl -x socks5h://user:pass@PUBLIC_SERVER_A_IP:8080 http://target-site.com
rtxtxtrx
() автор топика
Ответ на: комментарий от rtxtxtrx

Спасибо, я юзаю pproxy.

Суть в том, правда, чтобы http прокси был по дефолту.

Skullnet ★★★★★
()
Последнее исправление: Skullnet (всего исправлений: 1)

и может их передать ChatGPT

Это как вообще?

Shushundr ★★★
()
Ответ на: комментарий от MOPKOBKA

Текст не читал@комментарий написал. Не знаю в чем смысл твоих сообщений, учитывая что про ssh -D написано как и почему он не походит

rtxtxtrx
() автор топика
Ответ на: комментарий от rtxtxtrx

Там написано что ssh -D подходит только для браузера, что является неверной информацией.

MOPKOBKA ★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.