Mir ist aufgefallen, dass Android nach der Anmeldung in einem Netzwerk immer die Adresse connectivitycheck.gstatic.com aufruft. Darüber wird geprüft, ob eine Verbindung zum Internet besteht oder ob eine Anmeldung bei einem Captive Portal erforderlich ist.

Einerseits muss ich Google nicht ständig mitteilen, wo ist bin, und andererseits wäre es interessant, selbst eine Statistik zu haben, wo ich mich wann eingebucht habe. Hierfür habe ich bei meinem Nginx eine Ressource zum Abruf geschaffen, deren Abrufe ich auch in eine gesonderte Datei schreibe:

server {
    listen 80;

    location /gen_204 {
            access_log /var/log/nginx/connectivity-check.log;
            return 204;
    }
}

Auf dem Android musste ich über die Kommandozeile folgenden Befehl ausführen (Quelltext für NetworkMonitor):

settings put global captive_portal_http_url http://jo-so.de/gen_204?s2

Der zusätzliche Query-Parameter hat keinen Einfluss beim Nginx-Aufruf, wir aber mit ins Log geschrieben, so dass ich auf diese Weise verschiedene Geräte unterscheiden kann.

Einen ähnlichen Mechanismus zur Prüfung, ob eine Internetverbindung besteht, gibt es auch bei Firefox. Diese kann man in about:config mit network.captive-portal-service.enabled=false deaktivieren.

for i in .mozilla/firefox/*/prefs.js
do
    grep -q captive $i || echo 'user_pref("network.captive-portal-service.enabled", false);' >> $i
done