WeProxy

Руководство

Форматы прокси: ip:port:user:pass, URL и запись SOCKS5

11 мин чтения

Формат прокси — это порядок хоста, порта, имени пользователя, пароля и протокола в одной строке. Разбираем 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:portgw.weproxy.com.tr:8989НетБез проблемIP whitelist, системные настройки прокси
host:port:user:passgw.weproxy.com.tr:8989:USER:PASSWORDНет: разбивает парольСписки из личного кабинета, массовый импорт в антидетект-браузеры
user:pass@host:portUSER:[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, чтобы понять, в чём проблема: в формате или в настройках прокси самой программы.

Начать

Проверьте Прокси Уже Сегодня

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