Captive Portal-Parameter

9

Es gibt mehrere Captive-Portal-Parameter, die über ein Android-Gerät angewendet werden können settings put global- der bekannteste wahrscheinlich

settings put global captive_portal_detection_enabled 0

um die Prüfung des Captive-Portals vollständig auszuschalten (für Android <8). Kann jemand erklären, wie man die anderen benutzt - zB um einen "benutzerdefinierten Captive-Portalserver für Zinnfolien" zu definieren? Zum Beispiel kann man nicht einfach eine machen

settings put global captive_portal_server example.com

Dies würde in den meisten Fällen dazu führen, dass die Prüfung des Captive-Portals dauerhaft fehlschlägt (Hintergrund: Wenn Sie dies tun, erstellt die Portalprüfung eine URL http://example.com/generate_204und prüft diese, wobei eine bestimmte Antwort erwartet wird).

Was kann man also tun, um die Privatsphäre in diesem Zusammenhang zu verbessern, abgesehen davon, dass die Prüfung des Captive-Portals einfach ganz deaktiviert wird (was, wie ich gelesen habe, in anderen Fällen dazu führen kann, dass andere Probleme nicht auf das richtige Portal umgeleitet werden)?

Beispiele (wenn ich sie richtig verstanden habe):

  • captive_portal_mode (Android 8+?):
    • 0: Versuchen Sie nicht, unverlierbare Portale zu erkennen
    • 1: Fordern Sie den Benutzer auf, sich anzumelden
    • 2: Trennen Sie sich sofort vom Netzwerk und stellen Sie in Zukunft keine Verbindung mehr zu diesem Netzwerk her
  • captive_portal_detection_enabled (Android <8?):
    • 0: Deaktivieren Sie Captive Portal Checks vollständig
    • 1: Aktivieren Sie es (Standard)

Während diese Beispiele ziemlich einfach sind: Wie werden die anderen Parameter verwendet?

Izzy
quelle

Antworten:

11

Konfigurieren des Verhaltens des Captive-Portals

  • captive_portal_detection_enabled (<= Android 7.1.1)
    • funktioniert wie im Fragetext beschrieben
  • captive_portal_mode (> = Android 7.1.2)
    • funktioniert wie im Fragetext beschrieben

Festlegen von Captive-Portal-URLs

  • captive_portal_server (<= Android 6.0.1)
    • Der Server, auf dem sich eine generate_204Seite befindet, auf der intern eine URL für die Erkennung von Captive-Portalen erstellt wird ( new URL("http", mServer, "/generate_204");- veraltet ab Android 7.0, siehe unten).
  • captive_portal_use_https (> = Android 7.0)
    • 0: Verwenden Sie HTTPS nicht zur Netzwerküberprüfung
    • 1: Verwenden Sie HTTPS (Standard)
  • captive_portal_http_url (> = Android 7.0)
    • Die URL, die für die Erkennung des HTTP-Captive-Portals verwendet wird - in Kombination mit captive_portal_use_https(auf 0) gesetzt
    • > = Android 7.1.1: Das Betriebssystem wird nicht mehr automatisch generate_204an die URL angehängt , wodurch die Eingabe-URL etwas flexibler wird
  • captive_portal_https_url (> = Android 7.0)
    • Die URL, die für die Erkennung des HTTPS-Captive-Portals verwendet wird - wird zusammen mit captive_portal_use_https(auf 1) gesetzt.
    • > = Android 7.1.1: Das Betriebssystem wird nicht mehr automatisch generate_204an die URL angehängt

Voraussetzung für die zu verwendende URL

Ein HTTP 204-Antwortcode ("kein Inhalt") vom Server wird zur Validierung verwendet, es wird kein zusätzlicher Inhalt benötigt: Nehmen Sie beispielsweise die Standarderkennungs-URL, geben Sie die curl clients3.google.com/generate_204Rückgabe leer zurück und überprüfen Sie die HTTP-Antwort, indem Sie --write-out %{http_code}Rückgaben hinzufügen 204. '

Eine kleine Liste verwendbarer Captive-Portal-Server-URLs auf dem chinesischen Festland (persönlich getestet)

https://captive.v2ex.co/generate_204 (gehostet von v2ex.com)

https://connect.rom.miui.com/generate_204 (gehostet von Xiaomi, standardmäßig auf MIUI verwendet)

https://noisyfox.cn/generate_204 (gehostet von noisyfox.cn)

https://www.google.cn/generate_204 & https://developers.google.cn/generate_204 (gehostet von Google)

https://www.qualcomm.cn/generate_204 (gehostet von Qualcomm)

Weitere Hinweise

Die Quelle erwähnt auch Parameter captive_portal_user_agent, captive_portal_fallback_urlund captive_portal_other_fallback_urls:

  • captive_portal_fallback_url (> = Android 7.1.1) soll offensichtlich eine einzige URL enthalten, während
  • captive_portal_other_fallback_urls enthält mehrere weitere URLs (durch Kommas getrennte Liste, sodass die URLs möglicherweise kein Komma enthalten).

Aber ich persönlich habe Tests mit Android 8.0.0 durchgeführt, und beide Fallback-Parameter funktionieren nicht. Angenommen, es handelt sich um Deklarationen ohne Implementierung.

Einige Beispiele für Captive-Portal-Einstellungen von Android in China zeigen die Verwendung einiger der oben genannten Einstellungen:

Die ADB-Shell-Einstellungen setzen global captive_portal_http_url http://www.google.cn/generate_204
Die ADB-Shell-Einstellungen setzen global captive_portal_https_url https://www.google.cn/generate_204
Die ADB-Shell-Einstellungen setzen global captive_portal_fallback_url http://www.google.cn/generate_204
In den ADB-Shell-Einstellungen werden globale Captive_portal_other_fallback_urls http://www.qualcomm.cn/generate_204 gesetzt

In diesem Wissen könnten "Zinnfolien" sogar einen eigenen Verifizierungsdienst einrichten. Mit Apache:

RewriteEngine On
RewriteCond% {REQUEST_URI} / generate_204 $
RewriteRule $ / [R = 204, L]

oder mit Nginx:

location / generate_204 {return 204; }}

