Fungsi Sumber Lalu Lintas tersedia di Layanan Statistik Lalu Lintas. Sumber lalu lintas adalah konsep untuk tingkat kunjungan. Dengan kata lain, ketika kunjungan ditetapkan, sumber lalu lintas halaman arahan adalah sumber lalu lintas kunjungan. Meskipun ada banyak jenis sumber lalu lintas, sayangnya, berdasarkan JS sekarang, hanya ada dua cara untuk mendapatkan sumber lalu lintas - Document.referrer dan window.opener. Yang lebih disayangkan adalah bahwa tidak ada banyak skenario yang Window.Opener cocok, dan dokumen. Referrer sangat lemah sehingga tidak mungkin untuk secara akurat menentukan sumber lalu lintas dalam banyak skenario.
Tinjauan Document.referrer
Dalam hal penggunaan, Document.referrer berharap dapat melacak perilaku browser. Jika halaman A dibuka, maka tindakan yang mungkin terjadi pada browser termasuk operasi pengguna dan kode JS.
Pertama mari kita lihat tindakan yang dapat dilakukan pengguna saat membuka halaman A:
| 1 | Masukkan alamat langsung di bilah alamat |
| 2 | Tautan klik kiri A dari halaman B dan lompat ke halaman a |
| 3 | Klik kanan Link A dari halaman B untuk dibuka di jendela baru |
| 4 | Klik kanan Link A dari halaman B dan buka di tab baru |
| 5 | Seret tautan ke bilah alamat |
| 6 | Seret tautan ke bilah tab |
| 7 | Gunakan tombol maju dan belakang browser |
Perhatikan bahwa tautan di sini mengacu pada tag <a>, tetapi jika ada peristiwa atau target, itu harus menjadi masalah yang berbeda.
Kemungkinan cara untuk membuka halaman oleh JS:
| 1 | Ubah Window.Lokasi |
| 2 | Gunakan window.open |
| 3 | Klik Flash |
Di atas mencantumkan beberapa metode untuk klien untuk membuka halaman. Selain itu, jika teknologi pengalihan server digunakan, halaman A juga dapat disajikan kepada pengunjung.
Berikut adalah tes browser tertentu. Jika situasi di atas adalah di atas, bagaimana kinerja Document.RECERRER:
| Nomor seri | Pemandangan | IE8.0 | Ff3.6 | Ff4.0 | chrome |
| 1 | Masukkan alamat langsung di bilah alamat | "" | "" | "" | "" |
| 2 | Tautan klik kiri A dari halaman B, dan halaman A mengganti halaman B (target = '_ self') | √ | √ | √ | √ |
| 3 | Tautan klik kiri A dari halaman B, A dibuka di jendela baru (target = '_ blank') | √ | √ | √ | √ |
| 3 | Klik kanan Link A dari halaman B untuk dibuka di jendela baru | √ | √ | √ | "" |
| 4 | Klik kanan Link A dari halaman B dan buka di tab baru | √ | √ | √ | "" |
| 5 | Seret tautan ke bilah alamat dengan mouse | / | "" | "" | "" |
| 6 | Tautan seret mouse ke bilah tab | "" | "" | "" | "" |
| 7 | Gunakan tombol maju dan belakang browser | Menyimpan | Menyimpan | Menyimpan | Menyimpan |
| 8 | Ubah Window.Lokasi untuk membuka halaman A (domain yang sama) | "" | √ | √ | √ |
| 9 | Buka halaman a menggunakan window.open | "" | √ | √ | √ |
| 10 | Klik Flash untuk membuka halaman a | ||||
| 11 | Server mengarahkan ke halaman a | "" | "" | "" | "" |
Di mana "" berarti string kosong, √ berarti bahwa halaman sumber dapat dinilai dengan benar, dan menjaga berarti bahwa pengirim yang tidak akan mengubah halaman saat maju dan mundur tidak akan berubah. Dari tabel ini, kita dapat melihat dokumen itu. Referrer dapat mencakup sekitar setengah dari kasus. Namun, untuk beberapa operasi yang lebih umum digunakan, seperti menyeret tautan ke bilah tab dengan mouse, bergerak maju dan mundur, dll., Ini tidak dapat ditangani dengan benar.
Sumber Dokumen.REFERRER
Ketika browser meminta halaman A dari server, itu akan mengirim permintaan HTTP. Header permintaan ini akan memiliki atribut referer. Setelah server menerima permintaan, ia dapat mengekstrak referensi di header untuk menentukan halaman mana pengunjung memulai permintaan tersebut.
Secara umum, apa referer di header yang dikirim oleh browser saat meminta A, lalu berapa nilai dokumen.
Jika header tidak berisi referensi, maka saat menggunakan Document.Referre, itu akan ditetapkan sebagai string kosong.
Tentang permintaan https
Jika Anda mengklik tautan HTTPS pada halaman HTTP normal, Anda dapat melampirkan informasi referensi ke header permintaan HTTPS, dan kemudian Anda masih dapat menggunakan Document.referre untuk mendapatkan halaman HTTP normal di halaman HTTPS.
Demikian pula, jika Anda mengklik tautan HTTPS lain pada satu halaman HTTPS, Anda dapat melampirkan informasi referensi ke header permintaan.
Namun, jika Anda mengklik tautan HTTP dari halaman HTTP, sayangnya, header permintaan HTTP yang dikirim tidak dapat berisi informasi tentang halaman HTTP, yang mungkin karena tindakan perlindungan untuk halaman HTTP.
Informasi referensi yang dipalsukan
Menurut deskripsi di atas, Document.Referre berasal dari referensi di header. Kemudian jika Anda ingin memodifikasi nilai Document.Referre, secara teoritis, Anda hanya perlu memodifikasi header permintaan. Anda dapat mengganti referensi yang ada di header dengan nilai yang Anda inginkan. Jika awalnya tidak tersedia, Anda dapat menambahkan referensi.
Di sisi klien, merusak header adalah hal yang sangat mudah. Sebelum permintaan HTTP pada halaman dikirim, Anda dapat menggunakan alat Packet Interceptor untuk mencegatnya, kemudian menganalisis informasi header, dan memodifikasi referensi.
Setelah mencari, Firefox dapat dengan mudah dimodifikasi menggunakan plug-in refcontrol. Ngomong -ngomong, selingkuh di sumber lalu lintas sangat mudah.
Page Force Refresh
Tak lama setelah saya selesai menulis, saya menemukan bahwa halaman cara untuk melompat hilang, yaitu, untuk memaksa halaman ditentukan dalam tag meta di HTML untuk menyegarkan. Misalnya, tulis di B.html
Salin kode kode sebagai berikut: <meta http-equiv = "refresh" content = "5; url = a.html">
Kemudian setelah 5 detik, browser akan secara otomatis memulai permintaan halaman ke server.
Setelah pengujian, di IE8, FF3.6-FFS4.0, tidak akan ada informasi referensi, tetapi Chrome dapat menambahkan B.html sebagai referer ke header secara tidak sengaja.