Prokura IP kaj pordo: kiun formaton bezonas via aplikaĵo?
Konvertu prokurilan listeron al HTTP- aŭ SOCKS-URL, plenigu apartajn kampojn por gastiganto kaj pordo, kaj ĝuste formatu IPv6-adresojn.
Iuj aplikaĵoj volas IP:port. Aliaj bezonas URL-on komenciĝantan per http:// aŭ socks5://. Retumilaj agordoj ofte metas adreson kaj pordon en apartajn kampojn. La sama finpunkto do povas aperi en pluraj formatoj sen ŝanĝo de sia adreso.
IPv4-listero
Supozu, ke listo de HTTP-prokuriloj donas la ekzemplan HTTP-prokurilon 203.0.113.10:8080.
| La aplikaĵo petas | Enigu |
|---|---|
| Gastiganto aŭ IP | 203.0.113.10 |
| Pordo | 8080 |
| URL de HTTP-prokurilo | http://203.0.113.10:8080 |
Ne enmetu la pordon dufoje. Se la aplikaĵo jam havas pordokampon, meti 203.0.113.10:8080 en la gastigantan kampon povas igi ĝin provi solvi la tutan ĉenon kiel gastigantan nomon. Same, ne aldonu skemon al kampo, kiu eksplicite atendas nur IP-adreson.
La skemo devas kongrui kun la servo. Elektu HTTP aŭ SOCKS5 laŭ la subteno de la kliento antaŭ ol konverti la adreson. Skribi socks5:// antaŭ HTTP-finpunkto ŝanĝas tion, kion sendas la kliento; ĝi ne ebligas SOCKS5 sur tiu servilo.
IPv6 bezonas ortajn krampojn en URL
IPv6-adreso jam enhavas dupunktojn, do URL ĉirkaŭas la adreson per ortaj krampoj antaŭ ol aldoni la pordon:
http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080
Sen la krampoj la limo inter adreso kaj pordo estas ambigua. Aplikaĵo kun apartaj kampoj kutime volas 2001:db8::10 kiel gastiganton kaj 8080 kiel pordon; sekvu ĝian enigformaton. Ambaŭ adresoj ĉi tie estas dokumentaj ekzemploj, ne funkciantaj prokuriloj.
Analizu URL-ojn anstataŭ dividi ĉe ĉiu dupunkto
Malgranda Python-skripto povas trakti IPv4-URL-ojn kaj krampitajn IPv6-URL-ojn per la norma URL-analizilo:
from urllib.parse import urlsplit
proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)
La atributo hostname liveras la adreson sen la krampoj. Dividi la originan ĉenon ĉe ĉiu dupunkto rompus ĉi tiun ekzemplon. En vera importilo ankaŭ malakceptu mankantajn gastigantojn, nesubtenatajn skemojn kaj pordojn ekster 1–65535. Analizado de URL donas ĝiajn erojn; ĝi ne pruvas, ke la servo ekzistas.
Kiam la listo enhavas uzantnomon kaj pasvorton
Ofta URL-aranĝo estas http://username:password@host:port. Signoj kiel @, # kaj / en ensalutiloj bezonas ĝustan URL-kodadon. Se la kliento ofertas apartajn ensalutilajn kampojn, uzi ilin kutime estas pli facile ol mane konstrui URL-on.
Kontrolu la originan formaton de la provizanto antaŭ ol konverti dupunkte disigitan ensalutilan ĉenon. Kvar kampoj disigitaj per dupunktoj ne havas universalan signifon, kaj pasvorto mem povas enhavi dupunkton. Analizilo por simplaj IP:port-linioj ne devas silente diveni alian formaton.