Browser fingerprinting dijelaskan untuk scraper
Browser fingerprinting adalah praktik mengidentifikasi pengunjung berdasarkan gabungan sifat browser-nya, bukan dengan cookie atau akun. Situs memakainya untuk mengenali pengunjung yang kembali, mendeteksi fraud, dan mengenali automation. Jika Anda melakukan web scraping, Anda pasti akan menemuinya. Panduan ini menjelaskan apa saja yang diukur, mengapa satu ketidakcocokan saja bisa menimbulkan masalah, dan cara menjaga satu profil yang konsisten dan berperilaku baik untuk mengumpulkan data publik. Panduan ini juga menjelaskan batas dari apa yang bisa dan seharusnya dilakukan tuning fingerprint.
Apa saja yang membentuk fingerprint
Tidak ada satu nilai pun yang mengidentifikasi browser sendirian, tetapi banyak nilai kecil yang digabung sering kali bisa. Input umumnya meliputi:
- User agent dan client hints. Nama browser, versi, dan sistem operasi yang dilaporkan browser.
- Geometri layar dan jendela. Ukuran layar, kedalaman warna, device pixel ratio, dan ukuran viewport.
- Bahasa dan zona waktu. Header
Accept-Language,navigator.languages, dan zona waktu yang dilaporkan browser. - Font yang terpasang. Font yang bisa dideteksi halaman, yang berbeda antar sistem operasi dan perangkat lunak yang terpasang.
- Output canvas, WebGL, dan audio. Perbedaan kecil dalam cara stack grafis atau audio menggambar atau memproses gambar dan suara uji.
- Sifat tingkat jaringan. Handshake TLS, pengaturan HTTP/2, dan urutan header request. Ini terlihat oleh server bahkan sebelum JavaScript apa pun berjalan.
Script fingerprinting menggabungkan semua ini menjadi hash atau skor. Semakin banyak sinyal yang stabil dan tidak biasa, semakin besar kemampuannya untuk mengidentifikasi.
Mengapa ketidakcocokan mencolok
Browser asli itu konsisten secara internal. Sistem operasinya cocok dengan font-nya, zona waktunya cocok dengan pengaturan bahasanya, dan ukuran layarnya cocok dengan perangkat tempat ia berjalan. Scraper sering kali merusak konsistensi itu tanpa disengaja:
- User agent yang disalin dari browser desktop, dikirim oleh server yang tidak punya font terpasang.
- Header
Accept-Languagebahasa Jerman pada request yang IP-nya berada di negara lain, dengan zona waktu yang tidak cocok dengan keduanya. - Environment headless yang melaporkan ukuran jendela yang tidak dipakai monitor sungguhan mana pun.
- Profil baru di setiap run, sehingga cookie dan riwayatnya tidak pernah terlihat seperti pengunjung yang kembali.
Setiap ketidakcocokan adalah sinyal kecil. Bersama-sama, mereka bisa memindahkan request dari "pengunjung biasa" menjadi "perlu diperiksa lebih lanjut".
Langkah 1: ukur setup Anda sendiri
Anda bisa melihat apa yang dipelajari sebuah halaman tentang client Anda dengan memuat halaman uji fingerprint yang Anda kontrol, atau halaman diagnostik yang Anda jalankan secara lokal. Lihat nilainya dan tanyakan apakah nilai-nilai itu menggambarkan satu mesin yang koheren. Berikut contoh Playwright minimal yang mencetak beberapa di antaranya:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=False)
context = browser.new_context(locale="en-GB", timezone_id="Europe/London")
page = context.new_page()
page.goto("https://example.com") # ganti dengan halaman yang Anda miliki
print(page.evaluate("""() => ({
language: navigator.language,
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
platform: navigator.platform,
viewport: [innerWidth, innerHeight]
})"""))
browser.close()
Langkah 2: satu identitas per profil
Kebiasaan yang paling berguna adalah memperlakukan setiap identitas scraping sebagai satu profil. Berikan satu set sifat dan pertahankan selama masa hidupnya:
- Satu build browser, satu user agent, dan satu sistem operasi.
- Locale, bahasa, dan zona waktu yang sesuai dengan wilayah asal traffic.
- Viewport dan device scale factor yang sesuai dengan layar sungguhan.
- Cookie jar yang persisten, sehingga profil berperilaku seperti pengunjung yang kembali.
Mengubah salah satu dari ini untuk setiap request lebih mencurigakan dibanding menjaganya tetap stabil. Konsistensi adalah yang membuat profil terlihat biasa.
Langkah 3: atur ritme profil seperti pengunjung
Fingerprinting hanyalah salah satu input. Situs juga memantau seberapa cepat satu profil bergerak melalui situs. Profil yang memuat dua ratus halaman produk dalam satu menit bukanlah manusia, apa pun fingerprint-nya. Sebarkan request, cache hasilnya, dan berhenti saat halaman menunjukkan Anda harus berhenti. Checklist scrape tanpa diblokir membahas pengaturan ritme lebih detail.
Langkah 4: pahami batasnya
Tuning fingerprint tidak bisa membuat profil automation terlihat seperti orang yang sebenarnya tidak ada di sana. Situs yang mengandalkan fingerprinting biasanya mengombinasikannya dengan rate limit, pemeriksaan akun, dan kadang captcha. Saat captcha muncul, Anda membutuhkan token dari solver, bukan sekadar tweak fingerprint lagi. Tipe captcha yang live di Scarnox adalah PopularCaptcha; panduan PopularCaptcha dengan Python menunjukkan requestnya. Untuk gambaran yang lebih luas tentang widget yang ada, baca jenis-jenis captcha dijelaskan.
Yang lebih penting, menghindari fingerprint bukanlah izin untuk mengabaikan aturan situs. Jika pemilik situs telah membatasi akses otomatis, langkah yang benar adalah berhenti, bukan membuat profil Anda lebih sulit dikenali. Fingerprinting juga merupakan topik privasi. Beberapa situs memakainya untuk melacak orang lintas kunjungan, dan itu adalah alasan lain untuk hanya mengumpulkan apa yang dibutuhkan proyek Anda.
Scraping secara bertanggung jawab
- Baca
robots.txtdan terms-nya sebelum melakukan scraping pada situs. - Gunakan request yang lebih sedikit dan lebih pelan, dan cache apa yang sudah Anda kumpulkan.
- Jangan membangun profil untuk menyamar sebagai orang sungguhan atau untuk menghindari blokir.
- Jangan menyimpan data pribadi yang tidak Anda butuhkan, dan tangani apa pun yang Anda simpan dengan hati-hati.
Ke mana melanjutkan
Jika target Anda berada di balik pemeriksaan tingkat browser, mulailah dengan deteksi browser headless, yang membahas sinyal khusus browser automation. Halaman yang membutuhkan JavaScript untuk menampilkan kontennya dibahas dalam scraping situs JavaScript.
Mulai dengan kredit uji coba gratis, tanpa kartu: buat akun dan coba alur PopularCaptcha pada halaman yang Anda miliki. Untuk tarif terkini, lihat halaman harga.