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 nachEingabe
Host oder IP203.0.113.10
Port8080
HTTP-Proxy-URLhttp://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.

Ähnliche Artikel