Back to blog. Article language: BN EN ES FR HI ID PT RU UR VI ZH

Fingerprinting TLS dan JA3: bagaimana pengaruhnya terhadap scraping

Fingerprinting TLS mengidentifikasi klien HTTP dari struktur handshake TLS-nya, sebelum ada data aplikasi yang berpindah. JA3 dan JA4 mengubah bidang-bidang pesan ClientHello menjadi hash pendek, dan sistem anti-bot membandingkan hash tersebut dengan tanda tangan browser dan bot yang telah dikenal. Ketidakcocokan antara browser yang diklaim dan hash dapat membuat sebuah permintaan ditolak bahkan sebelum header sempat dibaca.

Legenda yang digunakan di setiap tabel di bawah: ✅ didokumentasikan oleh vendor · ❌ tidak disediakan atau tidak didokumentasikan · ⚠️ didokumentasikan dengan batasan · 💡 tips praktis. Tidak ada tanda lain yang digunakan di halaman ini.

Apa itu fingerprint TLS

Fingerprint TLS adalah tanda tangan pendek yang dibangun dari bidang-bidang yang dikirim klien HTTP dalam pesan client hello-nya selama handshake tls, bahkan sebelum enkripsi dimulai. Memahami apa itu JA3 dimulai dari sini: JA3 membaca lima dari bidang tersebut dan mengubahnya menjadi satu hash. Setiap klien, baik itu Chrome, curl, maupun skrip Python, mendaftarkan cipher suite, ekstensi, dan kurva eliptik dalam urutan khasnya sendiri. Server membaca data ini dalam bentuk plaintext, karena kedua pihak belum menyepakati kunci enkripsi.

Client hello juga membawa ekstensi alpn, yang memberi tahu server apakah koneksi lebih memilih HTTP/1.1 atau HTTP/2. Library yang berbeda merakit bidang-bidang ini secara berbeda bergantung pada stack TLS yang mendasarinya, misalnya OpenSSL versus BoringSSL versus NSS. Itulah bahan mentah yang menjadi dasar kerja JA3 dan JA4.

💡 Tips: jika dua permintaan membawa fingerprint yang sama tetapi browser yang dideklarasikan berbeda, ketidakkonsistenan itu saja sudah bisa menimbulkan kecurigaan tanpa ada trik header yang terlibat.

Bagaimana JA3 dan JA4 dihitung

Fingerprint JA3 dihitung dengan menggabungkan lima bidang ClientHello menjadi satu string dan meng-hash-nya dengan MD5, menghasilkan tanda tangan sepanjang 32 karakter (Scrapfly, JA3/JA4 TLS Fingerprinting Guide, 2026). John Althouse, Jeff Atkinson, dan Josh Atkins mempublikasikan metode aslinya di Salesforce pada 2017, dan metode tersebut masih menjadi tulang punggung sebagian besar pemeriksaan bot berbasis TLS saat ini. Lima bidang yang membentuk hash tersebut adalah versi TLS, cipher suite, ekstensi, kurva eliptik, dan format titik, yang digabungkan dalam urutan tetap.

  1. Ekstrak versi TLS, dinyatakan sebagai angka desimal seperti 771 untuk TLS 1.2.
  2. Daftarkan cipher suite persis dalam urutan yang dikirim oleh klien, dipisahkan dengan tanda hubung.
  3. Daftarkan ekstensi TLS sesuai urutan pengiriman, dipisahkan tanda hubung, sambil melewati nilai GREASE.
  4. Tambahkan kurva eliptik dan format titik yang didukung.
  5. Gabungkan kelima bidang dengan koma dan hash string hasilnya dengan MD5 untuk mendapatkan hash ja3.
Diagram yang menunjukkan bagaimana hash JA3 dibangun dari bidang-bidang ClientHello

Bagaimana hash JA3 dibangun dari ClientHello

Metode yang lebih baru menghilangkan masalah pengurutan pada langkah 3. Alih-alih merekam ekstensi sesuai yang dikirim, metode ini mengurutkannya berdasarkan nilai heksadesimal, yang menjaga fingerprint JA4 tetap stabil bahkan setelah browser mulai mengacak urutan ekstensi pada 2023 (Scrapfly, 2026). Hash penerus tersebut juga meninggalkan MD5 demi SHA-256 terpotong serta menambahkan dukungan ALPN dan QUIC, detail yang tidak pernah ditangkap oleh JA3.

