Parameter Captive Portal

10

Ada beberapa parameter captive portal yang bisa diterapkan ke perangkat Android melalui settings put global- yang paling terkenal mungkin

settings put global captive_portal_detection_enabled 0

untuk sepenuhnya menonaktifkan cek portal captive (untuk Android <8). Dapatkah seseorang menjelaskan cara menggunakan yang lain - misalnya untuk mendefinisikan "server portal captive khusus untuk timah-foil"? Sebagai contoh, seseorang tidak bisa begitu saja melakukan a

settings put global captive_portal_server example.com

karena hal itu akan, dalam banyak kasus, menyebabkan cek portal captive gagal secara permanen (latar belakang: melakukan hal itu, cek portal akan membuat URL http://example.com/generate_204dan mengeceknya, mengharapkan respons tertentu).

Jadi selain hanya menonaktifkan cek portal captive sama sekali (yang mungkin, seperti yang telah saya baca, mengarah ke masalah lain seperti tidak dialihkan ke portal yang benar dalam beberapa kasus), apa lagi yang bisa dilakukan seseorang untuk meningkatkan privasi dalam konteks ini?

Contoh (jika saya benar):

  • captive_portal_mode (Android 8+?):
    • 0: Jangan mencoba mendeteksi portal tawanan
    • 1: Meminta pengguna untuk masuk
    • 2: Segera putuskan sambungan dari jaringan dan jangan menghubungkan kembali ke jaringan itu di masa mendatang
  • captive_portal_detection_enabled (Android <8?):
    • 0: Sepenuhnya menonaktifkan cek portal captive
    • 1: Aktifkan (default)

Sementara contoh-contoh ini cukup mudah: Bagaimana cara menggunakan parameter lain?

Izzy
sumber

Jawaban:

12

Mengkonfigurasi perilaku portal captive

  • captive_portal_detection_enabled (<= Android 7.1.1)
    • berfungsi seperti yang dijelaskan dalam badan pertanyaan
  • captive_portal_mode (> = Android 7.1.2)
    • berfungsi seperti yang dijelaskan dalam badan pertanyaan

Mengatur URL portal captive

  • captive_portal_server (<= Android 6.0.1)
    • Server yang menyimpan generate_204halaman, yang digunakan untuk membuat URL secara internal untuk deteksi portal captive ( new URL("http", mServer, "/generate_204");- usang pada Android 7.0, lihat di bawah)
  • captive_portal_use_https (> = Android 7.0)
    • 0: Jangan gunakan HTTPS untuk validasi jaringan
    • 1: Gunakan HTTPS (default)
  • captive_portal_http_url (> = Android 7.0)
    • URL yang digunakan untuk deteksi portal captive HTTP - digunakan berpasangan dengan captive_portal_use_https(disetel ke 0)
    • > = Android 7.1.1: OS tidak lagi menambahkan generate_204URL secara otomatis, memberikan beberapa URL input fleksibilitas
  • captive_portal_https_url (> = Android 7.0)
    • URL yang digunakan untuk deteksi portal captive HTTPS - digunakan berpasangan dengan captive_portal_use_https(disetel ke 1)
    • > = Android 7.1.1: OS tidak lagi menambahkan generate_204URL secara otomatis

Persyaratan untuk URL yang akan digunakan

Kode respons HTTP 204 ("tidak ada konten") dari server digunakan untuk validasi, tidak ada konten tambahan yang diperlukan: ambil URL deteksi default misalnya, curl clients3.google.com/generate_204pengembalian kosong, dan periksa respons HTTP dengan menambahkan --write-out %{http_code}pengembalian 204. '

Daftar kecil URL server portal captive yang dapat digunakan di daratan Tiongkok (diuji secara pribadi)

https://captive.v2ex.co/generate_204 (di-host oleh v2ex.com)

https://connect.rom.miui.com/generate_204 (dihosting oleh Xiaomi, digunakan secara default di MIUI)

https://noisyfox.cn/generate_204 (di-host oleh noisyfox.cn)

https://www.google.cn/generate_204 & https://developers.google.cn/generate_204 (di-host oleh Google)

https://www.qualcomm.cn/generate_204 (di-host oleh Qualcomm)

Catatan selanjutnya

Sumber juga menyebutkan parameter captive_portal_user_agent, captive_portal_fallback_urldan captive_portal_other_fallback_urls:

  • captive_portal_fallback_url (> = Android 7.1.1) jelas seharusnya memiliki satu URL, sementara
  • captive_portal_other_fallback_urls menyimpan beberapa URL lebih lanjut (daftar yang dipisahkan koma, sehingga URL mungkin tidak mengandung koma apa pun).

Tapi saya pribadi melakukan tes pada Android 8.0.0, dan kedua parameter fallback tidak berfungsi. Dengan asumsi mereka deklarasi tanpa implementasi untuk saat ini.

Beberapa contoh pengaturan portal captive dari Android di Cina menunjukkan penggunaan beberapa pengaturan di atas:

pengaturan shell adb menempatkan captive_portal_http_url global http://www.google.cn/generate_204
pengaturan shell adb menempatkan captive_portal_https_url global https://www.google.cn/generate_204
pengaturan shell adb menempatkan captive_portal_fallback_url global http://www.google.cn/generate_204
pengaturan shell adb menempatkan captive_portal_other_fallback_urls global http://www.qualcomm.cn/generate_204

Mengetahui hal itu, "timah timah" bahkan dapat mengatur layanan verifikasi mereka sendiri. Dengan Apache:

Tulis Ulang Hidup
RewriteCond% {REQUEST_URI} / menghasilkan_204 $
RewriteRule $ / [R = 204, L]

atau dengan Nginx:

location / generate_204 {return 204; }

Referensi

1 , 2 (Cina), 3 (Cina)

Andy Yan
sumber
1
Posting terkait - dan setidaknya dengan MM, kode berikut digunakan: new URL("http", mServer, "/generate_204");(dengan mServerdiinisialisasi oleh captive_portal_serverjika diatur) - jadi ini hanya nama server (atau IP) di sana (yang kemungkinan besar salah satu alasan mengapa gagal bagi saya pada perangkat MM). Tidak yakin kapan itu berubah - tetapi dari apa yang Anda tulis mungkin dengan N. Untuk 204, saya telah menemukan ini - jadi sepertinya saya berasumsi benar: hanya kode 204, tidak ada konten.
Izzy
@Izzy Sayangnya opsi 2 fallback sepertinya tidak berfungsi. Menggunakan default captive_portal_https_urldan memasukkan URL yang dapat dijangkau captive_portal_fallback_urltidak menghilangkan tanda silang, dan hal yang sama berlaku untuk menempatkan captive_portal_other_fallback_urls- Pengaturan captive_portal_https_urllurus adalah satu-satunya jalan keluar. Perhatikan bahwa tes dilakukan di bawah LTE dan bukan WiFi, karena karena alasan tertentu WiFi sekolah saya akan selalu mengarahkan saya ke portal captive bahkan jika saya menetapkan URL yang sepenuhnya tidak valid.
Andy Yan
Parameter fallback tersebut mungkin telah diperkenalkan dengan Oreo (perhatikan kami telah melihat kode Oreo untuk menemukannya). Kira Anda sudah memeriksa Nougat, kan? // Ide bagus untuk memasukkan daftar server kecil. AFAIK ada juga g.cntersedia;)
Izzy
1
@Izzy Oh yeah, tidak menyadari itu, saya belum menginstal perangkat saya dengan LOS15. Mungkin layak untuk dicoba, dan jika berhasil saya akan memperbarui dan melakukan ping untuk membersihkan komentar. Selain itu, sertifikat HTTPS dari g.cn dikatakan telah kedaluwarsa di daratan, sehingga tidak lagi dapat digunakan untuk HTTPS. // Tapi tunggu ... Kode sumber 7.1.2 juga mengandung referensi captive_portal_fallback_url.
Andy Yan
Seperti banyak fitur baru, referensi kadang muncul sebelum fitur selesai. Dan file yang direferensikan terutama mendefinisikan konstanta, bukan fungsionalitasnya, bukan?
Izzy