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

  • Nie ' nie chcę przechwytywać odpowiedzi edytując ją, więc ' Zostawię tylko komentarz. Zajęło mi trochę czasu, zanim zdałem sobie sprawę, że adres URL wykrywania uruchamia powiadomienie, jeśli nie można go osiągnąć. Ponadto potrzebowałem mojego punktu dostępu, aby odpowiedzieć na to żądanie za pomocą jakiejś treści – w moim przypadku zwróciłem kod 200, a także stronę indeksu mojego serwera internetowego, gdy zażądano / wygeneruj_204. Bez treści odpowiedzi, niezależnie od kodu zwrotnego, otrzymywałbym powiadomienie " Wi-Fi nie ma dostępu do Internetu ".
  • @ubomb Wydaje się dziwne, ponieważ 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łówek Content-Length: 0.

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.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *