Saya sedang membangun alat analitik dan saat ini saya bisa mendapatkan alamat IP, browser, dan sistem operasi pengguna dari agen pengguna mereka.
Saya ingin tahu apakah ada kemungkinan untuk mendeteksi pengguna yang sama tanpa menggunakan cookie atau penyimpanan lokal? Saya tidak mengharapkan contoh kode di sini; hanya petunjuk sederhana dari mana harus mencari lebih jauh.
Lupa menyebutkan bahwa itu harus kompatibel lintas-browser jika itu komputer / perangkat yang sama. Pada dasarnya saya setelah pengenalan perangkat tidak benar-benar pengguna.
javascript
php
http-headers
fingerprinting
slash197
sumber
sumber
Jawaban:
pengantar
Jika saya memahami Anda dengan benar, Anda perlu mengidentifikasi pengguna yang Anda tidak memiliki Pengidentifikasi Unik, jadi Anda ingin mengetahui siapa mereka dengan mencocokkan Data Acak. Anda tidak dapat menyimpan identitas pengguna dengan andal karena:
Java Applet atau Com Object akan menjadi solusi mudah menggunakan hash informasi perangkat keras, tetapi saat ini orang-orang sangat memperhatikan keamanan sehingga akan sulit untuk membuat orang memasang program-program semacam ini pada sistem mereka. Ini membuat Anda terjebak dengan menggunakan Cookie dan alat-alat serupa lainnya.
Cookie dan alat serupa lainnya
Anda mungkin mempertimbangkan untuk membangun Profil Data, kemudian menggunakan tes Probabilitas untuk mengidentifikasi Pengguna yang Kemungkinan . Profil yang berguna untuk ini dapat dihasilkan oleh beberapa kombinasi berikut ini:
Item yang saya daftarkan, tentu saja, hanya beberapa cara yang memungkinkan pengguna dapat diidentifikasi secara unik. Masih banyak lagi.
Dengan kumpulan elemen Data Acak ini untuk membuat Profil Data, untuk apa selanjutnya?
Langkah selanjutnya adalah mengembangkan beberapa Logika Fuzzy , atau, lebih baik lagi, Jaringan Syaraf Tiruan (yang menggunakan logika fuzzy). Dalam kedua kasus tersebut, idenya adalah untuk melatih sistem Anda, dan kemudian menggabungkan pelatihannya dengan Bayesian Inference untuk meningkatkan akurasi hasil Anda.
The NeuralMesh perpustakaan untuk PHP memungkinkan Anda untuk menghasilkan Artificial Neural Networks. Untuk menerapkan Bayesian Inference, periksa tautan berikut:
Pada titik ini, Anda mungkin berpikir:
Mengapa begitu banyak Matematika dan Logika untuk tugas yang tampaknya sederhana?
Pada dasarnya, karena itu bukan tugas yang mudah . Apa yang Anda coba capai sebenarnya adalah Probabilitas Murni . Misalnya, diberikan pengguna yang dikenal berikut:
Ketika Anda menerima data berikut:
Pertanyaan yang pada dasarnya Anda tanyakan adalah:
Berapa probabilitas bahwa data yang diterima (B + C + E + G + F + K) sebenarnya adalah User1 atau User2? Dan yang mana dari dua pertandingan yang paling mungkin?
Agar dapat menjawab pertanyaan ini secara efektif, Anda perlu memahami Format Frekuensi vs Probabilitas dan mengapa Kemungkinan Gabungan menjadi pendekatan yang lebih baik. Rinciannya terlalu banyak untuk masuk ke sini (itulah sebabnya saya memberi Anda tautan), tetapi contoh yang baik adalah Aplikasi Wisaya Diagnosis Medis , yang menggunakan kombinasi gejala untuk mengidentifikasi kemungkinan penyakit.
Pikirkan sejenak serangkaian titik data yang terdiri dari Profil Data Anda (B + C + E + G + F + K dalam contoh di atas) sebagai Gejala , dan Pengguna Tidak Dikenal sebagai Penyakit . Dengan mengidentifikasi penyakit, Anda dapat lebih lanjut mengidentifikasi pengobatan yang sesuai (memperlakukan pengguna ini sebagai User1).
Jelas, suatu Penyakit yang telah kami identifikasi lebih dari 1 Gejala lebih mudah untuk diidentifikasi. Faktanya, semakin banyak gejala yang dapat kita identifikasi, diagnosis kita semakin mudah dan akurat.
Apakah ada alternatif lain?
Tentu saja. Sebagai ukuran alternatif, Anda dapat membuat algoritme penilaian sederhana Anda sendiri, dan mendasarkannya pada pencocokan tepat. Ini tidak seefisien probabilitas, tetapi mungkin lebih mudah untuk Anda terapkan.
Sebagai contoh, perhatikan grafik skor sederhana ini:
Untuk setiap informasi yang dapat Anda kumpulkan berdasarkan permintaan yang diberikan, berikan skor terkait, kemudian gunakan Pentingnya untuk menyelesaikan konflik ketika skor sama.
Bukti dari konsep
Untuk bukti konsep yang sederhana, silakan lihat di Perceptron . Perceptron adalah Model RNA yang umumnya digunakan dalam aplikasi pengenalan pola. Bahkan ada Kelas PHP lama yang mengimplementasikannya dengan sempurna, tetapi Anda mungkin perlu memodifikasinya untuk tujuan Anda.
Meskipun menjadi alat yang hebat, Perceptron masih dapat mengembalikan beberapa hasil (kemungkinan pertandingan), jadi menggunakan perbandingan Skor dan Perbedaan masih berguna untuk mengidentifikasi yang terbaik dari pertandingan tersebut.
Asumsi
Harapan
Kode untuk Bukti Konsep
Keluaran:
Print_r dari "D":
Jika Debug = true Anda akan dapat melihat Input (Sensor & Diinginkan), Bobot Awal, Output (Sensor, Jumlah, Jaringan), Kesalahan, Koreksi dan Bobot Akhir .
x1 hingga x20 mewakili fitur yang dikonversi oleh kode.
Ini demo online
Kelas yang digunakan:
Kelas Perceptron yang Dimodifikasi
Kesimpulan
Mengidentifikasi pengguna tanpa Pengenal Unik bukanlah tugas yang mudah atau sederhana. itu tergantung pada pengumpulan jumlah Data Acak yang cukup yang dapat Anda kumpulkan dari pengguna dengan berbagai metode.
Bahkan jika Anda memilih untuk tidak menggunakan Jaringan Syaraf Tiruan, saya sarankan setidaknya menggunakan Matriks Probabilitas Sederhana dengan prioritas dan kemungkinan - dan saya berharap kode dan contoh yang diberikan di atas memberi Anda cukup untuk melanjutkan.
sumber
Implement Bayesian inference using PHP
, semua 3 bagian. -Frequency vs Probability
-Joint Probability
-Input (Sensor & Desired), Initial Weights, Output (Sensor, Sum, Network), Error, Correction and Final Weights
Teknik ini (untuk mendeteksi pengguna yang sama tanpa cookie - atau bahkan tanpa alamat ip) disebut sidik jari peramban . Pada dasarnya Anda merangkak sebagai informasi tentang peramban sebanyak mungkin - hasil yang lebih baik dapat dicapai dengan javascript, flash atau java (mis. Ekstensi yang dipasang, font, dll.). Setelah itu, Anda dapat menyimpan hasil hash, jika mau.
Itu tidak sempurna, tetapi:
Info lebih lanjut:
sumber
Sidik jari yang disebutkan di atas berfungsi, tetapi masih bisa mengalami tabrakan.
Salah satu caranya adalah menambahkan UID ke url setiap interaksi dengan pengguna.
http://someplace.com/12899823/user/profile
Di mana setiap tautan di situs disesuaikan dengan pengubah ini. Ini mirip dengan cara ASP.Net digunakan untuk bekerja menggunakan data FORM antar halaman.
sumber
Sudahkah Anda melihat ke Evercookie ? Ini mungkin atau mungkin tidak berfungsi di seluruh browser. Ekstrak dari situs mereka.
"Jika pengguna mendapat cookie di satu browser dan beralih ke browser lain, asalkan mereka masih memiliki cookie Local Shared Object, cookie itu akan mereproduksi di kedua browser."
sumber
Anda dapat melakukan ini dengan png yang di-cache, itu akan menjadi agak tidak dapat diandalkan (browser yang berbeda berperilaku berbeda, dan itu akan gagal jika pengguna membersihkan cache mereka), tetapi itu adalah pilihan.
1: mengatur Database yang menyimpan id pengguna unik sebagai string hex
2: membuat file genUser.php (atau bahasa apa pun) yang menghasilkan id pengguna, menyimpannya dalam DB dan kemudian membuat warna yang sebenarnya .png dari nilai string hex (setiap piksel akan menjadi 4 byte) dan kembali itu ke browser. Pastikan untuk mengatur tipe konten dan header cache.
3: di HTML atau JS buat gambar seperti
<img id='user_id' src='genUser.php' />
4: gambar gambar itu ke kanvas
ctx.drawImage(document.getElementById('user_id'), 0, 0);
5: baca byte dari gambar itu dengan menggunakan
ctx.getImageData
, dan konversi bilangan bulat menjadi string hex.6: Itu adalah id pengguna unik Anda yang sekarang di-cache di komputer pengguna Anda.
sumber
I'm after device recognition
adalah hadiah untuk apa yang dia inginkan, dan dia menguraikan di sini: stackoverflow.com/questions/15966812/…Berdasarkan apa yang Anda katakan:
Cara terbaik untuk melakukannya adalah dengan mengirim alamat mac yang merupakan NIC ID.
Anda dapat melihat posting ini: Bagaimana saya bisa mendapatkan MAC dan alamat IP dari klien yang terhubung di PHP?
sumber
Anda bisa melakukannya dengan etag. Meskipun saya tidak yakin apakah ini legal sebagai sekelompok tuntutan hukum diajukan.
Jika Anda benar-benar memperingatkan pengguna Anda atau jika Anda memiliki sesuatu seperti situs web intranet mungkin tidak masalah.
sumber
Anda berpotensi membuat gumpalan untuk menyimpan pengidentifikasi perangkat ...
Kelemahannya adalah bahwa pengguna perlu mengunduh gumpalan ( Anda dapat memaksa unduhan ), karena browser tidak dapat mengakses Sistem File untuk langsung menyimpan file.
referensi:
https://www.inkling.com/read/javascript-definitive-guide-david-flanagan-6th/chapter-22/blobs
sumber
Tidak efisien, tetapi mungkin memberi Anda hasil yang diinginkan, akan menjadi polling API di pihak Anda. Memiliki proses latar belakang di sisi klien yang mengirim data pengguna pada suatu interval. Anda akan memerlukan pengenal pengguna untuk mengirim ke API Anda. Setelah Anda memilikinya, Anda dapat mengirim informasi apa pun yang terkait dengan pengenal unik itu.
Ini menghilangkan kebutuhan akan cookie dan penyimpanan lokal.
sumber
Saya tidak percaya, http://browserspy.dk masih belum disebutkan di sini! Situs ini menjelaskan banyak fitur (dalam hal pengenalan pola), yang dapat digunakan untuk membangun classifier.
Dan tentu saja, untuk mengevaluasi fitur-fitur yang saya sarankan Support Vector Machines dan libsvm pada khususnya.
sumber
Lacak mereka selama sesi atau sesi?
Jika situs Anda adalah HTTPS Everywhere Anda dapat menggunakan ID Sesi TLS untuk melacak sesi pengguna
sumber
ini akan mengharuskan pengguna untuk menginstal pengidentifikasi.
setelah plugin diinstal, sidik jari dari browser apa pun (plugin diaktifkan) akan berisi plugin khusus ini. Untuk mengembalikan info ke server, diperlukan algoritme untuk mendeteksi plugin secara efektif di sisi klien, jika tidak, IE dan Firefox> = 28 pengguna akan membutuhkan tabel kemungkinan identifikasi yang valid.
Ini membutuhkan investasi yang relatif tinggi ke dalam teknologi yang kemungkinan akan ditutup oleh vendor browser. Saat Anda dapat meyakinkan pengguna untuk menginstal plugin, mungkin ada opsi seperti menginstal proxy lokal , menggunakan vpn atau menambal driver jaringan.
Pengguna yang tidak ingin diidentifikasi (atau mesin mereka) akan selalu menemukan cara untuk mencegahnya.
sumber
this will require the user to willingly install the identifier.
mungkin bukan apa yang dimaksud dengan poster asli (OP).