
Cloudflare के एंटी-बॉट पेज को बायपास करने के लिए एक Python मॉड्यूल।
Zied Boughdir द्वारा उन्नत
सभी विशेषताओं का कोर कार्यक्षमता के लिए 100% सफलता दर के साथ परीक्षण किया गया:
Cloudflare के एंटी-बॉट पेज (जिसे "I'm Under Attack Mode" या IUAM के रूप में भी जाना जाता है) को बायपास करने के लिए एक Python मॉड्यूल, Requests के साथ कार्यान्वित। इस उन्नत संस्करण में Cloudflare v2 चैलेंज, प्रॉक्सी रोटेशन, स्टेल्थ मोड और अधिक के लिए समर्थन शामिल है। Cloudflare समय-समय पर अपनी तकनीकें बदलता रहता है, इसलिए मैं इस रिपॉज़िटरी को अक्सर अपडेट करूँगा।
यह तब उपयोगी हो सकता है यदि आप Cloudflare द्वारा सुरक्षित किसी वेबसाइट को स्क्रेप या क्रॉल करना चाहते हैं। Cloudflare का एंटी-बॉट पेज वर्तमान में केवल यह जाँचता है कि क्लाइंट Javascript का समर्थन करता है या नहीं, हालाँकि वे भविष्य में अतिरिक्त तकनीकें जोड़ सकते हैं।
Cloudflare द्वारा लगातार अपने सुरक्षा पेज को बदलने और कठोर बनाने के कारण, Javascript चैलेंज हल करने के लिए cloudscraper को JavaScript Engine/इंटरप्रेटर की आवश्यकता होती है। यह स्क्रिप्ट को Cloudflare के Javascript को स्पष्ट रूप से डीऑबफस्केट और पार्स किए बिना एक सामान्य वेब ब्राउज़र का आसानी से प्रतिरूपण करने की अनुमति देता है।
संदर्भ के लिए, Cloudflare इस प्रकार के पेजों के लिए जो डिफ़ॉल्ट संदेश उपयोग करता है वह यह है:``` Checking your browser before accessing website.com.
This process is automatic. Your browser will redirect to your requested content shortly.
Please allow up to 5 seconds...
Any script using cloudscraper will sleep for ~5 seconds for the first visit to any site with Cloudflare anti-bots enabled, though no delay will occur after the first request.
cloudscraper का उपयोग करने वाली कोई भी स्क्रिप्ट Cloudflare anti-bots सक्षम वाली किसी भी साइट की पहली यात्रा पर लगभग 5 सेकंड के लिए रुकेगी, हालाँकि पहले अनुरोध के बाद कोई देरी नहीं होगी।
# स्थापना
बस `pip install cloudscraper` चलाएँ। PyPI पैकेज https://pypi.org/project/cloudscraper/ पर उपलब्ध है।```bash
pip install cloudscraper
वैकल्पिक रूप से, इस रिपॉजिटरी को क्लोन करें और python setup.py install चलाएँ।
यदि आप पहले मूल cloudscraper पैकेज का उपयोग कर रहे थे, तो अब आप इस उन्नत संस्करण का सीधे उपयोग कर सकते हैं:```python
import cloudscraper # Enhanced version
The API संगत बनी हुई है, इसलिए आपको केवल अपने कोड में import स्टेटमेंट बदलने की आवश्यकता है। सभी फ़ंक्शन कॉल और पैरामीटर उसी तरह काम करते हैं।
### कोडबेस संरचना
कोडबेस को बेहतर रखरखाव और भ्रम कम करने के लिए सुव्यवस्थित किया गया है:
- **एकल मॉड्यूल**: सभी कोड अब `cloudscraper` मॉड्यूल में है
- **अनावश्यकता हटाई गई**: अनावश्यक निर्देशिकाओं को हटा दिया गया है
- **अपडेट किए गए टेस्ट**: सभी टेस्ट फ़ाइलों को `cloudscraper` मॉड्यूल का उपयोग करने के लिए अपडेट किया गया है
यह कोडबेस को साफ और बनाए रखने में आसान बनाता है, साथ ही मूल API का उपयोग करने वाले मौजूदा कोड के साथ पिछड़ी संगतता सुनिश्चित करता है।
## cloudscraper की मुख्य विशेषताएं
| विशेषता | विवरण | स्थिति |
|---------|-------------|--------|
| **🆕 एक्ज़ीक्यूटेबल संगतता** | PyInstaller, cx_Freeze, auto-py-to-exe रूपांतरण के लिए पूर्ण समाधान | ✅ **FIXED** |
| **🆕 v3 JavaScript VM चुनौतियाँ** | Cloudflare की नवीनतम JavaScript VM-आधारित चुनौतियों के लिए समर्थन | ✅ **NEW** |
| **🆕 टर्नस्टाइल समर्थन** | Cloudflare के नए Turnstile CAPTCHA विकल्प के लिए समर्थन | ✅ **NEW** |
| **आधुनिक चुनौती समर्थन** | v1, v2, v3 और Turnstile Cloudflare चुनौतियों के लिए बेहतर समर्थन | ✅ पूर्ण |
| **प्रॉक्सी रोटेशन** | कई रणनीतियों के साथ अंतर्निहित स्मार्ट प्रॉक्सी रोटेशन | ✅ उन्नत |
| **स्टील्थ मोड** | पहचान से बचने के लिए मानव-जैसे व्यवहार का अनुकरण | ✅ उन्नत |
| **ब्राउज़र एमुलेशन** | Chrome और Firefox के लिए उन्नत ब्राउज़र फ़िंगरप्रिंटिंग | ✅ स्थिर |
| **JavaScript हैंडलिंग** | चुनौती समाधान के लिए बेहतर JS इंटरप्रेटर (डिफ़ॉल्ट के रूप में js2py) | ✅ उन्नत |
| **कैप्चा सॉल्वर** | कई CAPTCHA समाधान सेवाओं के लिए समर्थन | ✅ स्थिर |
# निर्भरताएँ
- **Python 3.8+** (Python 3.6 और 3.7 के लिए समर्थन हटा दिया गया)
- **[Requests](https://github.com/psf/requests)** >= 2.31.0
- **[requests_toolbelt](https://pypi.org/project/requests-toolbelt/)** >= 1.0.0
- **[pyparsing](https://pypi.org/project/pyparsing/)** >= 3.1.0
- **[pyOpenSSL](https://pypi.org/project/pyOpenSSL/)** >= 24.0.0
- **[pycryptodome](https://pypi.org/project/pycryptodome/)** >= 3.20.0
- **[websocket-client](https://pypi.org/project/websocket-client/)** >= 1.7.0
- **[js2py](https://pypi.org/project/Js2Py/)** >= 0.74
- **[brotli](https://pypi.org/project/Brotli/)** >= 1.1.0
- **[certifi](https://pypi.org/project/certifi/)** >= 2024.2.2
`python setup.py install` स्वचालित रूप से Python निर्भरताएँ स्थापित करेगा। आपके द्वारा उपयोग करने का निर्णय किए गए javascript इंटरप्रेटर और/या इंजन ही एकमात्र चीज़ें हैं जिन्हें आपको स्वयं स्थापित करने की आवश्यकता है, js2py को छोड़कर जो डिफ़ॉल्ट के रूप में आवश्यकताओं का हिस्सा है।
# जावास्क्रिप्ट इंटरप्रेटर और इंजन
हम निम्नलिखित Javascript इंटरप्रेटर/इंजन का समर्थन करते हैं।
- **[ChakraCore](https://github.com/microsoft/ChakraCore):** लाइब्रेरी बाइनरी [यहाँ](https://www.github.com/VeNoMouS/cloudscraper/tree/ChakraCore/) भी पाई जा सकती हैं।
- **[js2py](https://github.com/PiotrDabkowski/Js2Py):** >=0.74 **(उन्नत संस्करण के लिए डिफ़ॉल्ट)**
- **native**: स्व-निर्मित मूल python सॉल्वर
- **[Node.js](https://nodejs.org/)**
- **[V8](https://github.com/sony/v8eval/):** हम Sony के [v8eval](https://v8.dev)() python मॉड्यूल का उपयोग करते हैं।
# उपयोग
cloudscraper का उपयोग करने का सबसे सरल तरीका `create_scraper()` को कॉल करना है।```python
import cloudscraper
scraper = cloudscraper.create_scraper() # returns a CloudScraper instance
# Or: scraper = cloudscraper.CloudScraper() # CloudScraper inherits from requests.Session
print(scraper.get("http://somesite.com").text) # => "<!DOCTYPE html><html><head>..."
बस इतना ही...
इस session ऑब्जेक्ट से Cloudflare anti-bot द्वारा सुरक्षित वेबसाइटों को भेजे गए किसी भी अनुरोध को स्वचालित रूप से संभाल लिया जाएगा। जो वेबसाइटें Cloudflare का उपयोग नहीं करतीं, उनके साथ सामान्य व्यवहार किया जाएगा। आपको कुछ और कॉन्फ़िगर या कॉल करने की आवश्यकता नहीं है, और आप प्रभावी रूप से सभी वेबसाइटों को ऐसे मान सकते हैं जैसे वे किसी भी चीज़ से सुरक्षित नहीं हैं।
आप cloudscraper का उपयोग बिल्कुल उसी तरह करते हैं जैसे आप Requests का उपयोग करते हैं। cloudScraper एक Requests Session ऑब्जेक्ट के समान काम करता है, बस requests.get() या requests.post() कॉल करने के बजाय, आप scraper.get() या scraper.post() कॉल करते हैं।
अधिक जानकारी के लिए Requests' documentation देखें।
cloudscraper का उपयोग करने वाले Python अनुप्रयोगों को executables में परिवर्तित करते समय user agent की समस्या पूरी तरह से ठीक कर दी गई है!
Python ऐप्स को executables में परिवर्तित करते समय (PyInstaller, cx_Freeze, auto-py-to-exe, आदि का उपयोग करके), उपयोगकर्ताओं को user agent या agent_user कार्यक्षमता से संबंधित त्रुटियों का सामना करना पड़ता था, क्योंकि browsers.json फ़ाइल ठीक से शामिल नहीं की गई थी।
cloudscraper v2.7.0 में एक स्वचालित fallback प्रणाली शामिल है:
विकल्प 1: बस अपना executable बनाएं (स्वचालित रूप से काम करता है):```bash pyinstaller your_app.py
**विकल्प 2: संपूर्ण यूज़र एजेंट डेटाबेस शामिल करें** (अनुशंसित):```bash
pyinstaller --add-data "cloudscraper/user_agent/browsers.json;cloudscraper/user_agent/" your_app.py
सभी निष्पादन योग्य संगतता का पूरी तरह से परीक्षण किया गया है:``` ✅ Normal operation with browsers.json ✅ Fallback operation without browsers.json ✅ PyInstaller environment simulation ✅ All browser/platform combinations ✅ HTTP requests with fallback user agents
आपके cloudscraper अनुप्रयोग अब एक्ज़ीक्यूटेबल में परिवर्तित होने पर पूरी तरह काम करेंगे! 🎉
## 🆕 Cloudflare v3 JavaScript VM चैलेंज समर्थन
### v3 चैलेंज क्या हैं?
Cloudflare v3 चैलेंज बॉट सुरक्षा तकनीक में नवीनतम विकास का प्रतिनिधित्व करते हैं। पारंपरिक v1 और v2 चैलेंज के विपरीत, v3 चैलेंज:
- **JavaScript वर्चुअल मशीन में चलते हैं**: चैलेंज सैंडबॉक्स्ड JavaScript वातावरण में निष्पादित होते हैं
- **उन्नत पहचान का उपयोग करते हैं**: स्वचालित व्यवहार का पता लगाने के लिए अधिक परिष्कृत एल्गोरिदम
- **गतिशील कोड उत्पन्न करते हैं**: चैलेंज कोड गतिशील रूप से बनाया जाता है और रिवर्स-इंजीनियर करना कठिन होता है
- **आधुनिक सुरक्षा प्रदान करते हैं**: Cloudflare की सबसे वर्तमान एंटी-बॉट तकनीक
### मूल v3 उपयोग```python
import cloudscraper
# v3 support is enabled by default
scraper = cloudscraper.create_scraper()
response = scraper.get("https://example.com")
print(response.text)
import cloudscraper
scraper = cloudscraper.create_scraper( interpreter='js2py', # Recommended for v3 challenges delay=5, # Allow more time for complex challenges debug=True # Enable debug output to see v3 detection )
response = scraper.get("https://example.com") print(response.text)
### विभिन्न JavaScript इंटरप्रेटर के साथ v3
सभी JavaScript इंटरप्रेटर v3 चुनौतियों के साथ काम करते हैं:```python
# Test different interpreters for v3 challenges
interpreters = ['js2py', 'nodejs', 'native']
for interpreter in interpreters:
try:
scraper = cloudscraper.create_scraper(interpreter=interpreter)
response = scraper.get("https://example.com")
print(f"✅ {interpreter}: Success ({response.status_code})")
except Exception as e:
print(f"❌ {interpreter}: Failed - {str(e)}")
जब डीबग मोड सक्षम होता है, तो आपको v3 चैलेंज डिटेक्शन क्रियाशील दिखाई देगा:```python scraper = cloudscraper.create_scraper(debug=True) response = scraper.get("https://example.com")
### v3 के लिए प्रदर्शन संबंधी विचार
v3 चुनौतियाँ अधिक जटिल हैं और अतिरिक्त समय की आवश्यकता हो सकती है:```python
# Recommended settings for v3 challenges
scraper = cloudscraper.create_scraper(
delay=5, # Longer delay for complex challenges
interpreter='js2py', # Most compatible interpreter
enable_stealth=True # Additional stealth for v3 detection
)
import cloudscraper
scraper = cloudscraper.create_scraper()
response = scraper.get("https://example.com") print(f"Status: {response.status_code}") print(f"Content length: {len(response.text)}")
### उदाहरण 2: अधिकतम संगतता के लिए उन्नत कॉन्फ़िगरेशन```python
import cloudscraper
# Advanced configuration for challenging websites
scraper = cloudscraper.create_scraper(
# Challenge handling
interpreter='js2py', # Best compatibility for v3 challenges
delay=5, # Extra time for complex challenges
# Stealth mode
enable_stealth=True,
stealth_options={
'min_delay': 2.0,
'max_delay': 6.0,
'human_like_delays': True,
'randomize_headers': True,
'browser_quirks': True
},
# Browser emulation
browser='chrome',
# Debug mode
debug=True
)
response = scraper.get("https://example.com")
import cloudscraper
scraper = cloudscraper.create_scraper( captcha={ 'provider': '2captcha', 'api_key': 'your_2captcha_api_key' }, debug=True # See when Turnstile is detected and solved )
response = scraper.get("https://turnstile-protected-site.com") print(f"Successfully bypassed Turnstile: {response.status_code}")
### उदाहरण 4: v3 सपोर्ट के साथ प्रॉक्सी रोटेशन```python
import cloudscraper
proxies = [
'http://user:[email protected]:8080',
'http://user:[email protected]:8080',
'http://user:[email protected]:8080'
]
scraper = cloudscraper.create_scraper(
# Proxy rotation
rotating_proxies=proxies,
proxy_options={
'rotation_strategy': 'smart',
'ban_time': 300
},
# v3 challenge support
interpreter='js2py',
delay=5,
# Stealth mode
enable_stealth=True
)
# Each request may use a different proxy
for i in range(5):
response = scraper.get("https://example.com")
print(f"Request {i+1}: {response.status_code}")
import cloudscraper
def test_challenge_handling(): """Test different challenge types with comprehensive configuration"""
scraper = cloudscraper.create_scraper(
interpreter='js2py',
delay=5,
debug=True,
enable_stealth=True
)
test_urls = [
"https://example1.com", # Might have v1 challenges
"https://example2.com", # Might have v2 challenges
"https://example3.com", # Might have v3 challenges
"https://example4.com", # Might have Turnstile
]
for url in test_urls:
try:
response = scraper.get(url)
print(f"✅ {url}: Success ({response.status_code})")
except Exception as e:
print(f"❌ {url}: Failed - {str(e)}")
test_challenge_handling()
## 🧪 परीक्षण और सत्यापन
### व्यापक परीक्षण सूट
cloudscraper में सभी सुविधाओं के सही ढंग से काम करने की पुष्टि करने के लिए व्यापक परीक्षण स्क्रिप्ट शामिल हैं:```bash
# Test all features
python test_all_features.py --debug
# Test specifically v3 challenges
python test_v3_challenges.py --debug
# Test with specific interpreter
python test_v3_challenges.py --interpreter nodejs
कोर कार्यक्षमता के लिए लाइब्रेरी का 100% सफलता दर के साथ पूरी तरह से परीक्षण किया गया है:
*बाहरी कॉन्फ़िगरेशन की आवश्यकता है (प्रॉक्सी/API कुंजियाँ)
आप डिबग मोड के साथ लाइब्रेरी का मैन्युअल परीक्षण कर सकते हैं ताकि चुनौती का पता लगाने की क्रिया देख सकें:```python import cloudscraper
scraper = cloudscraper.create_scraper(debug=True) response = scraper.get("https://example.com")
### समस्या निवारण
यदि आपको समस्याएँ आती हैं:
1. **डीबग मोड सक्षम करें** विस्तृत जानकारी देखने के लिए
2. **विभिन्न इंटरप्रेटर आज़माएँ** (js2py, nodejs, native)
3. **विलंब बढ़ाएँ** जटिल चुनौतियों के लिए
4. **स्टील्थ मोड सक्षम करें** अतिरिक्त सुरक्षा के लिए
5. **प्रॉक्सी कॉन्फ़िगरेशन जाँचें** यदि प्रॉक्सी का उपयोग कर रहे हैं```python
# Troubleshooting configuration
scraper = cloudscraper.create_scraper(
debug=True, # See what's happening
interpreter='js2py', # Most compatible
delay=10, # Extra time
enable_stealth=True # Additional protection
)
यदि आप Cloudflare v1 (अप्रचलित) हल करने का प्रयास भी नहीं करना चाहते हैं..
| पैरामीटर | मान | डिफ़ॉल्ट |
|---|---|---|
| disableCloudflareV1 | (boolean) | False |
scraper = cloudscraper.create_scraper(disableCloudflareV1=True)
### Cloudflare V2 अक्षम करें
#### विवरण
यदि आप Cloudflare v2 को हल करने का प्रयास भी नहीं करना चाहते..
#### पैरामीटर
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|disableCloudflareV2|(boolean)|False|
#### उदाहरण```python
scraper = cloudscraper.create_scraper(disableCloudflareV2=True)
यदि आप Cloudflare v3 JavaScript VM समाधान का प्रयास भी नहीं करना चाहते..
| पैरामीटर | मान | डिफ़ॉल्ट |
|---|---|---|
| disableCloudflareV3 | (boolean) | False |
scraper = cloudscraper.create_scraper(disableCloudflareV3=True)
### Turnstile अक्षम करें
#### विवरण
यदि आप Cloudflare Turnstile को हल करने का प्रयास भी नहीं करना चाहते..
#### पैरामीटर
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|disableTurnstile|(boolean)|False|
#### उदाहरण```python
scraper = cloudscraper.create_scraper(disableTurnstile=True)
IP-आधारित ब्लॉकिंग से बचने के लिए प्रॉक्सी की सूची में स्वचालित रूप से घुमाएँ।
| पैरामीटर | मान | डिफ़ॉल्ट |
|---|---|---|
| rotating_proxies | (list or dict) | None |
| proxy_options | (dict) | {} |
proxy_options पैरामीटर| पैरामीटर | मान | डिफ़ॉल्ट |
|---|---|---|
| rotation_strategy | (string) sequential, random, or |
proxies = [ 'http://user:[email protected]:8080', 'http://user:[email protected]:8080', 'http://user:[email protected]:8080' ]
scraper = cloudscraper.create_scraper( rotating_proxies=proxies, proxy_options={ 'rotation_strategy': 'smart', 'ban_time': 300 } )
### स्टेल्थ मोड
#### विवरण
स्टेल्थ तकनीकों को सक्षम करें ताकि मानव व्यवहार की बेहतर नकल हो सके और पहचान से बचा जा सके।
#### पैरामीटर
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|enable_stealth|(boolean)|True|
|stealth_options|(dict)|{}|
#### `stealth_options` पैरामीटर
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|min_delay|(float) अनुरोधों के बीच न्यूनतम विलंब|1.0|
|max_delay|(float) अनुरोधों के बीच अधिकतम विलंब|5.0|
|human_like_delays|(boolean) अनुरोधों के बीच यादृच्छिक विलंब जोड़ें|True|
|randomize_headers|(boolean) फ़िंगरप्रिंटिंग से बचने के लिए हेडर को यादृच्छिक करें|True|
|browser_quirks|(boolean) ब्राउज़र-विशिष्ट quirks लागू करें|True|
#### उदाहरण```python
scraper = cloudscraper.create_scraper(
enable_stealth=True,
stealth_options={
'min_delay': 2.0,
'max_delay': 6.0,
'human_like_delays': True,
'randomize_headers': True,
'browser_quirks': True
}
)
Brotli डीकंप्रेशन समर्थन जोड़ा गया है, और यह डिफ़ॉल्ट रूप से सक्षम है।
| पैरामीटर | मान | डिफ़ॉल्ट |
|---|---|---|
| allow_brotli | (boolean) | True |
scraper = cloudscraper.create_scraper(allow_brotli=False)
### ब्राउज़र / User-Agent फ़िल्टरिंग
#### विवरण
नियंत्रित करें कि User-Agent "यादृच्छिक रूप से" कैसे और कौन सा चुना जाता है।
#### पैरामीटर
इन्हें `create_scraper()`, `get_tokens()`, `get_cookie_string()` के तर्क के रूप में पारित किया जा सकता है।
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|browser|(string) `chrome` or `firefox`|None|
या
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|browser|(string) `chrome` or `firefox`|None|
##### `browser` *_dict_* पैरामीटर
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|browser|(string) `chrome` or `firefox`|None|
|mobile|(boolean)|True|
|desktop|(boolean)|True|
|platform|(string) `'linux', 'windows', 'darwin', 'android', 'ios'`|None|
|custom|(string)|None|
#### उदाहरण```python
scraper = cloudscraper.create_scraper(browser='chrome')
या```python
scraper = cloudscraper.create_scraper( browser={ 'browser': 'chrome', 'platform': 'android', 'desktop': False } )
scraper = cloudscraper.create_scraper( browser={ 'browser': 'firefox', 'platform': 'windows', 'mobile': False } )
scraper = cloudscraper.create_scraper( browser={ 'custom': 'ScraperBot/1.0', } )
### डिबग
#### विवरण
डिबगिंग के लिए अनुरोध की हेडर और सामग्री जानकारी प्रिंट करता है।
#### पैरामीटर
इसे आपके `cloudscraper` ऑब्जेक्ट के माध्यम से एक विशेषता के रूप में सेट किया जा सकता है या `create_scraper()`, `get_tokens()`, `get_cookie_string()` को तर्क के रूप में पास किया जा सकता है।
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|debug|(boolean)|False|
#### उदाहरण```python
scraper = cloudscraper.create_scraper(debug=True)
Cloudflare IUAM चुनौती के लिए ब्राउज़र को चुनौती का उत्तर सबमिट करने से पहले ~5 सेकंड प्रतीक्षा करनी होती है, यदि आप इस विलंब को ओवरराइड करना चाहते हैं।
इसे आपके cloudscraper ऑब्जेक्ट के माध्यम से एक विशेषता के रूप में सेट किया जा सकता है या create_scraper(), get_tokens(), get_cookie_string() में तर्क के रूप में पारित किया जा सकता है।
| पैरामीटर | मान | डिफ़ॉल्ट |
|---|---|---|
| delay | (float) | IUAM पृष्ठ से निकाला गया |
scraper = cloudscraper.create_scraper(delay=10)
### मौजूदा सत्र
#### विवरण:
यदि आपके पास पहले से कोई Requests सत्र है, तो आप उस सत्र का उपयोग जारी रखने के लिए इसे `create_scraper()` फ़ंक्शन में पास कर सकते हैं।
#### पैरामीटर
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|sess|(requests.session)|None|
#### उदाहरण```python
session = requests.session()
scraper = cloudscraper.create_scraper(sess=session)
दुर्भाग्य से, Requests की सभी सत्र विशेषताएँ आसानी से स्थानांतरित नहीं होतीं, इसलिए यदि इसके साथ आपको समस्या आती है,
आपको अपनी प्रारंभिक सत्र आरंभीकरण कॉल को बदल देना चाहिए
से:```python sess = requests.session()
प्रति:```python
sess = cloudscraper.create_scraper()
cloudscraper वर्तमान में निम्नलिखित जावास्क्रिप्ट इंजन/इंटरप्रेटर का समर्थन करता है
इसे आपके cloudscraper ऑब्जेक्ट के माध्यम से एक एट्रिब्यूट के रूप में सेट किया जा सकता है या create_scraper(), get_tokens(), get_cookie_string() के तर्क के रूप में पारित किया जा सकता है।
| पैरामीटर | मान | डिफ़ॉल्ट |
|---|---|---|
| interpreter | (string) | js2py |
scraper = cloudscraper.create_scraper(interpreter='nodejs')
#### नोट
बेहतर संस्करण `js2py` को डिफ़ॉल्ट इंटरप्रेटर के रूप में उपयोग करता है क्योंकि यह आधुनिक Cloudflare चैलेंजों के साथ बेहतर संगतता प्रदान करता है। यदि आपको समस्याएँ आती हैं, तो आप अन्य इंटरप्रेटर आज़मा सकते हैं।
------
### थर्ड-पार्टी कैप्चा सॉल्वर
#### विवरण
`cloudscraper` वर्तमान में निम्नलिखित थर्ड-पार्टी कैप्चा सॉल्वर्स का समर्थन करता है, यदि आपको उनकी आवश्यकता हो।
- **[2captcha](https://www.2captcha.com/)**
- **[anticaptcha](https://www.anti-captcha.com/)**
- **[CapSolver](https://capsolver.com/)**
- **[CapMonster Cloud](https://capmonster.cloud/)**
- **[deathbycaptcha](https://www.deathbycaptcha.com/)**
- **[9kw](https://www.9kw.eu/)**
- **__return_response__**
#### नोट
मैं और अधिक थर्ड-पार्टी सॉल्वर्स जोड़ने पर काम कर रहा हूँ। यदि आप चाहते हैं कि कोई ऐसी सेवा जोड़ी जाए जो वर्तमान में समर्थित नहीं है, तो कृपया github पर सपोर्ट टिकट बनाएँ।
##### आवश्यक पैरामीटर
आप इन्हें अपने `cloudscraper` ऑब्जेक्ट के माध्यम से एक एट्रिब्यूट के रूप में सेट कर सकते हैं या `create_scraper()`, `get_tokens()`, `get_cookie_string()` को तर्क के रूप में पारित कर सकते हैं।
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|captcha|(dict)|None|
#### टर्नस्टाइल समर्थन
Cloudflare Turnstile एक नया CAPTCHA विकल्प है जो पारंपरिक CAPTCHA को अधिक उपयोगकर्ता-अनुकूल सत्यापन प्रणाली के साथ प्रतिस्थापित करता है। cloudscraper अब उन्हीं captcha प्रदाताओं का उपयोग करके Turnstile चैलेंजों को हल करने का समर्थन करता है जिनसे आप पहले से परिचित हैं।
##### उदाहरण```python
# Using 2captcha to solve Turnstile challenges
scraper = cloudscraper.create_scraper(
captcha={
'provider': '2captcha',
'api_key': 'your_2captcha_api_key'
}
)
# The Turnstile challenge will be automatically detected and solved
response = scraper.get('https://example.com')
captcha पैरामीटरयदि प्रॉक्सी सेट हैं तो आप no_proxy को True पर सेट करके 2captcha को प्रॉक्सी भेजना अक्षम कर सकते हैं।
scraper = cloudscraper.create_scraper( captcha={ 'provider': '2captcha', 'api_key': 'your_2captcha_api_key' } )
#### anticaptcha
##### आवश्यक `captcha` पैरामीटर
|पैरामीटर|मान|आवश्यक|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `anticaptcha`|हाँ||
|api_key|(string)|हाँ||
|no_proxy|(boolean)|नहीं|False|
##### टिप्पणी
यदि प्रॉक्सी सेट हैं तो आप `no_proxy` को `True` पर सेट करके anticaptcha को प्रॉक्सी भेजना अक्षम कर सकते हैं।
##### उदाहरण```python
scraper = cloudscraper.create_scraper(
captcha={
'provider': 'anticaptcha',
'api_key': 'your_anticaptcha_api_key'
}
)
captcha पैरामीटर| पैरामीटर | मान | आवश्यक | डिफ़ॉल्ट |
|---|---|---|---|
| provider | (string) captchaai | हाँ | |
| api_key | (string) | हाँ |
scraper = cloudscraper.create_scraper( captcha={ 'provider': 'capsolver', 'api_key': 'your_captchaai_api_key' } )
#### CapMonster Cloud
##### आवश्यक `captcha` पैरामीटर
|पैरामीटर|मान|आवश्यक|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `capmonster`| हाँ||
|clientKey|(string)| हाँ||
|no_proxy|(boolean)|नहीं|False|
##### नोट
यदि प्रॉक्सी सेट हैं, तो आप `no_proxy` को `True` पर सेट करके CapMonster को प्रॉक्सी भेजना अक्षम कर सकते हैं।
##### उदाहरण```python
scraper = cloudscraper.create_scraper(
captcha={
'provider': 'capmonster',
'clientKey': 'your_capmonster_clientKey'
}
)
captcha पैरामीटरscraper = cloudscraper.create_scraper( captcha={ 'provider': 'deathbycaptcha', 'username': 'your_deathbycaptcha_username', 'password': 'your_deathbycaptcha_password', } )
#### 9kw
##### आवश्यक `captcha` पैरामीटर
|पैरामीटर|मान|आवश्यक|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|:-----:|
|provider|(string) `9kw`|हाँ||
|api_key|(string)|हाँ||
|maxtimeout|(int)|नहीं|180|
##### उदाहरण```python
scraper = cloudscraper.create_scraper(
captcha={
'provider': '9kw',
'api_key': 'your_9kw_api_key',
'maxtimeout': 300
}
)
इसका उपयोग करें यदि आप Captcha को हल किए बिना अनुरोध का response payload चाहते हैं।
captcha पैरामीटर| पैरामीटर | मान | आवश्यक | डिफ़ॉल्ट |
|---|---|---|---|
| provider | (string) return_response | हाँ |
scraper = cloudscraper.create_scraper( captcha={'provider': 'return_response'} )
## एकीकरण
`cloudscraper` को अन्य अनुप्रयोगों और टूल्स के साथ एकीकृत करना आसान है। Cloudflare टोकन के रूप में दो कुकीज़ का उपयोग करता है: एक यह सत्यापित करने के लिए कि आप उनके चैलेंज पेज को पार कर गए हैं, और एक आपके सत्र को ट्रैक करने के लिए। चैलेंज पेज को बायपास करने के लिए, आपके द्वारा किए जाने वाले सभी HTTP अनुरोधों में इन दोनों कुकीज़ को (उपयुक्त user-agent के साथ) शामिल करें।
केवल कुकीज़ (एक dictionary के रूप में) प्राप्त करने के लिए, `cloudscraper.get_tokens()` का उपयोग करें। उन्हें पूर्ण `Cookie` HTTP हेडर के रूप में प्राप्त करने के लिए, `cloudscraper.get_cookie_string()` का उपयोग करें।
`get_tokens` और `get_cookie_string` दोनों Requests के सामान्य keyword तर्क स्वीकार करते हैं (जैसे `get_tokens(url, proxies={"http": "socks5://localhost:9050"})`)।
अधिक जानकारी के लिए कृपया [Requests के request arguments पर दस्तावेज़](http://docs.python-requests.org/en/master/api/#requests.Session.request) पढ़ें।
------
### User-Agent हैंडलिंग
दोनों एकीकरण फ़ंक्शन `(cookie, user_agent_string)` का एक tuple लौटाते हैं।
**आपको टोकन प्राप्त करने और उन टोकन के साथ अनुरोध करने के लिए समान user-agent string का उपयोग करना अनिवार्य है, अन्यथा Cloudflare आपको bot के रूप में चिह्नित करेगा।**
इसका मतलब है कि आपको लौटाई गई `user_agent_string` को उस स्क्रिप्ट, टूल या सेवा को देना होगा जिसे आप टोकन दे रहे हैं (जैसे curl, या एक विशेष स्क्रैपिंग टूल), और उसे HTTP अनुरोध करते समय उस पास किए गए user-agent का उपयोग करना चाहिए।
------
### एकीकरण उदाहरण
याद रखें, इन कुकीज़ को प्राप्त करते या उपयोग करते समय आपको हमेशा समान user-agent का उपयोग करना चाहिए। ये सभी फ़ंक्शन `(cookie_dict, user_agent_string)` का एक tuple लौटाते हैं।
------
#### प्रॉक्सी के माध्यम से cookie dict प्राप्त करना
`get_tokens` Cloudflare के session cookies वाले Python dict को लौटाने के लिए एक सुविधाजनक फ़ंक्शन है। प्रदर्शन के लिए, हम इस अनुरोध को प्रॉक्सी का उपयोग करने के लिए कॉन्फ़िगर करेंगे। (कृपया ध्यान दें कि यदि आप प्रॉक्सी के माध्यम से Cloudflare clearance टोकन का अनुरोध करते हैं, तो उन टोकन को सर्वर पर भेजते समय आपको हमेशा उसी प्रॉक्सी का उपयोग करना चाहिए। Cloudflare चाहता है कि चैलेंज-हल करने वाला IP और विज़िटर IP समान रहें।)
यदि आप प्रॉक्सी का उपयोग नहीं करना चाहते हैं, तो बस `proxies` keyword तर्क न दें। ये सुविधाजनक फ़ंक्शन Requests के सभी सामान्य keyword तर्कों का समर्थन करते हैं, जैसे `params`, `data`, और `headers`।```python
import cloudscraper
# Using a single proxy
proxies = {"http": "http://localhost:8080", "https": "http://localhost:8080"}
tokens, user_agent = cloudscraper.get_tokens("http://somesite.com", proxies=proxies)
print(tokens)
# => {
'cf_clearance': 'c8f913c707b818b47aa328d81cab57c349b1eee5-1426733163-3600',
'__cfduid': 'dd8ec03dfdbcb8c2ea63e920f1335c1001426733158',
'cf_chl_2': 'some_value',
'cf_chl_prog': 'some_value'
}
# Using proxy rotation
rotating_proxies = [
'http://user:[email protected]:8080',
'http://user:[email protected]:8080',
'http://user:[email protected]:8080'
]
tokens, user_agent = cloudscraper.get_tokens(
"http://somesite.com",
rotating_proxies=rotating_proxies,
proxy_options={
'rotation_strategy': 'smart',
'ban_time': 300
},
enable_stealth=True,
stealth_options={
'min_delay': 2.0,
'max_delay': 6.0
}
)
get_cookie_string एक सुविधाजनक फ़ंक्शन है जो टोकन्स को एक स्ट्रिंग के रूप में लौटाता है, ताकि इसे Cookie HTTP हेडर मान के रूप में उपयोग किया जा सके।
यह तब उपयोगी है जब आप मैन्युअल रूप से HTTP अनुरोध तैयार कर रहे हों, या किसी बाहरी एप्लिकेशन या लाइब्रेरी के साथ काम कर रहे हों जो कच्चे कुकी हेडर को आगे पास करता है।```python import cloudscraper
cookie_value, user_agent = cloudscraper.get_cookie_string('http://somesite.com')
print('GET / HTTP/1.1\nCookie: {}\nUser-Agent: {}\n'.format(cookie_value, user_agent))
#### curl उदाहरण
यहाँ cloudscraper को curl के साथ एकीकृत करने का एक उदाहरण है। जैसा कि आप देख सकते हैं, आपको बस cookies और user-agent को curl में पास करना है।```python
import subprocess
import cloudscraper
# With get_tokens() cookie dict:
# tokens, user_agent = cloudscraper.get_tokens("http://somesite.com")
# cookie_arg = 'cf_clearance={}; __cfduid={}'.format(tokens['cf_clearance'], tokens['__cfduid'])
# With get_cookie_string() cookie header; recommended for curl and similar external applications:
cookie_arg, user_agent = cloudscraper.get_cookie_string('http://somesite.com')
# With a custom user-agent string you can optionally provide:
# ua = "Scraping Bot"
# cookie_arg, user_agent = cloudscraper.get_cookie_string("http://somesite.com", user_agent=ua)
result = subprocess.check_output(
[
'curl',
'--cookie',
cookie_arg,
'-A',
user_agent,
'http://somesite.com'
]
)
छोटा किया गया संस्करण। Cloudflare द्वारा सुरक्षित किसी भी साइट की पेज सामग्री को curl के माध्यम से प्रिंट करता है।
चेतावनी: वास्तविक कोड में subprocess के साथ shell=True का उपयोग खतरनाक हो सकता है।```python
url = "http://somesite.com"
cookie_arg, user_agent = cloudscraper.get_cookie_string(url)
cmd = "curl --cookie {cookie_arg} -A {user_agent} {url}"
print(
subprocess.check_output(
cmd.format(
cookie_arg=cookie_arg,
user_agent=user_agent,
url=url
),
shell=True
)
)
### क्रिप्टोग्राफी
#### विवरण
क्लाइंट और सर्वर के बीच संचार को नियंत्रित करें
#### पैरामीटर
`create_scraper()` के लिए एक तर्क के रूप में पारित किया जा सकता है।
|पैरामीटर|मान|डिफ़ॉल्ट|
|-------------|:-------------:|:-----:|
|cipherSuite|(string)|None|
|ecdhCurve|(string)|prime256v1|
|server_hostname|(string)|None|
#### उदाहरण```python
# Some servers require the use of a more complex ecdh curve than the default "prime256v1"
# It may can solve handshake failure
scraper = cloudscraper.create_scraper(ecdhCurve='secp384r1')
". Actually in prompt, after INPUT: there is nothing? The message seems: "INPUT:\n\n" maybe empty. They may expect us to produce empty translation. We must not add commentary. So output empty. But maybe there is hidden? The prompt ends after "INPUT:" and blank. I'd output empty string.
Need ensure no preamble. Final maybe empty. But can we output nothing? In API context maybe should output empty string. We'll do that.```python
scraper = cloudscraper.create_scraper(server_hostname='www.somesite.com') scraper.get( 'https://backend.hosting.com/', headers={'Host': 'www.somesite.com'} )
# उन्नत सुविधाएँ
cloudscraper का यह उन्नत संस्करण आधुनिक Cloudflare सुरक्षा तंत्रों को बायपास करने के लिए बेहतर क्षमताएँ प्रदान करता है:
1. **Cloudflare v2 Challenge Support** - आधुनिक चुनौतियों का बेहतर प्रबंधन
2. **Proxy Rotation** - एकाधिक रणनीतियों के साथ स्मार्ट रोटेशन
3. **Stealth Mode** - मानव-जैसे व्यवहार का अनुकरण
4. **Improved JavaScript Handling** - बेहतर JS इंटरप्रेटर (डिफ़ॉल्ट रूप से js2py)
5. **Enhanced Cookie Management** - नए Cloudflare कुकी प्रकारों के लिए समर्थन
## हाल के अपडेट
- **Codebase Cleanup**: अनावश्यक कोड हटाया गया और एकल मॉड्यूल में समेकित किया गया
- **Test Suite Updates**: सभी परीक्षण अब cloudscraper मॉड्यूल का उपयोग करते हैं
- **Documentation**: स्पष्ट उदाहरणों और उपयोग निर्देशों के साथ README में सुधार किया गया
## सभी उन्नत सुविधाओं का उपयोग करने का उदाहरण```python
import cloudscraper
# Create a scraper with all enhanced features
scraper = cloudscraper.create_scraper(
# Use js2py interpreter for better compatibility
interpreter='js2py',
# Enable proxy rotation
rotating_proxies=[
'http://user:[email protected]:8080',
'http://user:[email protected]:8080',
'http://user:[email protected]:8080'
],
proxy_options={
'rotation_strategy': 'smart',
'ban_time': 300
},
# Enable stealth mode
enable_stealth=True,
stealth_options={
'min_delay': 2.0,
'max_delay': 6.0,
'human_like_delays': True,
'randomize_headers': True,
'browser_quirks': True
},
# Set browser fingerprint
browser={
'browser': 'chrome',
'platform': 'windows',
'mobile': False
},
# Enable debugging if needed
debug=False
)
# Make a request to a Cloudflare-protected site
response = scraper.get('https://example.com')
print(response.text)
Cloudflare v3 JavaScript VM चैलेंज समर्थन
उन्नत Turnstile समर्थन
JavaScript इंटरप्रेटर संवर्द्धन
चैलेंज पहचान
कॉन्फ़िगरेशन विकल्प
disableCloudflareV3 पैरामीटर जोड़ा गयाव्यापक परीक्षण सुइट
दस्तावेज़ीकरण
लाइब्रेरी में कार्यक्षमता सत्यापित करने के लिए व्यापक परीक्षण स्क्रिप्ट शामिल हैं:
यह सत्यापित करने के लिए त्वरित परीक्षण कि लाइब्रेरी काम कर रही है:```python import cloudscraper
scraper = cloudscraper.create_scraper(browser='chrome')
response = scraper.get('https://example.com') print(f"Status code: {response.status_code}")
### टेस्ट सूट चलाना
लाइब्रेरी में कई टेस्ट स्क्रिप्ट शामिल हैं:```bash
# Run the comprehensive test suite
python test_cloudscraper_comprehensive.py https://example-cloudflare-site.com
# Test with a specific Cloudflare-protected site
python test_cloudflare_site.py https://example-cloudflare-site.com --browser firefox --stealth
यदि आपको समस्याएँ आती हैं:
समस्याओं या प्रश्नों के लिए, कृपया GitHub रिपॉज़िटरी पर एक issue खोलें।```bash pip install --upgrade cloudscraper # Always use the latest version
| सुविधा | परीक्षण कवरेज | पास दर |
|---|
| मूल अनुरोध | ✅ पूर्ण | 100% |
| यूज़र एजेंट हैंडलिंग | ✅ पूर्ण | 100% |
| Cloudflare v1 चुनौतियाँ | ✅ पूर्ण | 100% |
| Cloudflare v2 चुनौतियाँ | ✅ पूर्ण | 100% |
| Cloudflare v3 चुनौतियाँ | ✅ नया | 100% |
| स्टील्थ मोड | ✅ पूर्ण | 100% |
| जावास्क्रिप्ट इंटरप्रेटर | ✅ सभी समर्थित | 100% |
| प्रॉक्सी रोटेशन | ✅ पूर्ण | N/A* |
| टर्नस्टाइल समर्थन | ✅ पूर्ण | N/A* |
smartsequential |
| ban_time | (int) प्रॉक्सी को विफलता के बाद प्रतिबंधित करने के लिए सेकंड | 300 |
| पैरामीटर | मान | आवश्यक | डिफ़ॉल्ट |
|---|
| provider | (string) 2captcha | हाँ | |
| api_key | (string) | हाँ | |
| no_proxy | (boolean) | नहीं | False |
| पैरामीटर | मान | आवश्यक | डिफ़ॉल्ट |
|---|
| provider | (string) deathbycaptcha | हाँ | |
| username | (string) | हाँ | |
| password | (string) | हाँ |