Bagaimana WiFi di android mendeteksi jika perangkat harus masuk atau tidak?

28

Ketika perangkat mencoba terhubung ke titik akses atau router, ia harus masuk pada halaman portal captive dengan pesan yang mengatakan

"Masuk ke jaringan Wi-Fi".

Bagaimana titik akses / router mengidentifikasi bahwa diperlukan masuk untuk perangkat dan apa proses di belakangnya?

Sagar Vaghela
sumber

Jawaban:

32

URL deteksi berbeda antara versi Android yang berbeda.

Untuk Marshmallow, ia menggunakan konektivitascheck.gstatic.com/generate_204, periksa kode di sini AndroidXRef - Marshmallow 6.0.0_r1

Untuk Kitkat, ia menggunakan clients3.google.com/generate_204 periksa kode AndroidXRef - KitKat 4.4.4_r1

RyanDH
sumber
sebenarnya ini adalah jawaban yang jauh lebih baik dan harus ditandai sebagai jawaban yang benar
Moataz Elmasry
Saya tidak ingin membajak jawabannya dengan mengeditnya, jadi saya akan meninggalkan komentar. Butuh beberapa saat untuk menyadari bahwa URL deteksi memicu pemberitahuan jika tidak dapat dihubungi. Selain itu, saya memerlukan titik akses saya untuk menanggapi permintaan ini dengan beberapa jenis konten - dalam kasus saya, saya mengembalikan 200 kode serta halaman indeks server web saya ketika / generate_204 diminta. Tanpa konten dalam respons, terlepas dari kode kembali, saya akan mendapatkan notifikasi "Wi-Fi tidak memiliki akses Internet".
ubomb
@ubomb Sepertinya aneh, karena http://connectivitycheck.gstatic.com/generate_204sebenarnya mengembalikan 204 tanpa konten, dan jelas berfungsi. Mungkin Anda baru saja meninggalkan Content-Length: 0header.
Tamir Daniely
9

Teknologi ini disebut "Captive portal". Ada beberapa implementasi. Seperti yang saya tahu, Android mencoba menjangkau file bernama generate_204di salah satu server Google dan jika tidak memungkinkan, pemberitahuan dibuat.

Bacaan lebih lanjut di Wikipedia: Captive_portal

Άνδρας
sumber
Sebenarnya saya tahu tentang captive portal. Tetapi saya tahu URL spesifik untuk memeriksanya. Saya ingin tahu Bagaimana cara kerjanya. Bukan apa itu.
Sagar Vaghela
1
Apa maksud Anda - "bagaimana cara kerjanya"? Android mengirimkan permintaan, dan jika tidak ada respons positif, itu berarti tidak ada koneksi ke internet, dan pemberitahuan dihasilkan. Begitulah cara kerjanya.
Άνδρας
Yang merupakan URL spesifik yang diminta Android. Saya telah menyebutkan dalam pertanyaan.
Sagar Vaghela
2
Dalam komentar Anda sebelumnya, Anda mengatakan bahwa Anda tahu URL spesifik. Saya pikir ituhttps://www.gstatic.com/generate_204
Άνδρας
2
URL tersebut tampaknya adalah clients3.google.com/generate_204 . Informasi diambil dari situs ini untuk kromium yang mungkin sama untuk android. chromium.org/chromium-os/chromiumos-design-docs/…
benjamin
2

Portal captive umumnya diterapkan dengan mengarahkan semua lalu lintas ke respons HTTP yang valid (200). Respons HTTP ini adalah apa yang muncul di captive portal.

Ini dapat dilakukan dengan alat-alat seperti iptables atau dnsmasq.

Jude Osborn
sumber