Обучающий курс по ботам. Урок 6 — Что такое прокси?
Приветствую, уважаемые пользователи. Позади пять уроков, и мы практически готовы к созданию большой фермы аккаунтов. Остался всего один шаг — понять, что такое прокси, и как ими пользоваться.
Теория
Прокси-сервер — это сервис, благодаря которому данные идут не напрямую от одного компьютера к другому, а через сторонний. Благодаря этому, конечный компьютер (сервер) не видит нашего реального айпи адреса. Это нам может понадобиться по двум причинам.
Во-первых, с помощью прокси-серверов мы сможем скрыть факт того, что работаем целой кучей аккаунтов с одного компьютера. Это важно, потому что вк не приветствует много аккаунтов с одного айпи-адреса. Рекомендую использовать прокси в том случае, если вы используете более 3 аккаунтов.
Во-вторых, если в вашей стране полностью забанен вк, например, в Украине, то вашим выходом из положения также будет использование прокси. Пользоваться прокси очень легко. Давайте сначала взглянем как они выглядят.
Типы прокси
Прокси бывают простые, либо с логином и паролем. Вторые — это, так называемые, прокси с авторизацией. Для ботов нужны именно они. Достать их можно здесь. Они обладают высоким качеством и позволяют избегать банов.
Прокси имеют следующую структуру: ip:[email protected]:pass.
Существует несколько типов прокси: HTTPS, SOCKS4, SOCKS5, мобильные итд. Вам необходимы SOCKS5 или HTTPS IPV4 прокси. Можно брать самые дешевые — IPV4 SHARED.
Если вы работаете на Vkserfing bot или на Vktarget bot, то важно знать, что встроенный визуальный браузер заходит в аккаунты только под HTTPS прокси. При работе через SOCKS5 вход будет осуществляться с вашего домашнего айпи.
Для того, чтобы аккаунты использовали прокси, зайдите в настройки бота и загрузите в него список ваших прокси и поставьте нужную галку.
Каждый аккаунт берет случайный прокси и файла.
Формат прокси
Бот поддерживает загрузку прокси в четырех форматах:
- ip:[email protected]:pass
- ip:port:login:pass
- login:[email protected]:port
- login:pass:ip:port
Сейчас я покажу, как правильно создавать файл с прокси.
Покупаем прокси
Идем в магазин proxy6.net, регистрируемся в нем и выбираем тип приобретаемых прокси.
Вам понадобится один прокси на 3-4 аккаунта.
Далее не забудьте выбрать, что мы берем SOCKS5, а не HTTPS прокси.
В итоге, после оплаты мы получаем данные от прокси:
Нам выдают айпи, порт, логин и пароль. Необходимо эти данные объединить в одну строку и сохранить в текстовый файл. Если прокси несколько, до будет несколько строк. (См. скриншот выше). Это можно сделать вручную, но проще воспользоваться кнопкой «Экспорт» на сайте.
В итоге у нас получается файл с прокси, который можно загружать в бот (В настройках).
Важно помнить
Ниже я излагаю рекомендации, о которых необходимо помнить всегда.
Не используйте бесплатные прокси
За них вы получите мгновенный бан, так как все общедоступные прокси находятся в черных списках соц. сетей.
Запускайте аккаунты только после загрузки прокси
В противном случае аккаунты запустятся без прокси, а это быстрый бан всех аккаунтов.
Берите российские прокси
Если вы берете США, Европу, Индию, Китай и прочее, то будет высокий шанс бана.
Формат файла должен быть .TXT
Файл, в котором хранятся прокси, должен иметь именно .txt формат, а не doc, xls или что-нибудь подобное. (Создавайте и редактируйте файл простым блокнотом),
Не путайте тип прокси
Для ботов подходят именно IPV4 SOCKS5 прокси, а не HTTP/HTTPS, IPV6 итд.
Заключение
Понемногу мы продвигаемся дальше. Если вам что-то непонятно, перечитайте данный урок еще раз. Важна каждая строчка курса и любая мелочь.
Как создавать прокси в Premiere Pro
Ваш компьютер с трудом обрабатывает видеофайлы высокого разрешения? Давайте посмотрим, как вы можете работать с прокси в Premiere Pro.
Возможно, вы слышали о редакторах, работающих с «Proxy Workflow». Это то, что редакторы делают, чтобы снизить качество своих материалов, если они работают с файлами очень большого размера (например, с файлами RAW и 6K), тогда эти файлы легче редактировать. Если у вас относительно слабый компьютер — например, старый ноутбук или устаревший ПК — то прокси-серверы могут сэкономить вам массу времени на рендеринг и быстрее вывести ваш проект. Как бы запутанно не звучал процесс прокси, Premiere недавно сделал его чрезвычайно простым в использовании с настройками приема прокси через Media Encoder.
Что такое прокси
Для начала общее определение термина: прокси — это просто дополнительное звено между вами и вашей целью. Понятие широко используется в разных областях. Часто это посредник в интернете, когда вы используете прокси, чтобы зайти на сайт, который иначе для вас недоступен. Также можно встретить этот термин в новостях — прокси войны, это когда более крупные страны, воюют между собой через третьи страны. Но не будем о политике.
Если упрощенно говорить в тематике видео, то прокси — это видеофайлы с низким разрешением, которые могут заменить видеофайлы с большим разрешением на вашем таймлайне. То есть, у вас относительно слабый компьютер, а вам нужно редактировать файлы в разрешении 4K, а то и вовсе — 8K.
Технически, программы монтажа могут работать с такими файлами даже на достаточно слабых машинах. Но по факту, удобство работы, будет более чем спорным. А отсюда скажется и производительность. Это нужно, потому что файлы с низким разрешением быстрее работают и отображаются в вашем приложении для редактирования видео, что особенно полезно для RAW и несжатого видео.
Монтажёры используют прокси-процессы для работы над крупномасштабными, чтобы компьютер, на котором они работают, мог справиться с нагрузкой.
В прошлом создание прокси было чем-то вроде кошмара. Вы должны были взять все свои кадры и понизить их качество через Media Encoder. Затем, после импорта и редактирования в Premiere, вам нужно было пройти весь этот «автономный» процесс, чтобы получить файлы с полным разрешением для замены прокси. Теперь, благодаря некоторым обновлениям в P remiere, достаточно всего несколько кликов, и у вас есть готовый прокси процесс.
1. Откройте браузер медиаданных в Premiere
Откройте Premiere, перейдите в нижнее правое окно и выберите панель браузера медиаданных. Зайдите на свои локальные диски и выберите папку, содержащую ваши видео в высоком разрешении. Прямо над превью видео будет флажок Вставить, который вам нужно кликнуть.
2. Настройте параметры и импортируйте
Когда вы кликните по «Вставка», откроется окно с настройками. Прежде чем приступить к созданию прокси, перейдите на вкладку «Рабочие диски» и выберите, куда вы хотите экспортировать свои прокси после того, как они пройдут через Media Encoder.
Далее перейдите на вкладку Настройки вкладки, кликните по Вставить, и выберите пункт Создать прокси.
Ниже станет доступным длинный список пресетов на выбор.
Выбор предустановки полностью зависит от вашего рабочего процесса. Если вы работаете с файлами Pro Res, вы можете выбрать прокси Pro Res для использования в качестве выбранного вами формата. Когда я работаю на своем ноутбуке, я использую прокси-сервер Apple Pro Res 422 с разрешением 1024 × 540 или H.264 с разрешением 1024 × 540.
После ввода желаемых настроек пришло время импортировать. Выберите все клипы, которые вы хотите загрузить, и щелкните их правой кнопкой мыши. Выберите Импорт из выпадающего меню.
Premiere автоматически отправит ваши клипы в Media Encoder и создаст прокси, которые автоматически прикрепятся к клипам в окне вашего проекта.
Теперь, если открыть папку, в которую программа сохранила прокси файлы, то мы увидим эти файлы. И если изначальные файлы были большими и тяжелыми, то вот прокси файлы теперь будут меньше. Эти файлы можно увидеть в папке, которую вы указали в настройках прокси.
3. Редактирование с помощью прокси
Чтобы получить доступ к прокси-файлам, просто перейдите в окно проекта и перетащите клип на шкалу времени.
Теперь нужно добавить кнопку для переключения в режим прокси. В окне просмотра, возле кнопок управления кликните на плюсик. У вас откроется панель с доступными кнопками. И теперь вам нужно перетащить кнопку на панель просмотра.
В результате, у вас появится дополнительная кнопка. И теперь, когда она будет активной, значит на панели просмотра у вас будут воспроизводится прокси файлы.
В этом режиме вы можете полностью редактировать своё видео, как с обычным видео, а затем вывести его с нужным вам разрешением. При этом, вы в любой момент сможете переключатся между режимом прокси и обычным режимом.
Купить прокси
Наши IPv4 прокси отлично работают по протоколам HTTP(s) и SOCKS5, поддерживают авторизацию по IP-адресу или логину с паролем, имеют неограниченный трафик и долговечный срок службы. Для каждого пакета прокси формируется список IP с разными подсетями и непоследовательным диапазоном IP-адресов.
Бесплатный тест прокси
Прокси по странам
Прокси по целям
Особенности сервиса
HTTP, HTTPS, SOCKS
Прокси IPv4
ГЕО IP
Большой пул адресов
Разные подсети
Безлимитный трафик
Хорошая скорость
Два способа авторизации
Поддержка API
Конструктор списка
Обновление списка IP
Панель клиента
Остались вопросы?
Найдите ответ на свой вопрос или напишите нам, если у вас остались вопросы.
Основное различие между этими двумя тарифами заключается в том, что серверные прокси предоставляются на несколько пользователей, в то время как индивидуальные прокси предоставляются исключительно в одни руки (каналы IP-адресов не делится между пользователями).
Для нетребовательных пользователей серверные прокси являются отличным предложением, поскольку не уступают по техническим характеристикам индивидуальным прокси и надежно служат весь срок эксплуатации. Такие прокси хорошо подходят не только для узконаправленных целей, но и для выполнения большинства служебных задач.
Для работы прокси с беспарольным доступом используется порт 8085 для HTTP/HTTPS прокси и порт 1085 для SOCKS 4/5 прокси.
Для работы прокси с авторизацией по логину с паролем используется порт 8080 для HTTP/HTTPS прокси и порт 1080 для SOCKS 4/5 прокси.
Все прокси являются статическими, они работают в течение всего срока аренды и не требуют ежедневного обновления.
Список прокси можно обновить раз в 8 дней. Обновление не является обязательным и применяется по желанию клиента.
Скорость работы прокси зависит от многих факторов, в том числе от месторасположения прокси сервера и сайта/ресурса с которым идет работа.
Все прокси подключены к каналам с пропускной способности минимум 100 Мб/с.
Техническая поддержка работает ежедневно с 9:00 до 23:00.
Отзывы
Отличные рабочие прокси, свою функцию выполняют на 100%. Обладают достаточной пропускной способностью, с одного прокси можно работать в несколько потоков. Скорость работы хорошая, соединение всегда стабильное, обрывов связи нет. Приятно, что стоимость прокси не меняется от выбранной страны, это очень удобно. Порадовал большой выбор вариантов способов оплаты, можно быстро оплатить картой или криптовалютой. Прокси выдаются без задержек сразу после оплаты. Для определенных целей идеальное решение, сервис сделан качественно.
Всё согласно описанию, прокси действительно серверные. Качество прокси вполне устраивает, если какие-то из адресов не подходят моим требованиям, тогда поддержка сервиса готова полностью заменить список прокси или частично заменить неподходящие мне адреса. Проблем с настройкой и подключением прокси не возникло, соединение более чем стабильное, подключение не обрывается.
Цены очень демократичные, продление аренды обходится дешевле, что очень приятно. Очень достойный магазин. Рекомендую.
Не первый раз приобретаю прокси у данного поставщика, перепробовал практически все доступные пакеты, от самых маленьких до самых больших. Больше всего нравятся пакеты с американскими прокси, скорость загрузки страниц отличная, парсить англоязычные сайты через такие прокси получается на ура. Радует разнообразие подсетей, для каждого пакета выдаются отличающиеся друг друга адреса. Особенно хочется выделить работу поддержки, которая отвечает очень быстро и всегда готова прийти на помощь. Спасибо за сервис!
Очень хороший, функциональный и самое главное надёжный сервис, которому можно доверять. Бесплатных публичных прокси серверов вы здесь не найдете. Все прокси работают по привязке к IP-адресу, также их можно использовать совместно с авторизацией по логину с паролем в разных программах. Подключение через Socks протокол работает отлично, установил на сервер — прокси работают беспрерывно уже 6 месяц, главное вовремя продлевать аренду. Рекомендую попробовать сервис, прокси правда хорошие.
Почему пользователи выбирают нас
Proxy5 — это не просто площадка, где Вы можете купить индивидуальные и серверные прокси. Прежде всего, наша команда занимается продвижением уникального онлайн сервиса, при сотрудничестве с которым Вы получаете следующие преимущества:
- Большой ассортимент прокси серверов;
- Быстрый доступ к прокси;
- Поддержка всех протоколов;
- Несколько методов аутентификации;
- Бесперебойная работа серверов 24/7, 365 дней в году;
- Возможность протестировать прокси перед покупкой, чтобы убедится в качестве наших услуг и стать нашим постоянным клиентом.
Наш сервис предоставляет качественные прокси IPv4 с поддержкой HTTP(s) и SOCKS5 с хорошей скоростью (до 100 Мб/с), неограниченным трафиком и долговечным сроком службы.
В вашем полном распоряжении более 150 000 IP-адресов из разных стран мира, прокси выдаются из более чем 300 подсетей класса (C).
Прокси работают через авторизацию по IP-адресу или через авторизацию по сгенерированному логину и паролю. Обновлять IP привязку можно самостоятельно в любое время суток. Также можно по желанию обновить список прокси раз в 8 дней.
Процесс покупки не занимает много времени благодаря интуитивно понятному интерфейсу, удобной оплате и автоматической выдаче списка IP. Если прокси вам не подойдут, Вы можете запросить возврат средств в течение суток после совершения оплаты.
Защищённые прокси — практичная альтернатива VPN
В интернете есть достаточное количество информации по теме шифрования и защиты трафика от вмешательств, однако сложился некоторый перекос в сторону различных VPN-технологий. Возможно, отчасти он вызван статьями VPN-сервисов, которые так или иначе утверждают о строгом превосходстве VPN-решений перед прокси. При этом многие решения тех же VPN-провайдеров, не смотря на маркетинговое позиционирование в качестве VPN, технически являются прокси.
На практике прокси больше подходят для повседневной защиты веб-трафика, не создавая при этом неудобств в виде заметной потери скорости и неизбирательности туннелирования. То есть при использовании хорошего прокси не стоит необходимость его отключать для комфортного пользования интернетом.
В этой статье расказано о преимуществах защищённого прокси перед VPN и предложены различные реализации, готовые к использованию.
В чём различие между VPN и прокси?
VPN — это общее название технологий для объединения внутренних сетей на уровне сетевых пакетов или кадров через соединение, установленное поверх другой сети (чаще всего публичной).
Прокси — это серверное приложение, осуществляющее соединения или запросы от своего имени и сетевого адреса в пользу подключившегося к нему клиента, пересылая в результате ему все полученные данные.
VPN осуществляет пересылку полезной нагрузки, находящейся на третьем или втором уровне сетевой модели OSI. Прокси осуществляют пересылку полезной нагрузки между четвёртым и седьмым уровнями сетевой модели OSI включительно.
И VPN, и прокси могут иметь или не иметь шифрования между клиентом и сервером. Обе технологии пригодны для того, чтобы направить трафик пользователя через доверенный сервер, применяя шифрование по пути до него. Однако, подключение через прокси делает это более прямолинейным способом, не привнося дополнительную инкапсуляцию сетевых пакетов, серые адреса самой VPN сети и изменения таблицы маршрутизации, которые привносит VPN просто лишь для того, чтобы сетевой стек системы пользователя направил трафик через нужный сервер.
Преимущества прокси
- В условиях реальной сети с потерями практическая скорость прокси зачастую выше, чем у VPN-решений. Это вызвано тем, что при проксировании TCP-соединений ретрансмиты на участках клиент-прокси и прокси-целевой узел происходят независимо. Прокси имеет свои TCP-буферы и кратковременные задержки ввода-вывода в обе стороны не сказываются на передаче с противоположной стороны. VPN же работает только на сетевом уровне (IP) и потерянные сегменты TCP будут пересылаться по всей длине пути от VPN-клиента до целевого сервера.
- Гибкость. Проще настроить избирательное проксирование. Использование прокси можно ограничить конкретными приложениями, в браузере — конкретными доменами. Можно использовать несколько разных прокси для разных адресов назначения одновременно.
- Трудно обнаружить с помощью DPI, в том числе DPI осуществляющими активные пробы. Однако, для этого необходима некоторая донастройка. В случае с прокси через TLS, такое соединение можно выдать за обычное HTTPS-соединение. В случае с VPN факт его использования виден даже пассивному DPI. Даже если это Wireguard.
- Нет целого класса проблем с внезапно прервавшимся VPN-соединением. В худшем сценарии VPN-соединение может прерваться и пользователь не заметит, что его трафик уже не защищён и/или он уже работает со своего «домашнего» IP-адреса. В случае с прокси такие проблемы исключены.
- Нет принципиальной возможности проводить атаки, пускающие трафик мимо VPN-туннеля. Пример такой проблемы.
- Не нужны высокие привилегии в системе ни для клиента прокси, ни для сервера. Это может быть весьма полезно в случаях, когда у Вас нет высоких прав в системе.
Требования к прокси
Выбирая для себя реализацию защищённого прокси-сервера, я отметил несколько критериев, которым она должна удовлетворять:
- Обязательное шифрование и защита целостности данных внутри соединения.
- Надёжная и проверенная криптография. Доморощенные криптопротоколы крайне нежелательны.
- Устойчивость к DPI, в том числе к активным пробам. В идеале протокол должен внешне выглядеть неотличимо от протоколов, к которым обычно не возникает претензий. Например, как HTTPS.
- Отсутствие мультиплексирования нескольких TCP-соединений внутри одного. Причина этого требования такова: нежелательно, чтобы скорость нескольких соединений была ограничена скоростью одного TCP-соединения. Кроме того, при мультиплексировании нескольких соединений внутри одного приостановка получения данных из одного внутреннего (подвергнутого мультиплексированию) соединения может застопорить все остальные на неопределённое время. Для этого достаточно, чтобы со стороны прокси-сервера ожидало отправки больше данных, чем суммарный размер буфер отправки клиента-демультиплексора и буфер приёма сокета у застопорившего приём приложения. В частности такого эффекта можно иногда добиться, начав качать большой файл через SSH SOCKS5 прокси ( ssh -ND 1080 ), и поставив скачивание на паузу. При неудачном стечении обстоятельств никакой трафик через туннель больше не будет принят. Более подробно о проблеме head-of-line blocking.
- Отсутствие привязки к поставщику или сервису.
Наименование | Резюме |
---|---|
OpenSSH dynamic port forwarding ( ssh -ND 1080 ) | Использует мультиплексирование: низкая скорость, задержки |
shadowsocks | Провал DPI |
obfs4 | По внешнему виду он удовлетворяет всем требованиям, но есть моменты, вызывающие сомнения |
Особенности obfs4
В спецификации протокола obfs4 есть места, которые вызывают вопросы. В рукопожатии со стороны клиента используется номер часа от начала эпохи UNIX, который потом участвует в HMAC-подписи. Сервер, принимая такой пакет от клиента проверяет его, подставляя номер часа по своему времени. Если всё верно, то отвечает своей частью рукопожатия. Для борьбы с разбросом часов сервер должен ещё проверять предыдущий и следующий час.
Зная такое характерное поведение, можно проверить сервер на границе следующего и послеследующего часа, воспроизведя одно из прошлых записанных рукопожатий со стороны клиента. Если сервер перестанет отвечать своей частью рукопожатия в это самое время, то это достаточное основание, чтобы судить, что сервер обслуживает протокол obfs4.
Судя по всему, автор со временем осознал эту проблему и в коде obfs4 реализована защита от обнаружения через воспроизведение. В спецификации она нигде не описана.
Однако, такая защита наоборот упрощает работу по блокировке протокола: сетевому фильтру достаточно в случае сомнений задержать отправку рукопожатия от клиента, перехватив её, а затем отправить сообщение с рукопожатием первым. Таким образом он спровоцирует защиту от воспроизведения уже против клиента, вынуждая сам сервер блокировать клиента.
Следующий момент, вызывающий сомнения это формат «кадра» с данными. Выглядит он следующий образом:
Первые два байта каждого кадра это длина пакета, гаммированная с ключом, который вычисляется от предыдущих ключей. Как он вычисляется ключ не столь важно, главное, что настоящая длина пакета подвергается операции побитового исключающего ИЛИ каким-то ключом. Это значит, что можно инвертировать бит в этой части данных и подмена не будет сразу замечена. Если инвертировать младший значащий бит этого поля, то длина кадра станет либо на единицу меньше истинной, либо на единицу больше. В первом случае это приведёт к сбросу соединения через небольшое случайное время из-за ошибки распаковки NaCl secretbox.
Второй случай более интересный: сервер будет ждать ещё один байт для того, чтобы начать распаковку криптобокса. Получив ещё ровно один байт он также сбросит соединение из-за ошибки распаковки криптобокса. Это поведение можно считать специфичным для obfs4 и можно судить, что мы с высокой вероятностью имеем дело с ним. Таким образом, удачно разрушив одно из соединений клиента, можно с примерно 50%-ным шансом обнаружить obfs4.
Конечно, определение границ одного кадра в потоке тоже может представлять непростую задачу, но нет чётких гарантий, что нерешаемую. В случае обмена короткими сообщениями границы одного кадра могут совпасть с границами TCP-сегмента.
Ну и последняя особенность заключается в том, что сам по себе протокол внешне не похож ни на один из общепринятых. Он спроектирован с предположением, что DPI играет по правилам и незнакомые протоколы просто не трогает. Суровая реальность может показать, что это не так.
По всем этим соображениям я воздержался от использования obfs4.
TLS и SSH в качестве криптографического транспорта
Разумно было бы воспользоваться стандартными защищёнными сетевыми протоколами вроде TLS или SSH для обёртывания соединений с прокси. Действительно, к таким протоколам обычно не возникает претензий со стороны DPI, потому что ими может быть зашифрован легетимный трафик. Что же касается активных проб со стороны DPI, этот вопрос можно решить в частном порядке, в зависимости от конкретного протокола прокси.
Ниже будут представлены несколько готовых решений на базе этих протоколов, пригодных для повседневной постоянной защиты трафика.
SOCKS5 внутри SSH
Вариант с использованием функции dynamic port forwarding у OpenSSH рассматривался выше, но он имеет большие проблемы со скоростью. Единственный способ избавиться от мультиплексирования соединений — это использовать альтернативную реализацию клиента SSH, который обеспечивал бы каждое проксируемое соединение отдельной SSH-сессией.
Я проделал такую работу и реализовал его: Rapid SSH Proxy. Эта реализация обеспечивает каждое проксируемое соединение отдельной SSH-сессией, поддерживая пул подготовленных SSH-сессий для удовлетворения поступающих запросов подключения с минимальной задержкой.
Порядок работы с ним такой же, как у ssh -ND 1080 : на стороне клиента запускается локальный SOCKS5-прокси, принимающий соединения и напрявляющий их в туннель через SSH-сервер.
Следует особо отметить ключевую особенность: никакого стороннего ПО не нужно устанавливать на сервер — rsp работает как ssh-клиент с обычным сервером OpenSSH. Сервером может быть любая unix-подобная операционная система, а так же Windows и Windows Server (в новых версиях OpenSSH теперь доступен в компонентах системы).
Приведу сравнение скорости через сервер в США:
OpenSSH | rsp |
---|---|
SOCKS5 внутри TLS
В случае с TLS очевидным решением было бы использовать stunnel или аналогичную TLS-обёртку для TCP-соединений с SOCKS5-сервером. Это действительно вполне хорошо работает, но возникает следующая проблема: рукопожатие TLS для каждого нового соединения занимает дополнительное время и появляется заметная на глаз задержка при установлении новых соединений из браузера. Это несколько ухудшает комфорт при веб-серфинге.
Для того, чтобы скрыть эту задержку, я подготовил специализированную замену stunnel на клиенте, которая поддерживает пул уже установленных, готовых к запросу TLS-соединений. Даже целых два — первый из них послужил прототипом:
- Связка из реверс-прокси haproxy и SOCKS5-прокси dante, настроенная на защиту от активных проб со стороны клиентов, не прошедших аутентификацию по сертификату: github.com/Snawoot/ptw/tree/master/docker_deploy
- Мой форк go-socks5-proxy со встроенной поддержкой TLS: github.com/Snawoot/socks5-server
HTTP-прокси внутри TLS aka HTTPS-прокси
Есть небольшая путаница в отношении сочетания слов «HTTPS» и «прокси». Есть два понимания такого словосочетания:
- Обычный HTTP-прокси без шифрования, который поддерживает метод HTTP CONNECT и через который может успешно работать HTTPS.
- HTTP-прокси, принимающий TLS-соединения.
Примечательно, что ни в одном браузере нет простой возможности задать в настройках HTTPS-прокси через пользовательский интерфейс (то поле HTTPS-прокси, которое там есть, как раз относится к первому случаю). Но это не представляет собой большой трудности.
Поперебирав различные готовые варианты, я решил написать свой HTTP(S) прокси-сервер: dumbproxy.
Ключевой особенностью получившегося решения является то, что современные браузеры (Firefox и семейство Chrome, включая новый MS Edge) могут работать с ним без какого-либо дополнительного ПО на клиенте (см. руководство по настройке клиентов).
Следует отметить особенности реализации в отношении противодействия активным пробам со стороны DPI. HTTP-прокси легко распознать, подключившись к нему и осуществив попытку какого-либо запроса стороннего ресурса. Если прокси имеет авторизацию, то по стандарту он должен отвергнуть запрос с кодом 407, специфичным именно для HTTP-прокси, и предложить возможную схему для авторизации. Если прокси работает без авторизации, то он выполнит запрос, чем так же себя выдаст. Есть как минимум два способа решения этой проблемы (и оба они реализованы в dumbproxy).
Первый способ заключается в том, чтобы использовать аутентификацию клиентов по сертификатам ещё на этапе TLS-рукопожатия. Это самый стойкий метод, и это действительно корректная причина, по которой любой обычный веб-сервер мог бы отвергнуть клиента.
Второй способ заключается в том, чтобы скрыть от неавторизованных клиентов код ответа 407, возвращая вместо него любой другой ответ с ошибкой. Это вызывает другую проблему: браузеры не смогут понять, что для прокси требуется авторизация. Даже если браузер имеет сохранённый логин и пароль для этого прокси, ответ 407 важен для определения схемы авторизации, по которой эти учётные данные должны быть отправлены (Basic, Digest и т. д.). Для этого нужно позволить прокси генерировать ответ 407 на секретный запрос, чтобы браузер мог запомнить схему авторизации. В качестве такого секретного запроса используется настраиваемый секретный домен (не обязательно реально существующий). По умолчанию этот режим выключен. Подробности можно посмотреть в разделе об аутентификации.
Заключение
Я пользуюсь этими решениями уже один год и в итоге они мне полностью заменили VPN, вместе с этим сняв все проблемы, с которыми сопряжено его использование.
Надеюсь, что эта статья добавит к арсеналу читателей новые подходы к защите трафика и будет им полезной.