Kai kurios programos prašo IP:port. Kitoms reikia URL, prasidedančio http:// arba socks5://. Naršyklės nuostatose adresas ir prievadas dažnai rašomi atskiruose laukuose. Taigi tas pats galinis taškas gali būti pateiktas keliais formatais nekeičiant jo adreso.

IPv4 įrašas

Tarkime, HTTP tarpinių serverių sąraše pateiktas pavyzdinis HTTP tarpinis serveris 203.0.113.10:8080.

Programa prašoĮveskite
Pagrindinis kompiuteris arba IP203.0.113.10
Prievadas8080
HTTP tarpinio serverio URLhttp://203.0.113.10:8080

Nenurodykite prievado du kartus. Jei programa jau turi prievado lauką, įrašius 203.0.113.10:8080 pagrindinio kompiuterio lauke ji gali bandyti visą eilutę išspręsti kaip kompiuterio vardą. Taip pat nepridėkite schemos į lauką, kuriame aiškiai tikimasi tik IP adreso.

Schema turi atitikti paslaugą. Prieš konvertuodami adresą pasirinkite HTTP arba SOCKS5 pagal kliento palaikymą. Prieš HTTP galinį tašką parašius socks5:// pasikeičia kliento siunčiami duomenys; tai neįjungia SOCKS5 serveryje.

IPv6 adresui URL reikia laužtinių skliaustų

IPv6 adrese jau yra dvitaškių, todėl URL apgaubia adresą laužtiniais skliaustais prieš pridėdamas prievadą:

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

Be skliaustų riba tarp adreso ir prievado neaiški. Programa su atskirais laukais paprastai prašo 2001:db8::10 kaip pagrindinio kompiuterio ir 8080 kaip prievado; laikykitės jos įvesties formato. Abu čia naudojami adresai yra dokumentacijos pavyzdžiai, o ne veikiantys tarpiniai serveriai.

Analizuokite URL, o ne skaidykite ties kiekvienu dvitaškiu

Nedidelis Python scenarijus gali apdoroti IPv4 URL ir IPv6 URL su skliaustais naudodamas standartinį URL analizatorių:

from urllib.parse import urlsplit

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

Savybė hostname grąžina adresą be skliaustų. Pradinės eilutės skaidymas ties kiekvienu dvitaškiu sugadintų šį pavyzdį. Tikrame importuotojuje taip pat atmeskite trūkstamus pagrindinius kompiuterius, nepalaikomas schemas ir prievadus už 1–65535 ribų. URL analizė pateikia jo dalis, bet neįrodo, kad paslauga egzistuoja.

Kai sąraše yra naudotojo vardas ir slaptažodis

Dažna URL struktūra yra http://username:password@host:port. Prisijungimo duomenų simboliai, tokie kaip @, # ir /, turi būti tinkamai užkoduoti URL. Jei klientas siūlo atskirus prisijungimo duomenų laukus, juos naudoti paprastai lengviau, nei rankomis sudaryti URL.

Prieš konvertuodami dvitaškiais atskirtą prisijungimo duomenų eilutę patikrinkite pradinį teikėjo formatą. Keturi taip atskirti laukai neturi universalios reikšmės, o pats slaptažodis gali turėti dvitaškį. Paprastoms IP:port eilutėms skirtas analizatorius neturėtų tyliai spėlioti kito formato.

Susiję straipsniai