Některé aplikace chtějí IP:port. Jiné potřebují URL začínající http:// nebo socks5://. Nastavení prohlížeče často odděluje adresu a port do různých polí. Stejný koncový bod proto může mít více zápisů, aniž se jeho adresa změní.

Položka IPv4

Předpokládejme, že seznam HTTP proxy uvádí ukázkovou HTTP proxy 203.0.113.10:8080.

Aplikace požadujeZadejte
Hostitel nebo IP203.0.113.10
Port8080
URL HTTP proxyhttp://203.0.113.10:8080

Neuvádějte port dvakrát. Pokud aplikace už má pole pro port, může zápis 203.0.113.10:8080 do pole hostitele způsobit pokus přeložit celý řetězec jako název hostitele. Stejně tak nepřidávejte schéma do pole, které výslovně očekává pouze IP adresu.

Schéma musí odpovídat službě. Před převodem adresy zvolte HTTP nebo SOCKS5 podle podpory klienta. Přidání socks5:// před HTTP koncový bod změní to, co klient odesílá; nezapne SOCKS5 na serveru.

IPv6 potřebuje v URL hranaté závorky

Adresa IPv6 už obsahuje dvojtečky, proto ji URL před přidáním portu uzavírá do hranatých závorek:

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

Bez závorek je hranice mezi adresou a portem nejednoznačná. Aplikace s oddělenými poli obvykle chce 2001:db8::10 jako hostitele a 8080 jako port; dodržujte její vstupní formát. Obě zde použité adresy jsou dokumentační příklady, nikoli fungující proxy.

Parsujte URL místo dělení při každé dvojtečce

Krátký skript Pythonu zvládne URL s IPv4 i IPv6 v závorkách pomocí standardního parseru URL:

from urllib.parse import urlsplit

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

Vlastnost hostname vrací adresu bez závorek. Rozdělení původního řetězce při každé dvojtečce by tento příklad rozbilo. Ve skutečném importéru odmítejte také chybějící hostitele, nepodporovaná schémata a porty mimo 1–65535. Parsování URL poskytne jeho části; nedokazuje existenci služby.

Když seznam obsahuje uživatelské jméno a heslo

Běžný tvar URL je http://username:password@host:port. Znaky jako @, # a / v přihlašovacích údajích vyžadují správné URL kódování. Nabízí-li klient samostatná pole pro přihlašovací údaje, bývají jednodušší než ruční sestavování URL.

Před převodem přihlašovacího řetězce odděleného dvojtečkami ověřte původní formát poskytovatele. Čtyři pole oddělená dvojtečkami nemají univerzální význam a samotné heslo může dvojtečku obsahovat. Parser jednoduchých řádků IP:port by neměl jiný formát tiše odhadovat.

Související články