Niektoré aplikácie chcú IP:port. Iné potrebujú URL začínajúce na http:// alebo socks5://. Nastavenia prehliadača často oddeľujú adresu a port do rôznych polí. Ten istý koncový bod tak môže mať viac formátov bez zmeny adresy.

Záznam IPv4

Predpokladajme, že zoznam HTTP proxy uvádza ukážkové HTTP proxy 203.0.113.10:8080.

Aplikácia požadujeZadajte
Hostiteľ alebo IP203.0.113.10
Port8080
URL HTTP proxyhttp://203.0.113.10:8080

Neuvádzajte port dvakrát. Ak už má aplikácia pole pre port, zápis 203.0.113.10:8080 do poľa hostiteľa môže spôsobiť pokus preložiť celý reťazec ako názov hostiteľa. Rovnako nepridávajte schému do poľa, ktoré výslovne očakáva iba IP adresu.

Schéma musí zodpovedať službe. Pred prevodom adresy vyberte HTTP alebo SOCKS5 podľa podpory klienta. Zápis socks5:// pred koncový bod HTTP mení to, čo klient odosiela; nezapína SOCKS5 na serveri.

IPv6 potrebuje v URL hranaté zátvorky

Adresa IPv6 už obsahuje dvojbodky, preto URL uzatvára adresu do hranatých zátvoriek pred pridaním portu:

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

Bez zátvoriek je hranica medzi adresou a portom nejednoznačná. Aplikácia so samostatnými poľami zvyčajne chce 2001:db8::10 ako hostiteľa a 8080 ako port; dodržte jej vstupný formát. Obe adresy tu sú dokumentačné príklady, nie funkčné proxy.

Parsujte URL namiesto delenia pri každej dvojbodke

Malý skript Pythonu spracuje URL s IPv4 aj IPv6 v zátvorkách pomocou štandardného parsera URL:

from urllib.parse import urlsplit

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

Vlastnosť hostname vracia adresu bez zátvoriek. Rozdelenie pôvodného reťazca pri každej dvojbodke by tento príklad pokazilo. V skutočnom importéri odmietajte aj chýbajúcich hostiteľov, nepodporované schémy a porty mimo 1–65535. Parsovanie URL dá jeho súčasti; nedokazuje existenciu služby.

Keď zoznam obsahuje používateľské meno a heslo

Bežný tvar URL je http://username:password@host:port. Znaky ako @, # a / v prihlasovacích údajoch vyžadujú správne URL kódovanie. Ak klient ponúka samostatné polia pre tieto údaje, ich použitie je zvyčajne ľahšie než ručné zostavovanie URL.

Pred prevodom prihlasovacieho reťazca oddeleného dvojbodkami skontrolujte pôvodný formát poskytovateľa. Štyri takto oddelené polia nemajú univerzálny význam a samotné heslo môže obsahovať dvojbodku. Parser jednoduchých riadkov IP:port by nemal potichu hádať iný formát.

Súvisiace články