13 poin oleh GN⁺ 2024-12-31 | 1 komentar | Bagikan ke WhatsApp
  • curl-impersonate adalah build curl khusus yang dapat meniru browser web utama seperti Chrome, Edge, Safari, dan Firefox
    • Melakukan handshake TLS dan HTTP sama seperti browser asli
    • Dapat digunakan sebagai alat baris perintah atau diintegrasikan sebagai library
  • Pentingnya
    • Saat klien HTTP mengakses situs web TLS, ia melakukan handshake TLS, dan dalam proses ini karakteristik klien dapat diidentifikasi
    • curl-impersonate membuat handshake tersebut sama seperti browser asli sehingga layanan web tidak dapat mengidentifikasi klien
  • Implementasi teknis
    • Mengompilasi curl menggunakan BoringSSL, library TLS milik Google.
    • Memodifikasi berbagai ekstensi TLS dan opsi SSL.
    • Mengubah pengaturan koneksi HTTP/2.
    • Menjalankan curl dengan flag nonstandar.
  • Browser yang didukung
    • Dapat meniru berbagai versi browser seperti Chrome, Edge, Safari, dan Firefox.
    • Skrip untuk masing-masing browser disediakan.
  • Penggunaan dasar
    • Disediakan skrip wrapper untuk menjalankan curl-impersonate untuk setiap browser yang didukung.
    • Contoh: curl_chrome123 https://www.wikipedia.org
  • Penggunaan lanjutan
    • Dapat dikonfigurasi melalui API dengan menggunakan library libcurl-impersonate.
    • Dapat mengganti library saat runtime menggunakan variabel lingkungan CURL_IMPERSONATE.
  • Instalasi
    • Binary hasil pra-kompilasi untuk Windows, Linux, dan macOS tersedia di halaman rilis GitHub.
    • Juga dapat digunakan melalui image Docker.
  • Repositori ini adalah fork curl-impersonate yang lebih aktif, dengan perbedaan utama berikut
    • Dukungan Encrypted Client Hello(ECH): Menambahkan fitur ECH yang diperkenalkan di Chrome 119.
    • Dukungan kompresi ZSTD: Mendukung protokol kompresi ZSTD yang diperkenalkan di Chrome 123.
    • Dukungan kurva X25519Kyber768: Menambahkan kurva kriptografi baru yang diperkenalkan di Chrome 124.
    • Perluasan opsi fingerprint HTTP/2 Akamai: Memperkuat opsi fingerprint HTTP/2, termasuk untuk Safari.
    • Upgrade ke versi curl terbaru: Memperbarui versi ke curl 8.7.1.
    • Dapat mengatur urutan ekstensi TLS dan GREASE: Menambahkan opsi untuk mengaktifkan/menonaktifkan GREASE dan mengatur urutan ekstensi TLS.
    • Persiapan dukungan browser berbasis Webkit dan Gecko: Sedang dikerjakan binary tunggal untuk Chrome dan Firefox.

1 komentar

 
GN⁺ 2024-12-31
Opini Hacker News
  • Ada proyek yang menyediakan API mirip requests melalui binding Python. Ini memudahkan melakukan permintaan HTTP tanpa harus menjalankan seluruh stack browser

    • Membuat terasa seperti akhir dari internet terbuka. Perusahaan besar ingin orang hanya menggunakan perangkat lunak yang mereka setujui, sambil mengidentifikasi pengguna
    • Pendekatannya datang dari banyak sudut seperti keamanan, bot, DDoS, dan lainnya, serta tidak terbatas hanya pada browser
    • Tujuan akhirnya tampak seperti perusahaan besar ingin melacak semua perilaku pengguna dan hanya mengizinkan tindakan yang disetujui
  • Di situs tertentu, deteksi browser berbasis JavaScript memang diperlukan. Bahkan puppeteer-extra-plugin-stealth pun bisa dilumpuhkan

    • TLS fingerprinting tampaknya tidak akan digunakan di situs yang tidak memiliki deteksi bot yang serius
    • Bisa berguna untuk memperoleh token/cookie berumur pendek lewat browser headless, lalu memakainya untuk melakukan permintaan dengan klien yang ringan
  • Skrip build-nya rumit. Menggunakan autotools, tetapi harus di-build dari subdirektori

    • Target build default bukan build proyek, melainkan teks bantuan
    • Saat memakai target build, dependensi tidak diatur dengan benar sehingga harus dijalankan beberapa kali
    • Tidak bisa menyelesaikan build karena kegagalan build BoringSSL. Sudah dicoba di Ubuntu 20 tetapi gagal
    • Juga dicoba di Ubuntu 22, namun build BoringSSL tetap gagal. Skrip make bekerja lebih baik
    • Masalah teratasi dengan menghapus -Werror. Daftar dependensinya tidak lengkap
    • Diperlukan libc++-XX-dev dan libc++abi-XX-dev. Proses instalasinya agak belum lengkap
    • BoringSSL adalah library besar sehingga waktu build-nya lama
  • Pernah membuat proyek serupa untuk Python. Sedang mencari orang yang bisa membantu build Windows

  • Hanya sedikit situs web yang menggunakan fingerprinting JA3/JA4. Ada juga situs yang memakai teknik lanjutan untuk mengaitkan header dan fingerprint

    • Fingerprint dari Burp Suite bisa dipakai untuk melakukan pekerjaan keamanan
  • Menggunakan ja3proxy untuk mengekspos proxy HTTP melalui utls. Tidak ada fitur khusus untuk HTTP/2

  • Di bahasa Go, paket tls-client yang paling sering digunakan

  • Ada kisah dan hal menarik terkait scraper farm AI yang melakukan DDoS ke situs

  • Saya rasa proyek seperti ini seharusnya tidak dipublikasikan. Musuh bisa saja ada di antara kita

    • Diskriminasi berdasarkan user-agent seharusnya ilegal. UE tampaknya bisa membawa perubahan, tetapi juga sangat tertarik pada identitas digital
  • Jika perlu membaca data dari situs web tertentu, mereka menggunakan informasi handshake agar tidak bisa dibaca lewat perangkat lunak

    • Saat melakukan permintaan HTTP, saya pada dasarnya memakai browser headless. Beberapa situs web tetap tidak bisa dibaca karena captcha dan sejenisnya