IP і порт проксі: які фармат патрэбны праграме?
Пераўтварыце запіс са спіса проксі ў HTTP- ці SOCKS-URL, запоўніце асобныя палі хоста і порта і правільна запішыце IPv6-адрасы.
Адны праграмы чакаюць IP:port. Іншым патрэбны URL, які пачынаецца з http:// або socks5://. Налады браўзера часта маюць асобныя палі для адраса і порта. Таму той самы канцавы пункт можа мець некалькі фарматаў запісу без змены адраса.
Запіс IPv4
Дапусцім, спіс HTTP-проксі дае прыклад HTTP-проксі 203.0.113.10:8080.
| Праграма запытвае | Увядзіце |
|---|---|
| Хост або IP | 203.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 не павінен моўчкі адгадваць іншы фармат.