Деякі застосунки очікують IP:port. Іншим потрібен URL, що починається з http:// або socks5://. Налаштування браузера часто мають окремі поля адреси й порту. Тому та сама кінцева точка може мати кілька форматів запису без зміни адреси.

Запис IPv4

Припустімо, список HTTP-проксі наводить приклад HTTP-проксі 203.0.113.10:8080.

Застосунок запитуєВведіть
Хост або IP203.0.113.10
Порт8080
URL HTTP-проксіhttp://203.0.113.10:8080

Не вказуйте порт двічі. Якщо застосунок уже має поле порту, запис 203.0.113.10:8080 у полі хоста може змусити його спробувати розв’язати весь рядок як ім’я хоста. Так само не додавайте схему до поля, що явно очікує лише IP-адресу.

Схема має відповідати сервісу. Перед перетворенням адреси виберіть HTTP або SOCKS5 відповідно до підтримки клієнта. Префікс socks5:// перед кінцевою точкою HTTP змінює те, що надсилає клієнт, але не вмикає SOCKS5 на сервері.

IPv6 у URL потребує квадратних дужок

IPv6-адреса вже містить двокрапки, тому URL бере адресу у квадратні дужки перед додаванням порту:

http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080

Без дужок межа між адресою й портом неоднозначна. Застосунок з окремими полями зазвичай очікує 2001:db8::10 як хост і 8080 як порт; дотримуйтеся його формату введення. Обидві адреси тут — приклади для документації, а не робочі проксі.

Розбирайте URL замість поділу за кожною двокрапкою

Невеликий скрипт Python може обробляти URL з IPv4 та IPv6 у дужках стандартним парсером URL:

from urllib.parse import urlsplit

proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)

Властивість hostname повертає адресу без дужок. Поділ початкового рядка за кожною двокрапкою зіпсував би цей приклад. У справжньому імпортері також відхиляйте відсутні хости, непідтримувані схеми та порти поза 1–65535. Розбір URL дає його складники, але не доводить існування сервісу.

Коли список містить ім’я користувача й пароль

Поширений формат URL — http://username:password@host:port. Символи @, # та / в облікових даних потребують правильного URL-кодування. Якщо клієнт має окремі поля облікових даних, користуватися ними зазвичай простіше, ніж складати URL вручну.

Перед перетворенням рядка облікових даних, розділених двокрапками, перевірте початковий формат постачальника. Чотири такі поля не мають універсального значення, а сам пароль може містити двокрапку. Парсер простих рядків IP:port не повинен мовчки вгадувати інший формат.

Схожі статті