Proxy-IP en poort: welk formaat heeft je app nodig?
Zet een proxyvermelding om in een HTTP- of SOCKS-URL, vul aparte host- en poortvelden in en geef IPv6-adressen de juiste notatie.
Sommige apps verwachten IP:port. Andere hebben een URL nodig die begint met http:// of socks5://. Browserinstellingen hebben vaak aparte velden voor adres en poort. Hetzelfde eindpunt kan dus in meerdere formaten staan zonder dat het adres verandert.
Een IPv4-vermelding
Stel dat een HTTP-proxylijst de voorbeeldproxy 203.0.113.10:8080 voor HTTP geeft.
| De app vraagt om | Vul in |
|---|---|
| Host of IP | 203.0.113.10 |
| Poort | 8080 |
| HTTP-proxy-URL | http://203.0.113.10:8080 |
Vul de poort niet twee keer in. Heeft de app al een poortveld, dan kan 203.0.113.10:8080 in het hostveld ertoe leiden dat de app de hele tekenreeks als hostnaam probeert op te lossen. Voeg ook geen schema toe aan een veld dat uitdrukkelijk alleen een IP-adres verwacht.
Het schema moet bij de dienst passen. Kies HTTP of SOCKS5 op basis van de clientondersteuning voordat je het adres omzet. socks5:// voor een HTTP-eindpunt zetten verandert wat de client verstuurt; het schakelt SOCKS5 op die server niet in.
IPv6 heeft vierkante haken nodig in een URL
Een IPv6-adres bevat al dubbele punten. Daarom zet een URL het adres tussen vierkante haken voordat de poort wordt toegevoegd:
http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080
Zonder haken is de grens tussen adres en poort onduidelijk. Een app met aparte velden verwacht doorgaans 2001:db8::10 als host en 8080 als poort; volg het invoerformaat van die app. Beide adressen hier zijn documentatievoorbeelden, geen actieve proxy’s.
Parse URL’s in plaats van op elke dubbele punt te splitsen
Een klein Python-script kan IPv4-URL’s en IPv6-URL’s met haken verwerken met de standaard-URL-parser:
from urllib.parse import urlsplit
proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)
De eigenschap hostname geeft het adres zonder haken terug. De oorspronkelijke tekenreeks op elke dubbele punt splitsen zou dit voorbeeld stukmaken. Weiger in een echte importfunctie ook ontbrekende hosts, niet-ondersteunde schema’s en poorten buiten 1–65535. Een URL parsen levert de onderdelen op; het bewijst niet dat de dienst bestaat.
Als de lijst een gebruikersnaam en wachtwoord bevat
Een gangbare URL-indeling is http://username:password@host:port. Tekens als @, # en / in inloggegevens hebben de juiste URL-codering nodig. Als de client aparte velden voor inloggegevens biedt, zijn die meestal eenvoudiger dan zelf een URL samenstellen.
Controleer het oorspronkelijke formaat van de aanbieder voordat je een door dubbele punten gescheiden tekenreeks met inloggegevens omzet. Vier zulke velden hebben geen universele betekenis, en een wachtwoord kan zelf een dubbele punt bevatten. Een parser voor eenvoudige IP:port-regels moet niet stilzwijgend naar een ander formaat raden.