curl-impersonate, Chrome, Edge, Safari ve Firefox gibi başlıca web tarayıcılarını taklit edebilen özel bir curl derlemesidir
- TLS ve HTTP el sıkışmasını gerçek tarayıcılarla aynı şekilde gerçekleştirir
- Komut satırı aracı olarak kullanılabilir veya bir kütüphane olarak entegre edilebilir
- Önemi
- HTTP istemcileri TLS web sitelerine erişirken TLS el sıkışması yapar ve bu süreçte istemcinin özellikleri tanımlanabilir
curl-impersonate, bu el sıkışmalarını gerçek tarayıcılarla aynı hale getirerek web servislerinin istemciyi ayırt etmesini zorlaştırır
- Teknik uygulama
- curl, Google'ın TLS kütüphanesi BoringSSL kullanılarak derlenir.
- Çeşitli TLS uzantıları ve SSL seçenekleri değiştirilir.
- HTTP/2 bağlantı ayarları değiştirilir.
- curl, standart dışı bayraklarla çalıştırılır.
- Desteklenen tarayıcılar
- Chrome, Edge, Safari ve Firefox'un çeşitli sürümleri taklit edilebilir.
- Her tarayıcı için ayrı script'ler sağlanır.
- Temel kullanım
- Desteklenen her tarayıcı için
curl-impersonate çalıştıran wrapper script'ler sunulur.
- Örnek:
curl_chrome123 https://www.wikipedia.org
- Gelişmiş kullanım
libcurl-impersonate kütüphanesi kullanılarak API üzerinden yapılandırma yapılabilir.
CURL_IMPERSONATE ortam değişkeni kullanılarak kütüphane çalışma zamanında değiştirilebilir.
- Kurulum
- Windows, Linux ve macOS için önceden derlenmiş ikili dosyalar GitHub sürüm sayfasında sunulur.
- Docker imajı üzerinden de kullanılabilir.
- Bu depo,
curl-impersonate'in daha aktif geliştirilen bir fork'udur ve şu temel farklara sahiptir
- Encrypted Client Hello (ECH) desteği: Chrome 119'da sunulan ECH özelliği eklenmiştir.
- ZSTD sıkıştırma desteği: Chrome 123'te sunulan ZSTD sıkıştırma protokolü desteklenir.
- X25519Kyber768 eğrisi desteği: Chrome 124'te sunulan yeni şifreleme eğrisi eklenmiştir.
- Akamai HTTP/2 parmak izi seçeneklerinin genişletilmesi: Safari dahil HTTP/2 parmak izi seçenekleri güçlendirilmiştir.
- En güncel curl sürümüne yükseltme: Sürüm curl 8.7.1'e güncellenmiştir.
- TLS uzantı sırası ve GREASE yapılandırılabilir: TLS uzantılarının sırası ile GREASE'i etkinleştirme/devre dışı bırakma seçenekleri eklenmiştir.
- WebKit ve Gecko tabanlı tarayıcı desteğine hazırlık: Chrome ve Firefox için tek bir ikili dosya üzerinde çalışmalar sürmektedir.
1 yorum
Hacker News görüşleri
Python binding’i üzerinden
requestsbenzeri bir API sunan bir proje var. Bu, tüm tarayıcı yığınını çalıştırmadan HTTP isteklerini kolayca yapmayı sağlıyorBelirli sitelerde JavaScript tabanlı tarayıcı tespiti gerekiyor.
puppeteer-extra-plugin-stealthbile etkisiz hale getirilebiliyorBuild script’i karmaşık.
autotoolskullanılıyor ama alt dizinde build almak gerekiyormakescript’i daha iyi çalıştı-Werrorkaldırılarak sorun çözüldü. Bağımlılık listesi eksiklibc++-XX-devvelibc++abi-XX-devgerekli. Kurulum süreci biraz eksikPython için benzer bir proje yaptım. Windows build’i konusunda yardımcı olacak birini arıyorum
Az sayıda web sitesi JA3/JA4 fingerprinting kullanıyor. Header’larla fingerprint’i ilişkilendiren gelişmiş teknikler kullanan siteler de var
ja3proxykullanarakutlsüzerinden HTTP proxy açıyorum. HTTP/2 için özel bir özelliği yokGo dilinde çoğunlukla
tls-clientpaketi kullanılıyorYapay zeka scraper farm’larının sitelere DDoS yapmasıyla ilgili hikâyeler ve ilginçlikler
Bu tür projelerin yayımlanmaması gerektiğini düşünüyorum. Düşman aramızda olabilir
Belirli web sitelerinden veri okunması gerektiğinde, handshake bilgileri kullanılarak bunun yazılımla okunması engelleniyor