Verweise

1 , 2 (Chinesisch), 3 (Chinesisch)

Andy Yan
quelle
1
In Verbindung stehender Beitrag - und zumindest bei MM wird der folgende Code verwendet: new URL("http", mServer, "/generate_204");(mit mServerInitialisierung durch, captive_portal_serverfalls festgelegt) - dies sollte also nur der Servername (oder die IP) dort sein (was höchstwahrscheinlich einer der Gründe war, warum er für mich fehlgeschlagen ist auf einem MM-Gerät). Ich bin mir nicht sicher, wann es sich dann geändert hat - aber von dem, was Sie wahrscheinlich mit N schreiben. Für den 204 habe ich das gefunden - also habe ich anscheinend richtig angenommen: nur der 204-Code, kein Inhalt.
Izzy
@Izzy Leider scheinen die 2 Fallback-Optionen nicht zu funktionieren. Wenn Sie die Standardeinstellung verwenden captive_portal_https_urlund eine erreichbare URL captive_portal_fallback_urleingeben, wird die Kreuzmarkierung nicht entfernt, und das Gleiche gilt für das captive_portal_other_fallback_urlsEingeben. captive_portal_https_urlGerade setzen ist der einzige Ausweg. Beachten Sie, dass die Tests unter LTE anstelle von WiFi durchgeführt werden, da mich mein Schul-WiFi aus irgendeinem Grund immer zum Captive-Portal weiterleitet, selbst wenn ich eine vollständig ungültige URL festgelegt habe.
Andy Yan
Diese Fallback-Parameter wurden möglicherweise mit Oreo eingeführt (beachten Sie, dass wir uns den Oreo-Code angesehen haben, um sie zu finden). Vermutlich haben Sie Nougat überprüft, oder? // Gute Idee, eine kleine Serverliste aufzunehmen. AFAIK dort war auch g.cnverfügbar;)
Izzy
1
@Izzy Oh ja, das habe ich nicht bemerkt, ich habe noch keines meiner Geräte mit LOS15 geflasht. Könnte es wert sein, ausgecheckt zu werden, und wenn es funktioniert, werde ich Sie aktualisieren und anpingen, um die Kommentare zu bereinigen. Außerdem soll das HTTPS-Zertifikat von g.cn auf dem Festland abgelaufen sein, sodass es für HTTPS nicht mehr verwendet werden kann. // Aber warte ... Der 7.1.2-Quellcode enthält auch einen Verweis auf captive_portal_fallback_url.
Andy Yan
Wie bei vielen neuen Funktionen werden manchmal Referenzen angezeigt, bevor die Funktion abgeschlossen ist. Und die Datei, auf die verwiesen wird, definiert hauptsächlich die Konstanten, nicht die Funktionalität, oder?
Izzy