13 puan yazan GN⁺ 2024-12-31 | 1 yorum | WhatsApp'ta paylaş
  • 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

 
GN⁺ 2024-12-31
Hacker News görüşleri
  • Python binding’i üzerinden requests benzeri bir API sunan bir proje var. Bu, tüm tarayıcı yığınını çalıştırmadan HTTP isteklerini kolayca yapmayı sağlıyor

    • Açık internetin sonunu hissettiriyor. Büyük şirketler yalnızca kendi onayladıkları yazılımların kullanılmasını istiyor ve kullanıcıları tanımlamaya çalışıyor
    • Güvenlik, bot, DDoS gibi birçok açıdan yaklaşıyorlar ve bu yalnızca tarayıcılarla sınırlı değil
    • Nihai hedef, büyük şirketlerin kullanıcının tüm davranışlarını takip etmesi ve yalnızca onaylı davranışlara izin vermesi gibi görünüyor
  • Belirli sitelerde JavaScript tabanlı tarayıcı tespiti gerekiyor. puppeteer-extra-plugin-stealth bile etkisiz hale getirilebiliyor

    • TLS fingerprinting, ciddi bot tespiti olmayan sitelerde muhtemelen kullanılmıyor
    • Kısa ömürlü token/cookie’leri headless browser ile alıp, bunları hafif bir istemciyle istek yapmak için kullanmak faydalı olabilir
  • Build script’i karmaşık. autotools kullanılıyor ama alt dizinde build almak gerekiyor

    • Varsayılan build hedefi proje derlemesi değil, yardım metni
    • Build hedefi kullanıldığında bağımlılıklar düzgün ayarlanmadığı için birkaç kez çalıştırmak gerekiyor
    • BoringSSL build hatası nedeniyle derlemeyi tamamlayamadım. Ubuntu 20’de denedim ama başarısız oldu
    • Ubuntu 22’de de denedim ama BoringSSL build’i başarısız oldu. make script’i daha iyi çalıştı
    • -Werror kaldırılarak sorun çözüldü. Bağımlılık listesi eksik
    • libc++-XX-dev ve libc++abi-XX-dev gerekli. Kurulum süreci biraz eksik
    • BoringSSL büyük bir kütüphane olduğu için build süresi uzun
  • Python 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

    • Burp Suite’in fingerprint’ini kullanarak güvenlik çalışmaları yapılabilir
  • ja3proxy kullanarak utls üzerinden HTTP proxy açıyorum. HTTP/2 için özel bir özelliği yok

  • Go dilinde çoğunlukla tls-client paketi kullanılıyor

  • Yapay 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

    • User-agent ayrımcılığı yasa dışı olmalı. AB değişim getirebilir gibi görünüyor ama dijital kimliğe de büyük ilgi gösteriyor
  • Belirli web sitelerinden veri okunması gerektiğinde, handshake bilgileri kullanılarak bunun yazılımla okunması engelleniyor

    • HTTP istekleri için varsayılan olarak headless browser kullanıyorum. Bazı web siteleri CAPTCHA vb. nedeniyle yine okunamıyor