Адны праграмы чакаюць 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 не павінен моўчкі адгадваць іншы фармат.

Падобныя артыкулы