Kriteria JA3 Metode penerus
Algoritma hash MD5 SHA-256 terpotong
Urutan ekstensi Sesuai urutan pengiriman Diurutkan berdasarkan nilai hex
Dukungan QUIC/HTTP3 ❌ tidak disediakan ✅ didokumentasikan
ALPN disertakan ❌ tidak disediakan ✅ didokumentasikan
Dibuat 2017, Salesforce 2023, FoxIO

Perbedaan struktural ini penting bagi siapa pun yang menguji klien miliknya sendiri. Fingerprint yang dihitung dengan satu cara tidak akan cocok dengan database yang dibangun untuk metode yang lain.

Mengapa proxy saja tidak menyelesaikan masalah fingerprinting

Proxy mengubah alamat IP asal permintaan; proxy sama sekali tidak menyentuh handshake tls, sehingga fingerprinting TLS tetap melihat library apa pun yang memulai koneksi. Handshake terjadi langsung antara klien dan server tujuan, dan proxy HTTPS standar yang menggunakan metode CONNECT hanya meneruskan byte terenkripsi tanpa menyentuhnya (Shifter, TLS fingerprint glossary, 2026). Artinya, IP residen yang bersih yang dipasangkan dengan klien Python bawaan tetap menyerahkan fingerprint yang terbaca sebagai skrip, bukan browser.

Dalam pengujian kami pada Agustus 2026, sesi requests bawaan yang dirutekan melalui tiga jenis proxy berbeda mengembalikan hash yang identik setiap kali, terlepas dari reputasi atau geografi IP. Hanya pergantian library TLS yang mendasari yang mengubah hasilnya. Ini bagian jujur dari pembicaraan ini: kualitas IP dan pencocokan fingerprint menyelesaikan dua masalah yang terpisah, dan memperlakukan yang satu sebagai solusi untuk yang lain cepat berujung pada kekecewaan.

"Fingerprinting TLS terjadi sebelum byte HTTP pertama tiba. Mengganti alamat IP tidak melakukan apa pun terhadap handshake di baliknya." - Catatan engineering Insocks, Agustus 2026

  • ❌ IP residen tidak menulis ulang urutan cipher suite.
  • ❌ Proxy berotasi tidak menyentuh bidang-bidang handshake TLS.
Diagram yang membandingkan apa yang diubah proxy dengan apa yang dibiarkan tidak tersentuh

Apa yang diubah proxy dan apa yang dibiarkan tidak tersentuh

  • ✅ Mencocokkan stack TLS browser sungguhan adalah hal yang benar-benar mengubah fingerprint.

Bagaimana sistem anti-bot menggunakan fingerprint TLS

Sistem anti-bot menghitung hash dari setiap ClientHello yang masuk dan memeriksanya terhadap database fingerprint browser dan bot yang telah dikenal, lalu menggabungkan sinyal tersebut dengan lapisan-lapisan lain sebelum memutuskan pemblokiran, challenge, atau pelolosan. Fingerprinting TLS sepenuhnya berada di bawah header HTTP, itulah sebabnya header yang sempurna yang dipasangkan dengan stack TLS berskrip tetap terdeteksi. Cloudflare mendokumentasikan bidang JA3 dan JA4 di dalam produk bot management miliknya, dan vendor lain menjalankan pemeriksaan yang sebanding (Scrapfly, 2026). Skoring mencampur sinyal TLS dengan waktu permintaan, reputasi IP, dan data perilaku alih-alih hanya bergantung pada satu bidang saja.

Beberapa vendor menambahkan fingerprinting http2 di atas pemeriksaan handshake, membaca bagaimana klien menegosiasikan prioritas stream dan ukuran window begitu lapisan TLS selesai. Lapisan kedua ini masuk ke dalam skoring deteksi anti bot yang lebih luas bersama hash JA3 dan JA4. Vendor terus memperbarui database ini seiring dirilisnya versi-versi browser, dan fingerprint yang lolos pada kuartal lalu bisa mulai gagal setelah pembaruan browser mengubah nilai bawaannya.

Sinyal Apa yang diungkapkan Tindakan tipikal
Ketidakcocokan hash JA3 vs User-Agent Browser yang diklaim tidak cocok dengan stack TLS ⚠️ didokumentasikan dengan batasan, sering kali berupa challenge
Hash statis lintas sesi Skrip yang sama dipakai berulang kali ⚠️ didokumentasikan dengan batasan, rate limiting
Kecocokan dengan database bot yang dikenal Fingerprint terikat pada bawaan library yang umum ❌ tidak disediakan, sering diblokir langsung
Profil konsisten yang mirip browser Sesuai dengan perilaku browser yang diharapkan ✅ didokumentasikan, biasanya lolos

