Captiveportal abschalten
Captiveportal von kuketz-blog.de nutzen
Vorraussetzung
Umgang mit ADB, Installation von ADB-Tools / ADB-Werkzeugen
Android Nougat (7.x)
Verbindet das Gerät via USB-Kabel mit eurem Rechner und aktiviert ADB für den Vorgang. Über ein Terminal am Rechner setzt ihr anschließend folgende Befehle ab:
adb shell 'settings put global captive_portal_http_url "http://captiveportal.kuketz.de"'
adb shell 'settings put global captive_portal_https_url "https://captiveportal.kuketz.de"'
Android Oreo (8.x) | Pie (9.x)
Verbindet das Gerät via USB-Kabel mit eurem Rechner und aktiviert ADB für den Vorgang. Über ein Terminal am Rechner setzt ihr anschließend folgende Befehle ab:
adb shell 'settings put global captive_portal_http_url "http://captiveportal.kuketz.de"'
adb shell 'settings put global captive_portal_https_url "https://captiveportal.kuketz.de"'
adb shell 'settings put global captive_portal_fallback_url "http://captiveportal.kuketz.de"'
adb shell 'settings put global captive_portal_other_fallback_urls "http://captiveportal.kuketz.de"'
Ob die URLs wie gewünscht angepasst wurden könnt ihr mit folgendem Befehl prüfen:
adb shell 'settings get global captive_portal_https_url'
Ausgabe:
https://captiveportal.kuketz.de
Anschließend können wir via curl (von einem Rechner aus) die URL mal abfragen:
curl -I http://captiveportal.kuketz.de
Als Antwort bekommt ihr:
HTTP/1.1 204 No Content [...]
Genau diese Antwort erwartet euer Android-Telefon.
Connectivity-Check-Service selbst hosten
Alternativ zu meinem Connectivity-Check-Service könnt ihr natürlich auch selbst hosten. Via nginx geht das relativ simpel. Hier meine Konfiguration:
## SITE HANDLING HTTP ## server { ## INIT ## listen 80; server_name captiveportal.kuketz.de; root /var/www/sites/captiveportal.kuketz.de; ## LOGS ## access_log off; error_log off; ## SECURITY HEADER ## include /etc/nginx/conf/headers.conf; add_header Content-Security-Policy "default-src 'none'"; ## ENTER HERE ## location / { # Let's encrypt location location ^~ /.well-known/acme-challenge { default_type text/plain; } location = /.well-known/acme-challenge/ { return 444; } ## CAPTIVE PORTAL RESPONSE location / { return 204; } } } ## SITE HANDLING HTTPS ## server { ## INIT ## listen 443 ssl; server_name captiveportal.kuketz.de; root /var/www/sites/captiveportal.kuketz.de; ## LOGS ## access_log off; error_log off; ## SECURITY HEADER ## include /etc/nginx/conf/headers-ssl.conf; add_header Content-Security-Policy "default-src 'none'"; ## SSL ## ssl on; ssl_certificate /etc/ssl/certs/captiveportal.kuketz_ecdsa.pem; ssl_certificate_key /etc/ssl/private/captiveportal.kuketz_ecdsa.key; # OCSP-Stapling ssl_stapling on; ssl_stapling_verify on; ssl_stapling_file /etc/ssl/certs/captiveportal.kuketz_ocspresponse.der; ## CAPTIVE PORTAL RESPONSE location / { return 204; } }
Das Entscheidende ist eigentlich nur dieser kleine Teil:
## CAPTIVE PORTAL RESPONSE location / { return 204; }
Damit wird nginx auf Anfragen auf der Domain »captiveportal.kuketz.de« mit einem HTTP-204-Statuscode antworten. Mit Apache sollte das auch funktionieren (nicht verifiziert):
RewriteEngine On RewriteCond %{REQUEST_URI} / RewriteRule $ / [R=204,L]
Fazit: Ihr könnt nun also meinen Service nutzen oder den Connectiviy-Check selbst hosten. Google wird über diese Funktion jedenfalls keine Daten mehr bekommen.
Informationen zur Datenverabeitung könnt ihr der Datenschutzerklärung entnehmen.
Mike Kuketz
transcriptiert für droidwiki.org: cptechnik