Nogle apps vil have IP:port. Andre kræver en URL, der begynder med http:// eller socks5://. Browserindstillinger har ofte separate felter til adresse og port. Samme endepunkt kan derfor optræde i flere formater uden at skifte adresse.

En IPv4-post

Antag, at en HTTP-proxyliste giver dig eksempelproxyen 203.0.113.10:8080 til HTTP.

Appen beder omIndtast
Vært eller IP203.0.113.10
Port8080
HTTP-proxy-URLhttp://203.0.113.10:8080

Angiv ikke porten to gange. Har appen allerede et portfelt, kan 203.0.113.10:8080 i værtsfeltet få den til at forsøge at slå hele strengen op som et værtsnavn. Tilføj heller ikke et skema i et felt, der udtrykkeligt kun forventer en IP-adresse.

Skemaet skal svare til tjenesten. Vælg HTTP eller SOCKS5 efter klientens understøttelse, før du omdanner adressen. socks5:// foran et HTTP-endepunkt ændrer, hvad klienten sender; det aktiverer ikke SOCKS5 på serveren.

IPv6 kræver kantede parenteser i en URL

En IPv6-adresse indeholder allerede koloner, så URL’en omslutter adressen med kantede parenteser, før porten tilføjes:

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

Uden parenteserne er grænsen mellem adresse og port tvetydig. En app med separate felter vil normalt have 2001:db8::10 som vært og 8080 som port; følg dens inputformat. Begge adresser her er dokumentationseksempler, ikke aktive proxyer.

Parse URL’er i stedet for at dele ved hvert kolon

Et lille Python-script kan håndtere IPv4-URL’er og IPv6-URL’er med parenteser med standardparseren til URL’er:

from urllib.parse import urlsplit

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

Egenskaben hostname returnerer adressen uden parenteserne. At dele den oprindelige streng ved hvert kolon ville ødelægge dette eksempel. I en rigtig importfunktion bør du også afvise manglende værter, ikke-understøttede skemaer og porte uden for 1–65535. Parsing giver URL’ens dele; det beviser ikke, at tjenesten findes.

Når listen indeholder brugernavn og adgangskode

Et almindeligt URL-format er http://username:password@host:port. Tegn som @, # og / i loginoplysninger skal URL-kodes korrekt. Har klienten separate felter til loginoplysninger, er de som regel nemmere end at bygge URL’en manuelt.

Kontrollér udbyderens oprindelige format, før du omdanner en kolonsepareret streng med loginoplysninger. Fire kolonseparerede felter har ingen universel betydning, og adgangskoden kan selv indeholde et kolon. En parser til simple IP:port-linjer bør ikke stiltiende gætte et andet format.

Relaterede artikler