Konsistensi lintas lapisan: TLS, HTTP/2, header, dan IP

Konsistensi lintas lapisan berarti handshake tls, frame pengaturan http2, User-Agent yang dideklarasikan, dan jenis jaringan IP semuanya perlu mengarah ke kisah yang sama, browser sungguhan atau klien sungguhan, bukan tambal sulam sinyal-sinyal yang tidak cocok. Fingerprinting Http2 melihat bagaimana klien menegosiasikan prioritas stream dan ukuran window setelah handshake selesai, dan ini merupakan lapisan kedua yang diperiksa sebagian vendor anti-bot di samping data JA3 dan JA4 (Scrapfly, 2026). Scraper yang memperbaiki stack TLS-nya tetapi mengabaikan pengaturan HTTP/2 masih menyisakan celah yang jelas.

Diagram empat lapisan permintaan dan apa yang diungkapkan masing-masing

Empat lapisan yang diekspos oleh sebuah permintaan, dan apa yang diungkapkan masing-masing

Konsistensi user agent juga penting, karena string User-Agent yang mengklaim Chrome 124 yang dipasangkan dengan profil fingerprint JA4 yang sudah usang dengan sendirinya terbaca sebagai kontradiksi. Vendor anti-bot menandai persis ketidakcocokan semacam ini bahkan ketika setiap header secara individual tampak benar. Tidak ada dari pemeriksaan ini yang mengharuskan melewati apa pun di situs target; pemeriksaan ini hanya memastikan bahwa sinyal-sinyal klien itu sendiri saling sepakat sebelum permintaan dikirim.

Lapisan Apa yang harus cocok Cara memeriksa
Handshake TLS Cipher suite dan urutan ekstensi untuk browser yang diklaim Bandingkan hash JA3/JA4 dengan sampel browser yang dikenal
Frame pengaturan HTTP/2 Ukuran window, ukuran tabel header, prioritas stream Periksa nilai frame terhadap bawaan browser
Header User-Agent, Accept-Language, Sec-CH-UA jika ada Peninjauan manual atau alat inspeksi header
IP/jaringan Jenis ASN sesuai klien yang diklaim, residen vs datacenter Periksa reputasi IP dan pencarian ASN

Cara menguji fingerprint TLS Anda sendiri

Menguji fingerprint dimulai dengan permintaan bersih ke endpoint pemeriksaan, lalu perbandingan berdampingan terhadap browser sungguhan yang mengakses endpoint yang sama. Fingerprint JA4 mengelompokkan versi TLS, jumlah cipher, jumlah ekstensi, dan nilai ALPN pertama ke dalam string yang mudah dibaca, yang membuat perbandingan visual lebih mudah daripada membaca hash mentah (Scrapfly, JA3/JA4 fingerprint tool, 2026). Menjalankan pengujian yang sama dua kali pada hari yang berbeda juga membantu memastikan hasilnya tetap stabil di berbagai pembaruan library.

Alat-alat yang dibangun untuk tujuan ini, termasuk checker milik Scrapfly sendiri dan library pihak ketiga seperti curl impersonate, nama alat yang digunakan di sini hanya untuk identifikasi, memang ada secara khusus untuk membuat perbandingan ini memungkinkan tanpa menebak-nebak. Browser headless yang menjalankan Playwright atau Puppeteer juga memberikan handshake asli untuk perbandingan, karena browser tersebut menjalankan mesin browser sungguhan alih-alih stack TLS berskrip.

  • Langkah 1. Kirim permintaan dari klien yang sedang ditinjau ke endpoint pengujian fingerprint dan catat hash yang dikembalikannya.
  • Langkah 2. Buka endpoint yang sama di browser sungguhan yang terkini dan catat hash miliknya untuk perbandingan.
  • Langkah 3. Bandingkan cipher suite, jumlah ekstensi, dan nilai ALPN secara berdampingan alih-alih hanya menilai dari kecocokan hash.
  • Langkah 4. Periksa apakah header User-Agent yang dideklarasikan sejalan dengan profil TLS yang benar-benar teramati.
  • Langkah 5. Catat hasilnya beserta tanggal, karena hash bisa bergeser setelah pembaruan library atau browser.

👉 Ingin melihat bagaimana klien yang dikonfigurasi dengan benar berperilaku dari ujung ke ujung?  Coba demo bersama Insocks sebelum menjalankan batch pengujian penuh.

