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
Opini Hacker News
Ada proyek yang menyediakan API mirip
requestsmelalui binding Python. Ini memudahkan melakukan permintaan HTTP tanpa harus menjalankan seluruh stack browserDi situs tertentu, deteksi browser berbasis JavaScript memang diperlukan. Bahkan
puppeteer-extra-plugin-stealthpun bisa dilumpuhkanSkrip build-nya rumit. Menggunakan autotools, tetapi harus di-build dari subdirektori
makebekerja lebih baik-Werror. Daftar dependensinya tidak lengkaplibc++-XX-devdanlibc++abi-XX-dev. Proses instalasinya agak belum lengkapPernah 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
Menggunakan ja3proxy untuk mengekspos proxy HTTP melalui utls. Tidak ada fitur khusus untuk HTTP/2
Di bahasa Go, paket
tls-clientyang paling sering digunakanAda 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
Jika perlu membaca data dari situs web tertentu, mereka menggunakan informasi handshake agar tidak bisa dibaca lewat perangkat lunak