Baru-baru ini saya mulai bertanya-tanya tentang situs seperti http://thismachine.info/ yang mendapatkan info sistem operasi pengguna. Saya belum dapat menemukan cara melakukannya dengan PHP, dan ingin mencoba mencari tahu.
Saya perhatikan bahwa mereka mencantumkan user-agent
, yang memberikan banyak info tentang browser. Apakah mereka mendapatkan informasi sistem operasi dari itu, atau dari yang lain? Apakah ada API yang dapat saya gunakan untuk mendapatkan sistem operasi pengguna?
Saya melihat bagaimana mereka mendapatkan Browser dan IP, tetapi tidak dapat mengetahui bagian Sistem Operasi!
php
operating-system
user-agent
pattyd
sumber
sumber
echo $_SERVER['HTTP_USER_AGENT'];
akan menunjukkan (sampai batas tertentu) sistem operasi pengguna. Bagi saya, itu mendeteksiMozilla/5.0 (Windows NT 5.1; rv:22.0) Gecko/20100101 Firefox/22.0
, di mana saya sebenarnya menggunakan Windows XP, jadi itu bukan ilmu pasti.http://thismachine.info/
mengetahui saya menggunakan Windows XP? Itu saya tidak tahu, namun mereka harus menggunakan skrip yang akan menemukan dan mengganti kemudian menggemakannya setelah itu. Sepengetahuan saya, tidak ada yang akan menentukan sistem operasi yang tepat, karena saya lihat ini akan termasuk dalam domain sekuritas.Windows XP
dari array/windows nt 5.1/i' => 'Windows XP',
Jawaban:
Kode di bawah ini dapat menjelaskan dengan sendirinya, bagaimana http://thismachine.info/ dapat menunjukkan sistem operasi mana yang digunakan seseorang.
Apa yang dilakukannya adalah, ia mengendus model sistem operasi inti Anda, misalnya
windows nt 5.1
sebagai milik saya.Kemudian melewati windows nt 5.1 / i ke Windows XP sebagai sistem operasi.
Menggunakan:
'/windows nt 5.1/i' => 'Windows XP',
dari larik.Bisa dibilang tebak-tebakan, atau perkiraan tapi masih cukup bagus.
Dipinjam dari jawaban di SO https://stackoverflow.com/a/15497878/
Catatan kaki: (19/14 Januari) Ada pengeditan yang disarankan pada 18 Januari 2014 untuk menambahkan
/msie|trident/i
oleh YJSoft anggota baru di SO.Komentar itu berbunyi:
Komentar: karena ua msie11 tidak termasuk msie (malah termasuk trisula)
Saya meneliti ini sebentar, dan menemukan beberapa tautan yang menjelaskan string Trident.
Meskipun pengeditan ditolak (bukan oleh saya sendiri, tetapi oleh beberapa editor lain), ada baiknya membaca tautan di atas, dan gunakan penilaian yang tepat.
Sesuai pertanyaan yang diajukan tentang mendeteksi SUSE, telah menemukan potongan kode ini di URL berikut:
Kode tambahan:
Edit: 12 April 2015
Saya melihat sebuah pertanyaan kemarin yang mungkin relevan dengan T&J ini dan mungkin berguna untuk beberapa orang. Dalam hal:
Mozilla/5.0 (Linux; Android 4.4.2; SAMSUNG-GT-I9505 Build/KOT49H) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36
Pengeditan lain , dan menambahkan tautan referensi yang diminta (dan dijawab / diterima hari ini, 4/16 November) yang mungkin berguna.
Konsultasikan T&J di sini di Stack:
sumber
'/windows nt 6.3/i'
adalah untuk Windows 8.1"mavericks HTTP_USER_AGENT"
@ben_aaron'/cros/i' => 'Chrome OS'
Saat Anda pergi ke sebuah situs web, browser Anda mengirimkan permintaan ke server web termasuk banyak informasi. Informasi ini mungkin terlihat seperti ini:
Semua informasi ini digunakan oleh server web untuk menentukan bagaimana menangani permintaan; bahasa pilihan dan apakah kompresi diperbolehkan.
Di PHP, semua informasi ini disimpan dalam
$_SERVER
array. Untuk melihat apa yang Anda kirim ke server web, buat file PHP baru dan cetak semuanya dari array.Ini akan memberi Anda gambaran yang bagus tentang semua yang sedang dikirim ke server, dari mana Anda dapat mengekstrak informasi yang diinginkan, misalnya
$_SERVER['HTTP_USER_AGENT']
untuk mendapatkan sistem operasi dan browser.sumber
Mengambil kode berikut dari manual php untuk get_browser .
The
$browser
Array telahplatform
informasi termasuk yang memberi Anda spesifik Sistem Operasi yang digunakan.Pastikan untuk melihat bagian "Catatan" di halaman itu. Ini mungkin sesuatu yang (thismachine.info) sedang gunakan jika bukan sesuatu yang sudah ditunjukkan di jawaban lain.
sumber
Berdasarkan jawaban oleh Fred-II, saya ingin membagikan pendapat saya tentang fungsi getOS, ini menghindari global, menggabungkan kedua daftar dan mendeteksi arsitektur (x32 / x64)
sumber
Jika Anda ingin mendapatkan semua informasi itu, Anda mungkin ingin membaca ini:
http://php.net/manual/en/function.get-browser.php
Anda dapat menjalankan kode sampel dan Anda akan melihat cara kerjanya:
Contoh di atas akan menghasilkan sesuatu yang mirip dengan:
sumber
Jika Anda menginginkan sangat sedikit info seperti kelas di html Anda untuk browser umum misalnya, Anda dapat menggunakan:
yang akan mengembalikan 'safari' atau 'firefox' atau 'chrome', atau 'ie ie8', 'ie ie9', 'ie ie10', 'ie ie11'.
sumber
Anda dapat mencari informasi ini dalam
$_SERVER['HTTP_USER_AGENT']
, tetapi formatnya adalah bentuk bebas, tidak dijamin akan dikirim, dan dapat dengan mudah diubah oleh pengguna, baik untuk privasi atau alasan lain.Jika Anda belum menyetel
browsecap
arahan, ini akan mengembalikan peringatan. Untuk memastikannya sudah disetel, Anda bisa mengambil nilai menggunakanini_get
dan melihat apakah sudah disetel.Seperti yang dijelaskan kba dalam jawabannya, browser Anda mengirimkan banyak informasi ke server saat memuat halaman web. Sebagian besar situs web menggunakan informasi agen-pengguna ini untuk menentukan sistem operasi pengunjung, browser dan berbagai informasi.
sumber