Proxy-IP und Port: Welches Format braucht Ihre App?
Einen Proxy-Listeneintrag in eine HTTP- oder SOCKS-URL umwandeln, getrennte Host- und Portfelder ausfüllen und IPv6-Adressen richtig formatieren.
Manche Apps erwarten IP:port. Andere benötigen eine URL, die mit http:// oder socks5:// beginnt. Browsereinstellungen haben oft getrennte Felder für Adresse und Port. Derselbe Endpunkt kann daher in mehreren Formaten erscheinen, ohne dass sich seine Adresse ändert.
Ein IPv4-Eintrag
Angenommen, eine HTTP-Proxyliste nennt als Beispiel den HTTP-Proxy 203.0.113.10:8080.
| Die App fragt nach | Eingabe |
|---|---|
| Host oder IP | 203.0.113.10 |
| Port | 8080 |
| HTTP-Proxy-URL | http://203.0.113.10:8080 |
Geben Sie den Port nicht zweimal an. Hat die App bereits ein Portfeld, kann 203.0.113.10:8080 im Hostfeld dazu führen, dass sie die gesamte Zeichenfolge als Hostnamen aufzulösen versucht. Fügen Sie ebenso kein Schema hinzu, wenn ein Feld ausdrücklich nur eine IP-Adresse erwartet.
Das Schema muss zum Dienst passen. Wählen Sie vor dem Umwandeln der Adresse je nach Clientunterstützung HTTP oder SOCKS5. Ein vorangestelltes socks5:// bei einem HTTP-Endpunkt ändert, was der Client sendet; es aktiviert kein SOCKS5 auf diesem Server.
IPv6 braucht in einer URL eckige Klammern
Eine IPv6-Adresse enthält bereits Doppelpunkte. Deshalb wird die Adresse in einer URL vor dem Anhängen des Ports in eckige Klammern gesetzt:
http://[2001:db8::10]:8080
socks5://[2001:db8::10]:1080
Ohne die Klammern ist die Grenze zwischen Adresse und Port mehrdeutig. Eine App mit getrennten Feldern erwartet gewöhnlich 2001:db8::10 als Host und 8080 als Port; beachten Sie ihr Eingabeformat. Beide hier verwendeten Adressen sind Dokumentationsbeispiele, keine aktiven Proxys.
URLs parsen, statt an jedem Doppelpunkt zu teilen
Ein kleines Python-Skript kann IPv4-URLs und IPv6-URLs mit Klammern mit dem Standard-URL-Parser verarbeiten:
from urllib.parse import urlsplit
proxy = urlsplit("http://[2001:db8::10]:8080")
print(proxy.scheme)
print(proxy.hostname)
print(proxy.port)
Die Eigenschaft hostname liefert die Adresse ohne Klammern zurück. Die ursprüngliche Zeichenfolge an jedem Doppelpunkt aufzuteilen würde dieses Beispiel beschädigen. Ein echter Importer sollte außerdem fehlende Hosts, nicht unterstützte Schemata und Ports außerhalb von 1–65535 ablehnen. Das Parsen liefert die Bestandteile einer URL; es belegt nicht, dass der Dienst existiert.
Wenn die Liste Benutzername und Passwort enthält
Ein gängiger URL-Aufbau ist http://username:password@host:port. Zeichen wie @, # und / in Zugangsdaten müssen korrekt URL-kodiert werden. Bietet der Client getrennte Felder für Zugangsdaten, sind diese meist einfacher als eine von Hand zusammengesetzte URL.
Prüfen Sie das ursprüngliche Format des Anbieters, bevor Sie eine durch Doppelpunkte getrennte Zeichenfolge mit Zugangsdaten umwandeln. Vier so getrennte Felder haben keine allgemeingültige Bedeutung, und ein Passwort kann selbst einen Doppelpunkt enthalten. Ein Parser für einfache IP:port-Zeilen sollte andere Formate nicht stillschweigend erraten.