Ein Proxy-Prüfer (Proxy Judge) ist ein serverseitiges Skript oder ein Dienst, der dazu dient, die HTTP-Header zu untersuchen, die ein Client über einen Proxy sendet. Er enthüllt die ursprüngliche IP-Adresse des Clients und identifiziert Details über den Proxy, um dessen Anonymitätsstufe zu bestimmen.
Was ist ein Proxy-Prüfer?
Ein Proxy-Prüfer fungiert als diagnostisches Zwischenwerkzeug. Wenn ein Client über einen Proxy-Server eine Verbindung zu einem Proxy-Prüfer herstellt, analysiert der Prüfer die vom Proxy präsentierten HTTP-Anfrage-Header. Diese Analyse identifiziert spezifische Header, die die wahre IP-Adresse des Clients preisgeben oder das Vorhandensein und den Typ des verwendeten Proxy-Servers anzeigen könnten. Die Hauptfunktion besteht darin zu überprüfen, ob ein Proxy die Identität des Clients erfolgreich maskiert und in welchem Umfang.
Wie Proxy-Prüfer funktionieren
Der Prozess eines Proxy-Prüfers funktioniert wie folgt:
- Client-Anfrage: Ein Client konfiguriert sein System oder seine Anwendung so, dass der Web-Traffic über einen bestimmten Proxy-Server geleitet wird.
- Proxy-Weiterleitung: Der Proxy-Server empfängt die Anfrage des Clients und leitet sie an den Ziel-Webserver weiter, der in diesem Fall der Proxy-Prüfer ist.
- Header-Inspektion: Der Proxy-Prüfer-Server greift nach Empfang der Anfrage auf Servervariablen und HTTP-Header zu. Diese Header enthalten Metadaten über den Verbindungspfad.
- Anonymitätsbewertung: Der Prüfer analysiert dann diese Header auf spezifische Felder, die typischerweise Client-Informationen oder Proxy-Identifikationen offenbaren. Basierend auf dem Vorhandensein, Fehlen oder der Modifikation dieser Header klassifiziert der Prüfer die Anonymitätsstufe des Proxys.
- Berichterstattung: Der Prüfer sendet einen Bericht an den Client zurück, der die erkannten IP-Adressen und Header-Informationen sowie eine Bewertung der Proxy-Anonymität detailliert.
Wichtige Header, die für einen Proxy-Prüfer von Interesse sind, umfassen REMOTE_ADDR, HTTP_X_FORWARDED_FOR, HTTP_VIA, HTTP_PROXY_CONNECTION, HTTP_FORWARDED und andere, die die IP des ursprünglichen Clients oder die Existenz des Proxys verraten können.
Stufen der Proxy-Anonymität
Proxy-Prüfer kategorisieren Proxys in verschiedene Anonymitätsstufen, basierend auf den Informationen, die sie übermitteln.
Elite-Proxy (Hochgradig anonym)
Ein Elite-Proxy bietet das höchste Maß an Anonymität. Er übermittelt keine Header, die die ursprüngliche IP-Adresse des Clients preisgeben, noch identifiziert er sich selbst als Proxy. Für den Zielserver (Proxy-Prüfer) scheint die Verbindung direkt von der IP-Adresse des Proxy-Servers zu stammen, wodurch der Client von einer direkten Verbindung nicht zu unterscheiden ist.
- Merkmale:
REMOTE_ADDR: Zeigt die IP des Proxys.HTTP_X_FORWARDED_FOR: Nicht vorhanden.HTTP_VIA: Nicht vorhanden.HTTP_PROXY_CONNECTION: Nicht vorhanden oder modifiziert.
- Erkennung: Ohne fortgeschrittenes Fingerprinting schwer von einer direkten Verbindung zu unterscheiden.
Anonymer Proxy
Ein anonymer Proxy verbirgt die ursprüngliche IP-Adresse des Clients, offenbart aber seine eigene Präsenz als Proxy-Server. Das bedeutet, der Zielserver weiß, dass ein Proxy verwendet wird, aber die Identität des ursprünglichen Clients bleibt verborgen.
- Merkmale:
REMOTE_ADDR: Zeigt die IP des Proxys.HTTP_X_FORWARDED_FOR: Nicht vorhanden.HTTP_VIA: Vorhanden (z. B.1.1 proxy.example.com).HTTP_PROXY_CONNECTION: Kann vorhanden sein.
- Erkennung: Das Vorhandensein von
HTTP_VIAoder ähnlichen Headern weist auf die Proxy-Nutzung hin.
Transparenter Proxy (Nicht-anonym)
Ein transparenter Proxy, auch als nicht-anonymer oder weiterleitender Proxy bekannt, versucht nicht, die ursprüngliche IP-Adresse des Clients zu verbergen. Er leitet die IP des Clients an den Zielserver weiter, typischerweise in Headern wie X-Forwarded-For. Der Zielserver ist sich sowohl der Präsenz des Proxys als auch der ursprünglichen IP des Clients vollständig bewusst.
- Merkmale:
REMOTE_ADDR: Zeigt die IP des Proxys.HTTP_X_FORWARDED_FOR: Vorhanden, enthält die ursprüngliche IP des Clients.HTTP_VIA: Oft vorhanden.HTTP_PROXY_CONNECTION: Kann vorhanden sein.
- Erkennung: Das Vorhandensein von
HTTP_X_FORWARDED_FORmit der IP des Clients ist eindeutig.
Verzerrender Proxy (Distorting Proxy)
Ein verzerrender Proxy ist eine Variante, die versucht, den Zielserver in die Irre zu führen, indem er eine falsche oder zufällige IP-Adresse im X-Forwarded-For-Header übermittelt. Während er die wahre Client-IP verbirgt, identifiziert er sich dennoch als Proxy, und die angegebene X-Forwarded-For ist nicht die echte Client-IP. Dies kann manchmal als eine Art anonymer Proxy kategorisiert werden, aber seine explizite Fälschung unterscheidet ihn.
- Merkmale:
REMOTE_ADDR: Zeigt die IP des Proxys.HTTP_X_FORWARDED_FOR: Vorhanden, enthält aber eine falsche/zufällige IP.HTTP_VIA: Oft vorhanden.
- Erkennung: Das Vorhandensein von
HTTP_X_FORWARDED_FORmit einer IP, die nicht mit derREMOTE_ADDRdes vorherigen Hops übereinstimmt (wenn mehrere Proxys verkettet sind) oder einer eindeutig ungültigen IP.
Wichtige HTTP-Header zur Anonymitätserkennung
Die Analyse eines Proxy-Prüfers basiert auf der Untersuchung spezifischer HTTP-Header und Servervariablen:
REMOTE_ADDR: Diese Servervariable gibt direkt die IP-Adresse des Clients an, der sich mit dem Proxy-Prüfer-Server verbunden hat. Wird ein Proxy verwendet, ist dies typischerweise die IP des Proxys.HTTP_X_FORWARDED_FOR: Ein De-facto-Standard-Header, der von Proxys verwendet wird, um die ursprüngliche IP-Adresse des Clients zu identifizieren. Er kann eine durch Kommas getrennte Liste von IPs enthalten, wenn mehrere Proxys verkettet sind.HTTP_VIA: Dieser Header wird von einem Proxy-Server hinzugefügt, um anzuzeigen, dass die Anfrage ihn passiert hat. Er enthält oft das Protokoll und den Hostnamen/die IP des Proxys.HTTP_PROXY_CONNECTION: Ein nicht-standardisierter Header, der manchmal von Proxys verwendet wird und verbindungsspezifische Details des Proxys angibt.HTTP_FORWARDED: Ein standardisierter Header (RFC 7239), der eine robustere Alternative zuX-Forwarded-ForundViadarstellt. Er kann Client-, Proxy- und Host-Informationen übermitteln.HTTP_CLIENT_IP: Ein seltenerer, nicht-standardisierter Header, der die IP des Clients enthalten könnte.
Praktische Anwendung eines Proxy-Prüfers
Um einen Proxy-Prüfer effektiv zu nutzen, konfigurieren Sie Ihren Client so, dass der Traffic über den zu testenden Proxy geleitet wird, und richten Sie dann eine Anfrage an einen Proxy-Prüfer-Dienst.
Beispiel: curl mit einem Proxy verwenden
Um einen Proxy unter proxy.example.com auf Port 8080 mit curl zu testen:
curl -x http://proxy.example.com:8080 http://proxyjudge.com
Ersetzen Sie http://proxyjudge.com durch die URL eines tatsächlichen Proxy-Prüfer-Dienstes. Die Ausgabe ist der Bericht des Prüfers.
Beispiel: Ein einfaches Proxy-Prüfer-Skript (PHP)
Ein einfaches PHP-Skript kann als Proxy-Prüfer dienen:
<?php
header('Content-Type: text/plain');
echo "--- Proxy Judge Report ---\n";
echo "Your IP (REMOTE_ADDR): " . $_SERVER['REMOTE_ADDR'] . "\n";
echo "--------------------------\n";
$headers_to_check = [
'HTTP_X_FORWARDED_FOR',
'HTTP_VIA',
'HTTP_PROXY_CONNECTION',
'HTTP_FORWARDED',
'HTTP_CLIENT_IP'
];
foreach ($headers_to_check as $header) {
if (isset($_SERVER[$header])) {
echo $header . ": " . $_SERVER[$header] . "\n";
} else {
echo $header . ": Not Present\n";
}
}
echo "--------------------------\n";
// Basic Anonymity Level Guess
$anonymity_level = "Elite Proxy"; // Default assumption
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$anonymity_level = "Transparent Proxy";
// Check if X-Forwarded-For is clearly false
$xf_ip = trim(explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]);
if ($xf_ip !== $_SERVER['REMOTE_ADDR'] && !filter_var($xf_ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
// This is a simplistic check; more robust validation needed for true "distorting"
// For a simple judge, if XFF exists, it's not Elite/Anonymous in the purest sense.
}
} elseif (isset($_SERVER['HTTP_VIA']) || isset($_SERVER['HTTP_PROXY_CONNECTION'])) {
$anonymity_level = "Anonymous Proxy";
}
echo "Estimated Anonymity Level: " . $anonymity_level . "\n";
?>
Dieses Skript gibt die erkannte IP und relevante Header aus und bietet eine grundlegende Bewertung.
Interpretation der Proxy-Prüfer-Ergebnisse
Das Vorhandensein oder Fehlen spezifischer Header korreliert direkt mit der Anonymitätsstufe des Proxys.
| Header | Elite-Proxy | Anonymer Proxy | Transparenter Proxy | Verzerrender Proxy |
|---|---|---|---|---|
REMOTE_ADDR |
Proxy-IP | Proxy-IP | Proxy-IP | Proxy-IP |
HTTP_X_FORWARDED_FOR |
Nicht vorhanden | Nicht vorhanden | Ursprüngliche Client-IP | Falsche/Zufällige IP |
HTTP_VIA |
Nicht vorhanden | Vorhanden | Oft vorhanden | Oft vorhanden |
HTTP_PROXY_CONNECTION |
Nicht vorhanden | Kann vorhanden sein | Kann vorhanden sein | Kann vorhanden sein |
HTTP_FORWARDED |
Nicht vorhanden | Kann vorhanden sein | Kann Client-IP enthalten | Kann falsche IP enthalten |
| Anonymitätsbewertung | Höchste | Mittel | Niedrigste | Niedrig (erkennbar) |
Einschränkungen von Proxy-Prüfern
Obwohl nützlich, haben Proxy-Prüfer Einschränkungen:
- Fokus auf HTTP-Header: Sie analysieren hauptsächlich Standard-HTTP-Header. Sie erkennen möglicherweise keine Lecks, die auf anderen Ebenen oder durch andere Protokolle auftreten (z. B. WebRTC-IP-Lecks, DNS-Lecks).
- Browser-Fingerprinting: Proxy-Prüfer bewerten keine Aspekte des Browser-Fingerprintings (z. B. User-Agent, Bildschirmauflösung, installierte Schriftarten, Canvas-API-Daten), die einen Benutzer ebenfalls eindeutig identifizieren können.
- Sich entwickelnde Techniken: Fortgeschrittene Erkennungsmethoden gehen über einfache Header-Prüfungen hinaus und verwenden JavaScript, Flash oder andere browserseitige Technologien, um die Proxy-Anonymität zu umgehen.
- Komplexität von Proxy-Ketten: In komplexen Proxy-Ketten kann die genaue Bestimmung der ursprünglichen IP des Clients schwierig sein, wenn Zwischen-Proxys Header inkonsistent ändern oder entfernen.
- SSL/TLS-Abfangen: Bei HTTPS-Traffic kann der Prüfer, wenn der Proxy kein SSL/TLS-Abfangen durchführt, nur die äußere TLS-Verbindung sehen, nicht die inneren HTTP-Header, was die Erkennung ohne spezifische Proxy-Konfigurationen erschwert.
Bewährte Verfahren für Proxy-Anonymität
Um eine effektive Proxy-Anonymität aufrechtzuerhalten:
- Regelmäßige Überprüfung: Testen Sie Ihre Proxys regelmäßig mit mehreren Proxy-Prüfer-Diensten, da einige Prüfer unterschiedliche Aspekte erkennen können.
- Proxy-Typen verstehen: Wählen Sie den geeigneten Proxy-Typ (z. B. SOCKS5 für breiteren Traffic, HTTP/HTTPS für Web) basierend auf Ihren Anonymitätsanforderungen.
- Kombination mit anderen Prüfungen: Ergänzen Sie die Ergebnisse des Proxy-Prüfers mit WebRTC-Lecktests, DNS-Lecktests und Browser-Fingerprinting-Tools, um eine umfassende Anonymität zu gewährleisten.
- Sichere Konfiguration: Stellen Sie sicher, dass Ihre Anwendungen und Ihr Betriebssystem korrekt konfiguriert sind, um den gesamten relevanten Traffic über den Proxy zu leiten und direkte Verbindungen oder Lecks zu verhindern.
- HTTPS-Nutzung: Priorisieren Sie HTTPS-Verbindungen. Obwohl ein Proxy-Prüfer nicht in den verschlüsselten Tunnel sehen kann, verschlüsselt HTTPS Ihre Daten vom Proxy zum Ziel und bietet eine zusätzliche Sicherheitsebene.