Перейти к содержимому

Глоссарий

SOCKS5

Он лежит ниже веб-протоколов, поэтому несёт всё, что открывает браузер, а не одни только запросы страниц. Две вещи, важные каждый день, пришли именно с этой версией: логин и разбор имени на выходе.

SOCKS5 это протокол прокси, который передаёт связь целиком и умеет просить разрешить имя сайта на дальнем конце.

Что несёт рукопожатие

До того как уйдёт первый байт вашего трафика, проходят три коротких обмена, и каждый из них может сорваться сам по себе.

Их устройство открыто и описано давно, поэтому любой продавец и любое средство одинаково понимают, что такое SOCKS5. Сговариваться об этом не приходится.

  1. 1

    Приветствие

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

  2. 2

    Логин, если его спросили

    Имя и пароль идут отдельным обменом, и своей защиты у этого обмена нет никакой.

  3. 3

    Запрос на связь

    Место назначения уходит наверх либо числом, либо именем, и разница между ними важнее, чем кажется.

Наверх уходит имя узла

Имя сайта, превращённое в число у вас дома, кладёт посещение в журнал вашего же разборщика имён, пока трафик уходит совсем в другую сторону.

Когда с прокси разговаривает программа, место назначения уходит именем, и разрешает его уже дальняя сторона.

Это верно там, где говорит программа

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

Логину нужен помощник рядом

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

Поэтому рядом поднимается маленький прокси на петле. Браузеру он отвечает без пароля, а настоящему прокси с паролем.

В строке запуска после этого стоит адрес на петле и больше ничего. На нашем движке местный шаг ещё и спрашивает у браузера разовый пропуск, чтобы оплаченным каналом не воспользовалась чужая программа на этой же машине.

Что принимает программа

Вставленная строка может говорить socks, socks5 или socks5h: все три означают один и тот же вид связи, когда запись уже сохранена. Переписывать то, что дал продавец, не нужно.

Незнакомую схему программа отвергает, а не превращает молча в обычный http. Тихое понижение оставило бы вас в уверенности, что вы на SOCKS5, пока вы идёте открыто.

Часто путают с этим

  • HTTP proxy

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

  • VPN

    Уводит всю машину и все программы на ней. Запись SOCKS5 принадлежит одному профилю и больше никому.

  • Свой сервер как выход

    Обычный ssh с подвижным пробросом превращается в настоящий SOCKS5 на петле, и браузер этой разницы не замечает вовсе.

Чего это не делает

  • Это ничего не шифрует само. Вся закрытость идёт от TLS внутри связи, а логин SOCKS5 пересекает провод без защиты вовсе.
  • Это не решает за все случаи, где разрешаются имена. На записи без логина такой выбор принадлежит самому браузеру, а не программе.
  • Это не просит у прокси ничего, кроме обычной связи. Ни слушать порт за вас, ни носить отдельные пакеты никто здесь не просит.
  • Это не лучший выход, чем любой другой протокол. Адрес всё равно остаётся адресом продавца, и серверный адрес узнают как серверный, чем бы его ни несли.

Проверить

За каждым утверждением выше стоит место в коде и стенд.

Приветствие, логин и имя узла проверяются против настоящего SOCKS5
apps/desktop/test/proxy-auth-bridge.js
Один адрес накрывает все схемы, и правило не читают, а исполняют
apps/desktop/test/proxy-covers-https.js
Проверка идёт против SOCKS5, который требует логин
apps/desktop/test/proxy-check-uses-bridge.js
Вставленную строку разбирает один и тот же код для программы и для кабинета
packages/shared/src/proxy-line.js

Вопросы

SOCKS5 безопаснее, чем HTTP proxy?
Сам по себе содержимое не прячет ни тот, ни другой. Разница в том, что именно они несут и кто на деле превращает имя сайта в число.
Что означает буква h в socks5h?
Она помечает привычку разрешать имена на дальнем конце. Вставленная с ней строка сохраняется как обычная запись SOCKS5.
Нужен ли SOCKS5 логин?
Почти у всех платных он есть. Пароль при этом не попадает в строку запуска, где его прочла бы любая программа, идущая под вами.
Можно ли вместо покупки взять свой сервер?
Да. Рядом с профилем поднимается ssh с подвижным пробросом, а браузеру достаётся обычный адрес на петле. Ни движок, ни местный шаг про ssh при этом не знают ничего.
Закрывает ли SOCKS5 утечку WebRTC?
Нет. Это отдельная дорога наружу из самого браузера, и закрывают её тоже отдельно.

Поставьте профиль за SOCKS5

Бесплатный тариф даёт два профиля, без срока и без карты.