Gdy urządzenie próbuje połączyć się z punktem dostępu lub routerem, musi zalogować się na stronie portalu przechwytującego z komunikatem o treści
„Zaloguj się do sieci Wi-Fi”.
W jaki sposób punkt dostępu / router określić, że urządzenie wymaga logowania i jaki jest proces za nim?
Odpowiedź
Adres URL wykrywania różni się między różne wersje Androida.
W przypadku Marshmallow używa connectivitycheck.gstatic.com/generate_204, sprawdź kod tutaj AndroidXRef – Marshmallow 6.0.0_r1
W przypadku Kitkat używa klientów3.google.com/generate_204, sprawdź kod AndroidXRef – KitKat 4.4.4_r1
Komentarze
Odpowiedź
Ta technologia nosi nazwę „Captive portal”. Istnieje kilka implementacji. Jak wiem, Android próbuje dotrzeć do pliku o nazwie generate_204
na jednym z serwerów Google i jeśli nie jest to możliwe, generowane jest powiadomienie.
Więcej informacji w Wikipedii: Captive_portal
Komentarze
- Właściwie wiem o portalu przechwytującym. Ale znam konkretny adres URL, aby to sprawdzić. Chcę wiedzieć, jak to działa. Nie co to jest.
- Co masz na myśli – " jak to działa "? Android wysyła żądanie, a jeśli nie ma pozytywnej odpowiedzi, oznacza to, że nie ma połączenia z internetem i generowane jest powiadomienie. To ' tak to działa.
- Jaki jest konkretny adres URL, którego dotyczy żądanie Androida. Wspomniałem o pytaniu.
- W swoim poprzednim komentarzu powiedziałeś, że znasz dokładny adres URL. Myślę, że ' s
https://www.gstatic.com/generate_204
- Wydaje się, że URL to clients3.google.com/generate_204 . Informacje pobrane z tej witryny dotyczące chromu, który prawdopodobnie jest taki sam dla Androida. chromium.org/chromium-os/chromiumos-design-docs/…
Odpowiedź
Portal dostępowy jest zwykle implementowany poprzez kierowanie całego ruchu do prawidłowej odpowiedzi HTTP (200). Ta odpowiedź HTTP pojawia się w portalu dostępowym.
Można to zrobić za pomocą narzędzi takich jak iptables lub dnsmasq.
http://connectivitycheck.gstatic.com/generate_204
w rzeczywistości zwraca 204 bez treści i oczywiście działa. Może właśnie pominąłeś nagłówekContent-Length: 0
.