Praktik white-hat untuk pengumpulan data yang stabil

Pengumpulan data white-hat dimulai dari aturan situs target itu sendiri: API resmi terlebih dahulu, robots.txt dihormati, dan laju permintaan dijaga jauh di bawah tingkat apa pun yang bisa membebani server. Meninjau kembali apa itu JA3 membantu menjelaskan mengapa mesin browser penuh, bukan trik header, cenderung menghasilkan hasil yang paling stabil, karena stack TLS browser sungguhan secara bawaan sudah cocok dengan identitas yang dideklarasikannya sendiri. Playwright, Puppeteer, dan Selenium semuanya menjalankan mesin browser asli, sehingga handshake mereka terlihat seperti Chrome atau Firefox tanpa konfigurasi tambahan apa pun (Scrapfly, 2026).

Beberapa tim beralih ke curl impersonate atau library serupa ketika browser penuh terasa terlalu berat untuk tugas yang dihadapi, dan itu pertukaran yang wajar selama fingerprint yang dihasilkan terlebih dahulu diuji terhadap browser sungguhan. Memasangkan salah satu pendekatan tersebut dengan pengaturan waktu yang wajar dan User-Agent yang jelas menjaga proses pengumpulan tetap terprediksi dan mudah diaudit di kemudian hari.

  • ✅ Gunakan API resmi dan endpoint terdokumentasi di mana pun tersedia.
  • ✅ Hormati robots.txt dan ketentuan yang dipublikasikan situs target.
  • ✅ Beri jarak antar permintaan alih-alih menembakkan lonjakan ke satu endpoint.
  • ✅ Utamakan otomatisasi browser penuh alih-alih pemalsuan header atau TLS secara sepotong-sepotong.
  • 💡 Jadwal pengumpulan yang lebih lambat dan stabil biasanya menghasilkan lebih sedikit tiket dukungan daripada yang cepat dan penuh lonjakan.

Dengan menggunakan pendekatan ini dari Amerika Serikat, sebuah tim memastikan proses pengumpulannya tetap berada dalam batas legislasi AS yang berlaku dan ketentuan layanan situs target itu sendiri.

Kesalahan umum

Beberapa kesalahan proses muncul berulang kali ketika tim memeriksa pengaturan mereka sendiri. Menguji sekali dan tidak pernah mengulangi pemeriksaan setelah pembaruan library adalah yang paling umum, karena hasil fingerprinting TLS bisa bergeser begitu sebuah dependensi menaikkan versi backend TLS-nya. Menjalankan pengujian di lingkungan staging yang tidak cocok dengan produksi adalah kesalahan lainnya, karena jalur permintaan sebenarnya itulah yang penting, bukan shell lokal.

  • ❌ Menguji sekali dan mengasumsikan hasilnya tetap valid selamanya.
  • ❌ Memeriksa fingerprint di lingkungan yang berbeda dari tempat tugas benar-benar dijalankan.
  • ❌ Memercayai satu layanan verifikasi tanpa titik perbandingan kedua.
  • ❌ Mengabaikan pengaturan HTTP/2 sementara hanya mengejar lapisan TLS.

Bagaimana kualitas proxy masuk ke dalam gambaran

Pengungkapan: Insocks adalah layanan kami, dan bagian ini menjelaskan apa yang sebenarnya dilakukan infrastruktur proxy di dalam stack pengumpulan yang lebih luas. Infrastruktur proxy yang baik memperbaiki masalah pada lapisan IP: geografi, reputasi IP, dan stabilitas koneksi, sementara fingerprinting TLS tetap menjadi lapisan terpisah yang tidak dapat disentuh oleh proxy saja. Uptime yang andal dan pool IP yang bersih penting untuk menghindari pembatasan laju berbasis IP, tetapi keduanya tidak mengatakan apa-apa tentang urutan cipher suite atau daftar ekstensi di dalam handshake.

Untuk pekerjaan pengumpulan kami menjual proxy residen dan proxy IP statis, keduanya dengan dukungan protokol terdokumentasi dan data lokasi. Menggabungkan infrastruktur proxy yang solid dengan klien yang dikonfigurasi dengan benar, baik itu mesin browser penuh maupun library yang dicocokkan dengan cermat, menangani kedua lapisan sekaligus alih-alih menyisakan salah satunya terbuka.

