curl-impersonate एक विशेष curl build है जो प्रमुख web browsers जैसे Chrome, Edge, Safari, Firefox की नकल कर सकता है
- TLS और HTTP handshake बिल्कुल असली browser की तरह करता है
- इसे command line tool के रूप में इस्तेमाल किया जा सकता है या library के रूप में integrate किया जा सकता है
- महत्व
- जब कोई HTTP client किसी TLS website तक पहुँचता है, तो वह TLS handshake करता है, और इस प्रक्रिया में client की विशेषताओं की पहचान की जा सकती है
curl-impersonate इन handshakes को असली browser जैसा बना देता है ताकि web services client की पहचान न कर सकें
- तकनीकी implementation
- curl को Google की TLS library BoringSSL का उपयोग करके compile किया गया है.
- विभिन्न TLS extensions और SSL options में बदलाव किए गए हैं.
- HTTP/2 connection settings बदली गई हैं.
- curl को non-standard flags के साथ चलाया जाता है.
- समर्थित browsers
- Chrome, Edge, Safari, Firefox सहित browsers के कई versions की नकल की जा सकती है.
- हर browser के लिए scripts उपलब्ध हैं.
- बुनियादी उपयोग
- हर supported browser के लिए
curl-impersonate चलाने वाली wrapper scripts दी गई हैं.
- उदाहरण:
curl_chrome123 https://www.wikipedia.org
- उन्नत उपयोग
libcurl-impersonate library का उपयोग करके API के माध्यम से configuration किया जा सकता है.
CURL_IMPERSONATE environment variable का उपयोग करके runtime पर library को बदला जा सकता है.
- इंस्टॉलेशन
- Windows, Linux, macOS के लिए precompiled binaries GitHub releases page पर उपलब्ध हैं.
- Docker image के माध्यम से भी इसका उपयोग किया जा सकता है.
- यह repository
curl-impersonate का एक अधिक सक्रिय fork है, जिसमें निम्नलिखित मुख्य अंतर हैं
- Encrypted Client Hello(ECH) support: Chrome 119 में जोड़ी गई ECH सुविधा शामिल है.
- ZSTD compression support: Chrome 123 में जोड़े गए ZSTD compression protocol का support.
- X25519Kyber768 curve support: Chrome 124 में जोड़ी गई नई cryptographic curve शामिल है.
- Akamai HTTP/2 fingerprint options expansion: Safari सहित HTTP/2 fingerprint options को और मजबूत किया गया है.
- नवीनतम curl version में upgrade: version को curl 8.7.1 तक अपडेट किया गया है.
- TLS extension order और GREASE configuration: TLS extension order और GREASE को enable/disable करने के options जोड़े गए हैं.
- Webkit और Gecko आधारित browser support की तैयारी: Chrome और Firefox के लिए single binary पर काम जारी है.
1 टिप्पणियां
Hacker News राय
एक प्रोजेक्ट है जो Python binding के ज़रिए requests जैसी API देता है। यह पूरे browser stack को चलाए बिना HTTP requests करना आसान बनाता है
कुछ sites पर JavaScript-आधारित browser detection की ज़रूरत पड़ती है। puppeteer-extra-plugin-stealth को भी निष्प्रभावी किया जा सकता है
build script जटिल है। autotools इस्तेमाल होता है, लेकिन build subdirectory में करना पड़ता है
-Werrorहटाने से समस्या हल हुई। dependency list अधूरी हैlibc++-XX-devऔरlibc++abi-XX-devकी ज़रूरत है। installation process थोड़ा अधूरा हैPython के लिए ऐसा ही एक प्रोजेक्ट बनाया है। Windows build में मदद करने वाले लोगों की तलाश है
बहुत कम websites JA3/JA4 fingerprinting का इस्तेमाल करती हैं। कुछ sites advanced techniques का भी इस्तेमाल करती हैं जो headers और fingerprints को आपस में जोड़ती हैं
ja3proxy का इस्तेमाल करके utls के माध्यम से HTTP proxy expose किया जाता है। HTTP/2 के लिए कोई खास फीचर नहीं है
Go भाषा में मुख्य रूप से tls-client package इस्तेमाल होता है
AI scraper farm द्वारा sites को DDoS करने से जुड़ी बातें और दिलचस्पी
लगता है ऐसे projects प्रकाशित नहीं होने चाहिए। दुश्मन हमारे बीच हो सकता है
अगर किसी खास website से data पढ़ना हो, तो वे handshake जानकारी का इस्तेमाल करके software से पढ़ने से रोकते हैं