Руководство
Форматы прокси: ip:port:user:pass, URL и запись SOCKS5
Формат прокси — это порядок хоста, порта, имени пользователя, пароля и протокола в одной строке. Разбираем ip:port:user:pass, user:pass@host:port и URL с http:// и socks5h://, какой формат нужен какому инструменту, запись спецсимволов и IPv6, пакетное преобразование и ошибки, которые возникают из-за формата.
Коротко
- Формат прокси — это порядок и разделители, с которыми одни и те же пять параметров (хост, порт, имя пользователя, пароль, протокол) записываются в одну строку; самые распространённые варианты: host:port:user:pass, user:pass@host:port и URL вида http://user:pass@host:port.
- Схема в URL описывает протокол прокси-сервера: даже для HTTPS-сайтов через HTTP-прокси адрес пишется с http://, а https:// означает TLS-соединение с самим прокси.
- socks5:// разрешает доменное имя на локальном компьютере, а socks5h:// на стороне прокси; чтобы DNS-запросы не уходили из локальной сети, выбирайте socks5h.
- В формате URL символы @, :, /, #, ? и % в пароле кодируются процентным кодированием (@ → %40); IPv6-хост пишется в квадратных скобках: http://USER:PASSWORD@[2001:db8::10]:8989.
- Playwright, Puppeteer и Chrome принимают учётные данные отдельно от URL; экраны Wi‑Fi в Windows и Android принимают только хост и порт; cURL и Python работают с полным URL со схемой.
Формат прокси определяет, в каком порядке хост, порт, имя пользователя, пароль и протокол записываются в одну строку. Чаще всего встречаются три варианта: host:port:user:pass (формат личного кабинета и списков), user:pass@host:port и http://user:pass@host:port (формат URL). SOCKS5-прокси записывается тем же URL, только со схемой socks5:// или socks5h://.
Данные во всех форматах одинаковые, меняются только порядок и разделитель. Проблемы начинаются, когда программа ждёт какой-то один из них: cURL и Python требуют URL, антидетект-браузеры принимают строку из четырёх частей, а Windows и Android показывают только поля для хоста и порта. В примерах ниже используется адрес шлюза WeProxy gw.weproxy.com.tr:8989; USER и PASSWORD — ваши данные из личного кабинета.
Что такое формат прокси и из каких частей он состоит?
Подключение к прокси описывается максимум пятью параметрами. Хост — это доменное имя или IP-адрес прокси-сервера (gw.weproxy.com.tr, 203.0.113.10). Порт — номер, на котором сервер принимает соединения (8989). Имя пользователя и пароль нужны, если аутентификация идёт по логину и паролю. Протокол определяет, как клиент общается с прокси (http, socks5).
Хост и порт обязательны в любом формате. Если учётных данных нет, строка остаётся в виде host:port; тогда прокси пускает по IP-адресу, с которого пришло соединение (IP whitelist). Протокол в большинстве форматов не указывается, и клиент подставляет своё значение по умолчанию. Многие инструменты читают строку без схемы как HTTP-прокси. Если так передать SOCKS5-прокси, соединение установится, но на первом же запросе вы получите ошибку несовпадения протоколов.
Чем HTTP отличается от SOCKS5 и какой протокол выбрать под задачу, разобрано в статье HTTP vs SOCKS5. Какой бы протокол вы ни выбрали, программе его нужно сообщить: либо схемой в адресе, либо в отдельном выпадающем списке.
Как читать формат ip:port:user:pass?
ip:port:user:pass (или host:port:user:pass) чаще всего встречается в списках прокси. Четыре поля разделены двоеточием:
gw.weproxy.com.tr:8989:USER:PASSWORD
203.0.113.10:8989:USER:PASSWORD
Такую строку легко вставить в таблицу, текстовый файл или поле массового импорта антидетект-браузера. Слабое место в том, что сам разделитель может встретиться внутри данных. Если в пароле есть :, строка распадается на пять частей, и что к чему относится, программа решает уже по своим предположениям. IPv6-адрес и так записывается через :, поэтому в этом формате его можно прочитать только в квадратных скобках ([2001:db8::10]:8989:USER:PASSWORD).
Некоторые провайдеры отдают те же четыре поля в другом порядке: user:pass:host:port или host:port@user:pass. Программа не угадывает порядок по вашему списку. Она смотрит, стоит ли во втором поле число, и считает его портом; если пароль состоит только из цифр, неверное чтение пройдёт без ошибки, а в результате будет 407. Проверьте порядок полей в своём списке по хосту и порту в первой строке.
Формат URL: как записать http://user:pass@host:port?
Формат URL использует общую структуру адреса, описанную в RFC 3986:
схема://пользователь:пароль@host:port
http://USER:[email protected]:8989
Схема описывает протокол прокси-сервера, а не целевого сайта. Если вы идёте на HTTPS-сайт через HTTP-прокси, адрес прокси всё равно начинается с http://. Клиент отправляет прокси запрос CONNECT, и TLS-соединение устанавливается внутри этого туннеля. Схема https:// означает, что клиент будет говорить по TLS с самим прокси-сервером; если прокси этого не поддерживает, соединение обрывается на рукопожатии.
Запись без схемы user:pass@host:port тоже распространена. Большинство программ читают её как HTTP-прокси, но принимают её не все. Библиотеки Python, такие как requests и httpx, ждут полный URL со схемой. Примеры для каждой библиотеки есть в статье Как использовать прокси в Python.
В cURL URL передаётся в параметр -x. Если учётные данные нужно держать отдельно от адреса, используется -U:
curl -x "http://USER:[email protected]:8989" https://api.ipify.org
curl -x "http://gw.weproxy.com.tr:8989" -U "USER:PASSWORD" https://api.ipify.org
Согласно документации cURL, если в значении -x нет схемы, адрес считается HTTP-прокси, а если не указан порт, подставляется 1080. Всегда указывайте порт явно, иначе запрос уйдёт не на тот порт и вы получите Connection refused.
Как записать SOCKS5-прокси? Разница между socks5 и socks5h
URL SOCKS5-прокси выглядит так же, как у HTTP, меняется только схема:
socks5://USER:[email protected]:8989
socks5h://USER:[email protected]:8989
Две схемы отличаются тем, где разрешается доменное имя. socks5:// разрешает доменное имя цели на вашем компьютере и отправляет прокси уже IP-адрес. socks5h:// передаёт доменное имя прокси как есть, и разрешает его сам прокси. Второй вариант не выпускает DNS-запросы из вашей локальной сети, а цель разрешается так, как её видят в стране прокси. Подробнее об этом рассказано в руководстве по утечкам DNS.
curl -x "socks5h://USER:[email protected]:8989" https://api.ipify.org
В SOCKS5 имя пользователя и пароль передаются в отдельном субсогласовании (RFC 1929), а HTTP-прокси получает те же данные в заголовке Proxy-Authorization. Запись формата в обоих протоколах одинаковая. В SOCKS4 поля пароля нет, есть только идентификатор пользователя; если записать прокси с логином и паролем как socks4://, аутентификация не сработает.
Большинство продуктов WeProxy поддерживают HTTP и SOCKS5 одновременно. Мобильные прокси работают только по HTTP; если записать их со схемой socks5://, соединение не установится. Поддерживаемые протоколы указаны в таблице технических характеристик на странице продукта.
Сравнение форматов прокси
| Формат | Пример | Протокол | Спецсимволы | Где используется |
|---|---|---|---|---|
host:port | gw.weproxy.com.tr:8989 | Нет | Без проблем | IP whitelist, системные настройки прокси |
host:port:user:pass | gw.weproxy.com.tr:8989:USER:PASSWORD | Нет | : разбивает пароль | Списки из личного кабинета, массовый импорт в антидетект-браузеры |
user:pass@host:port | USER:[email protected]:8989 | Нет | @ и : нужно кодировать | Некоторые боты и скраперы |
URL (http://) | http://USER:[email protected]:8989 | Есть | Процентное кодирование | cURL, Python, Node.js, переменные окружения |
URL (socks5h://) | socks5h://USER:[email protected]:8989 | Есть, DNS на стороне прокси | Процентное кодирование | cURL, SOCKS-клиенты Python |
Если вы пишете код, берите за основу формат URL: он передаёт протокол, у него есть стандартное правило разбора, а проблема спецсимволов решается процентным кодированием. Для обмена списками и массового добавления прокси в антидетект-браузер удобнее host:port:user:pass.
Какой формат прокси нужен каждому инструменту?
| Инструмент | Ожидаемый формат | Примечание |
|---|---|---|
| cURL | -x схема://user:pass@host:port | Учётные данные можно передать отдельно через -U user:pass |
Python (requests, httpx) | Полный URL со схемой | Для SOCKS нужен дополнительный пакет |
| Переменные окружения | HTTPS_PROXY=http://user:pass@host:port | Для HTTP cURL читает только http_proxy в нижнем регистре |
| Playwright | Отдельные поля server, username, password | В server учётные данные не пишутся |
| Puppeteer, Chrome | --proxy-server=host:port | Учётные данные передаются через page.authenticate() |
| Антидетект-браузеры | Отдельные поля или быстрая вставка | Большинство распознают host:port:user:pass и формат URL |
| Proxifier | Отдельные поля и выбор протокола | Выбирается SOCKS Version 5 или HTTPS |
| Windows, Android Wi‑Fi | Только хост и порт | Полей для логина и пароля нет |
В браузерной автоматизации учётные данные запрашиваются отдельно от URL намеренно. Флаг Chrome --proxy-server не принимает часть user:pass@. Playwright получает прокси в виде объекта:
const browser = await chromium.launch({
proxy: {
server: 'http://gw.weproxy.com.tr:8989',
username: 'USER',
password: 'PASSWORD',
},
})
Документация Playwright читает значение host:port без схемы как HTTP-прокси. Сам по себе Chrome не поддерживает SOCKS5-прокси с логином и паролем, поэтому для автоматизации в Chrome с прокси, которому нужна аутентификация, выбирайте схему HTTP. Полная настройка с page.authenticate() в Puppeteer описана на странице интеграции с Puppeteer.
Экраны системных настроек прокси в Windows и Android принимают только хост и порт. Если ввести туда прокси с аутентификацией, одни приложения спросят пароль, другие без вопросов откажут в соединении. На странице интеграций есть пошаговые руководства для Windows и Android.
Как записать пароль со спецсимволами и IPv6-адрес?
В формате URL у символов @, :, /, #, ? и % есть особое значение. Если один из них встречается в пароле, его нужно записать процентным кодированием:
| Символ | Закодированный вид |
|---|---|
@ | %40 |
: | %3A |
/ | %2F |
# | %23 |
? | %3F |
% | %25 |
Например, если пароль p@ss:9, URL будет http://USER:p%40ss%[email protected]:8989. Из-за незакодированного @ клиент принимает остаток пароля за имя хоста, и в итоге вы получите либо ошибку неразрешимого адреса, либо 407 Proxy Authentication Required. Не кодируйте вручную, используйте встроенную функцию языка программирования:
from urllib.parse import quote
password = quote("p@ss:9", safe="") # p%40ss%3A9
proxy = f"http://USER:{password}@gw.weproxy.com.tr:8989"
Процентное кодирование действует только в формате URL. Если написать %40 в строке host:port:user:pass, большинство программ отправят это как настоящие символы пароля. В инструменты с отдельными полями для логина и пароля (Playwright, Proxifier, антидетект-браузеры) пароль всегда вводите как есть, без кодирования.
IPv6-адреса в URL пишутся в квадратных скобках, потому что собственные двоеточия адреса путаются с разделителем порта:
http://USER:PASSWORD@[2001:db8::10]:8989
Если записать IPv6-адрес без скобок, клиент примет последнее двоеточие за разделитель порта. На каких сайтах работают IPv6-прокси, объясняется в статье IPv4 vs IPv6.
Как перевести список прокси из одного формата в другой?
Если список из личного кабинета в формате host:port:user:pass нужно превратить в URL для скрипта, конвертер форматов прокси преобразует строки пакетно. Инструмент распознаёт четыре входных формата (схема://user:pass@host:port, user:pass@host:port, host:port:user:pass, host:port) и записывает их в выбранном вами формате. Список преобразуется прямо в браузере и на сервер не отправляется.
Как работает инструмент:
- Строки без схемы переводятся в URL с
http://. Если нужен SOCKS5, замените схему в результате. - В выводе URL имя пользователя и пароль кодируются процентным кодированием; в выводе
host:port:user:passони остаются как есть. - В строке из четырёх частей второе поле читается как порт. Список с порядком
user:pass:host:portсначала приведите к правильному порядку. - Строки со схемой
socks5h://инструмент не распознаёт и добавляет к счётчику «пропущено». Их можно перевести со схемойsocks5://, а потом вернуть схему в результате.
Если то же самое нужно сделать в скрипте, учтите, что в пароле может быть :, и делите строку не больше трёх раз:
from urllib.parse import quote
def to_url(line: str, scheme: str = "http") -> str:
host, port, user, password = line.strip().split(":", 3)
return f"{scheme}://{quote(user, safe='')}:{quote(password, safe='')}@{host}:{port}"
print(to_url("gw.weproxy.com.tr:8989:USER:PASSWORD"))
# http://USER:[email protected]:8989
split(":", 3) делит строку по первым трём разделителям; двоеточия внутри пароля остаются в последней части. С IPv6-хостами этот способ не работает, такие строки обрабатывайте отдельно.
Ошибки формата прокси и их решение
Неправильно записанная строка прокси редко выдаёт явную «ошибку формата». Ошибка появляется на другом этапе соединения и под другим названием:
| Симптом | Возможная причина в формате | Решение |
|---|---|---|
407 Proxy Authentication Required | В пароле незакодированный символ, перепутан порядок полей | Закодируйте пароль процентным кодированием, проверьте порядок |
Connection refused | Порт не указан или указан неверно, использован порт по умолчанию | Укажите порт явно |
| Соединение обрывается на первом запросе | HTTP-прокси записан как socks5:// или SOCKS5-прокси как http:// | Укажите схему, которая совпадает с протоколом продукта |
| Ошибка рукопожатия SSL/TLS | Адрес прокси записан с https:// | Используйте http:// |
| Виден ваш реальный IP | Прокси назначен только для HTTP-запросов или NO_PROXY охватывает цель | Задайте прокси и для HTTPS |
| Строка не импортируется | Инструмент не знает такой порядок полей | Переведите строку в формат, который ждёт инструмент |
Чтобы проверить строку независимо от кода, вставьте её в proxy checker. Если строка работает в чекере, но не работает в вашей программе, проблема в формате или в настройках прокси самой программы. Страну и сеть выходного IP можно посмотреть в инструменте My IP. На каком уровне возникает каждый HTTP-код и как настроить повторы при временных ошибках, подробно разобрано в руководстве по кодам ошибок прокси.
Строка прокси с учётными данными равносильна паролю. Не показывайте её на скриншотах, в обращениях в поддержку и в публичных репозиториях; в коде читайте её из переменной окружения, а перед тем как делиться логами, удаляйте пароль из URL. Для какой бы задачи вы ни использовали прокси, условия использования целевого сайта, файл robots.txt, GDPR и местное законодательство о персональных данных продолжают действовать. Разрешённые варианты использования сервисов WeProxy перечислены на странице правил допустимого использования. Сравнить ротационные и статические IP можно на страницах rotating residential proxy и статических дата-центровых IPv4.
Частые вопросы
Что означает формат ip:port:user:pass?
Это формат списков, в котором IP-адрес или хост прокси, порт, имя пользователя и пароль записываются через двоеточие, например gw.weproxy.com.tr:8989:USER:PASSWORD. Антидетект-браузеры и поля массового импорта принимают его напрямую. Код и инструменты командной строки обычно требуют URL вида http://USER:PASSWORD@host:port; для преобразования можно воспользоваться конвертером форматов прокси.
Адрес прокси пишется с http:// или с https://?
В большинстве случаев с http://. Схема описывает протокол прокси-сервера, а не целевого сайта. Когда вы идёте на HTTPS-сайт через HTTP-прокси, клиент отправляет прокси CONNECT, и TLS устанавливается внутри туннеля. Схема https:// означает, что клиент будет говорить по TLS и с самим прокси-сервером; если прокси этого не поддерживает, соединение обрывается на рукопожатии и вы получаете ошибку SSL.
Чем socks5 отличается от socks5h?
Обе схемы подключаются к одному и тому же SOCKS5-прокси, разница в разрешении DNS. socks5:// разрешает доменное имя цели на вашем компьютере и отправляет прокси IP-адрес. socks5h:// передаёт доменное имя прокси, и разрешение происходит на его стороне. Второй вариант не выпускает DNS-запросы из вашей локальной сети, а цель разрешается с учётом расположения прокси. cURL и requests в Python понимают обе схемы.
В моём пароле есть @ или :, как записать его в URL прокси?
В формате URL запишите эти символы процентным кодированием: @ как %40, : как %3A, / как %2F, # как %23. Например, пароль p@ss:9 превращается в p%40ss%3A9. В Python это сделает за вас urllib.parse.quote(пароль, safe=""). Кодирование действует только внутри URL; в инструменты с отдельным полем пароля и в строки host:port:user:pass пароль вводится как есть.
Какую ошибку я получу, если формат прокси неверный?
Ошибка формата обычно проявляется под другим названием. Незакодированный символ в пароле или перепутанный порядок полей дают 407 Proxy Authentication Required. Пропущенный порт приводит к Connection refused, неверная схема к обрыву соединения на первом запросе, а адрес прокси с https:// к ошибке рукопожатия SSL. Вставьте строку в proxy checker, чтобы понять, в чём проблема: в формате или в настройках прокси самой программы.