Fitur Apa artinya dalam praktik
Pool IP residen dan ISP Mengurangi penanda reputasi berbasis IP, tidak menyentuh TLS
Penargetan geografis Mencocokkan asal permintaan dengan pasar yang dituju
Kontrol sesi Menjaga IP tetap konsisten di sepanjang alur multi-langkah
Uptime dan dukungan Mengurangi kegagalan koneksi yang tidak terkait fingerprinting

Proxy menangani lapisan jaringan, bukan fingerprint TLS, dan penyedia mana pun yang menyatakan sebaliknya sedang melebih-lebihkan apa yang bisa dilakukan pergantian IP. Tim yang perlu menyelesaikan kedua lapisan biasanya memasangkan infrastruktur proxy berkualitas, seperti proxy residen dan proxy ISP Insocks, dengan klien berbasis browser atau klien yang dicocokkan dengan benar.

🔗 Daftar untuk akses penuh guna membandingkan pool proxy sebelum berkomitmen pada sebuah paket.

Poin-poin penting

  • Handshake tls dibaca sebelum header HTTP mana pun, dan itulah seluruh dasar dari metode deteksi ini.
  • Hash penerus JA3 tetap stabil bahkan setelah urutan ekstensi diacak, tidak seperti pendahulunya.
  • Memahami apa itu JA3 memperjelas mengapa klien yang mirip browser lolos pemeriksaan secara lebih konsisten daripada klien berskrip.
  • Proxy menyelesaikan masalah IP; proxy tidak pernah menulis ulang handshake tls dengan sendirinya.
  • Otomatisasi browser penuh tetap menjadi rute yang paling dapat diandalkan untuk fingerprint JA3 yang konsisten dan mirip browser.

Pengungkapan dan sumber data

Semua data dalam artikel ini, termasuk harga, tingkatan tarif, batasan, dan ketersediaan produk, akurat per tanggal publikasi yang tertera di halaman ini. Ketentuan vendor berubah sering dan tanpa pemberitahuan, tingkatan awal bergerak mengikuti volume, dan harga promosi mungkin berlaku pada hari Anda membacanya. Tidak ada apa pun di sini yang merupakan penawaran, jaminan atas ketentuan saat ini, atau rekomendasi untuk membeli.

Artikel ini diterbitkan oleh Insocks. Kami menjual proxy dan mengungkapkan kepentingan komersial pada bagian akhir di atas. Proxy tidak mengubah fingerprint JA3 atau sinyal TLS lainnya, dan kami menyatakannya secara langsung alih-alih mengisyaratkan sebaliknya. Alat pengujian dan library yang disebutkan di sini, termasuk checker milik Scrapfly, curl-impersonate, dan kerangka kerja otomatisasi browser, adalah milik pemiliknya masing-masing dan muncul semata-mata untuk identifikasi. Detail dalam artikel ini diperiksa pada Agustus 2026, dan perilaku klien bisa bergeser di antara versi-versi library atau browser.

Pertanyaan yang sering diajukan

Pertanyaan-pertanyaan di bawah ini mencakup hal-hal dasar yang biasanya ditanyakan orang setelah membaca tentang topik ini untuk pertama kalinya. Jawabannya tetap singkat dan faktual, sesuai dengan apa yang benar-benar ditampilkan oleh tab browser atau alat baris perintah. Tidak ada bagian dari ini yang berfungsi ganda sebagai panduan melewati proteksi, karena tujuannya di sini adalah pemahaman, bukan penghindaran.

Apa itu fingerprint TLS?

Tanda tangan pendek yang dibangun dari data handshake dan mengidentifikasi perangkat lunak mana yang membuat koneksi.

Bagaimana hash JA3 dihitung?

Lima bidang dari handshake digabungkan dan di-hash menjadi string sepanjang 32 karakter.

Apa perbedaan antara JA3 dan JA4?

Metode yang lebih baru mengurutkan ekstensi dan menggunakan hash yang lebih kuat, tetap stabil setelah browser mengacak urutan.

Apakah proxy residen bisa menyembunyikan fingerprint TLS saya?

Tidak, proxy hanya mengubah alamat IP; handshake tetap lewat tanpa berubah.

Mengapa scraper saya diblokir padahal headernya sudah benar?

Header dimuat setelah handshake, sehingga profil klien yang tidak cocok ditandai lebih dahulu.

Bagaimana cara memeriksa fingerprint TLS saya sendiri?

Kirim permintaan ke alat pemeriksaan publik dan bandingkan dengan hasil browser sungguhan.

2026-09-03