क्लाउडफ्लेयर को गो (chromedp + Scrapeless) के साथ कैसे हल करें
Lead Scraping Automation Engineer
TL;DR:
- क्लाउडफ्लेयर ब्राउज़र को स्कोर करता है, आगंतुक को नहीं। यह फिंगरप्रिंट स्थिरता, व्यवहार संकेत, और निकासी आईपी को पढ़ता है, फिर एक
cf_clearanceकुकी सेट करता है जो ब्राउज़र पर उसने विश्वास किया है — इसलिए गो में इसे साफ करना एक विश्वसनीय ब्राउज़र होना है, न कि एक पहेली का जवाब देना। - एक स्थानीय गो ब्राउज़र इस स्कोरिंग में तीन अक्षों पर असफल होता है:
navigator.webdriverसंकेत, हेडलेस-डिफ़ॉल्ट फिंगरप्रिंट, और डाटासेंटर निकासी आईपी। हाथ से बचाव बनाए रखना एक ट्रेडमिल है। - स्क्रैपलेस स्क्रैपिंग ब्राउज़र चुनौती को रेंडर के दौरान साफ करता है — असली स्व-विकसित क्रोमियम, प्रति-सेशन एक स्थिर फिंगरप्रिंट, और 195+ देशों में आवासीय निकासी, एक WebSocket एंडपॉइंट पर पहुँचा।
- आपका गो मानक क्रोमडिप रहता है।
chromedp.NewRemoteAllocatorको स्क्रैपलेस एंडपॉइंट पर इंगित करें, चुनौती के बाद की सामग्री की प्रतीक्षा करें, और पृष्ठ पढ़ें — केवल परिवर्तन कनेक्शन URL है। - जीवित सत्यापित: क्लाउड ब्राउज़र पर एक गो क्रोमडिप सत्र ने क्लाउडफ्लेयर चुनौती पृष्ठ को साफ किया, सफलता मार्कर
आपने क्लाउडफ्लेयर चुनौती को बायपास किया! :Dपढ़ा, और एकcf_clearanceकुकी प्राप्त की। - शुरू करने के लिए फ्री। नए स्क्रैपलेस खातों में फ्री स्क्रैपिंग ब्राउज़र रनटाइम शामिल है — app.scrapeless.com पर साइन अप करें।
परिचय: गो में क्लाउडफ्लेयर को साफ करना एक ब्राउज़र की समस्या है
क्लाउडफ्लेयर चुनौती एक छवि CAPTCHA नहीं है जिसे आप डिकोड करते हैं। यह बैकग्राउंड में चलती है और उस ब्राउज़र को ग्रेड करती है जिसने पृष्ठ लोड किया — चाहे फिंगरप्रिंट आंतरिक रूप से संगत हो, चाहे इंटरैक्शन संकेत मानव की तरह दिखें, और चाहे निकासी आईपी की एक साफ प्रतिष्ठा हो। जब स्कोर पास होता है, तो क्लाउडफ्लेयर एक cf_clearance कुकी सेट करता है और असली पृष्ठ लोड होता है। जब नहीं, तो आपको सामग्री के बजाय एक इंटरस्टिशियल मिलता है।
यह गो कार्य को पुनः स्वरूपित करता है। सबमिट करने के लिए कोई उत्तर नहीं है — काम एक ऐसा ब्राउज़र प्रस्तुत करना है जिस पर क्लाउडफ्लेयर पहले से ही विश्वास करता है। क्रोमडिप द्वारा संचालित एक स्थानीय हेडलेस क्रोमियम ऐसा नहीं कर सकता: यह navigator.webdriver प्रॉपर्टी के माध्यम से स्वचालन की घोषणा करता है, हेडलेस-डिफ़ॉल्ट फॉन्ट और कैनवस व्यवहार भेजता है, और एक आईपी से बाहर निकलता है जिसकी प्रतिष्ठा सेवाएं पहले से जानती हैं। आप अपने स्वयं के बचाव बनाए रख सकते हैं और फिर से बनाए रख सकते हैं जैसे-जैसे क्रोमियम और पहचान करने वाले कार्य करते हैं। यह गाइड छोटी सड़क लेता है: मानक क्रोमडिप से स्क्रैपलेस स्क्रैपिंग ब्राउज़र को संचालित करें, ताकि फिंगरप्रिंट, व्यवहार और निकासी आईपी सर्वर-साइड हैंडल किए जाएं और चुनौती एक सामान्य रेंडर के दौरान साफ हो जाए।
क्लाउडफ्लेयर वास्तव में क्या जांचता है
क्लाउडफ्लेयर की अपनी दस्तावेज़ीकरण एक सत्यापन चरण का वर्णन करती है जो आगंतुक को बाधित किए बिना चलता है। व्यवहार में, यह तीन चीजों को ग्रेड करता है और एक cf_clearance कुकी प्रदान करता है — एक मानक HTTP कुकी — जब ये पास होती हैं:
| क्लाउडफ्लेयर क्या पढ़ता है | एक स्थानीय गो ब्राउज़र इसमें क्यों असफल होता है |
|---|---|
| फिंगरप्रिंट स्थिरता | हेडलेस डिफ़ॉल्ट और webdriver फ्लैग एक असली क्रोम के साथ विरोधाभास करते हैं |
| व्यवहार संकेत | बिना एक सुसंगत ब्राउज़र सतह के स्क्रिप्टेड समय |
| निकासी आईपी प्रतिष्ठा | डाटासेंटर आईपी आवासीय आईपी की तुलना में खराब स्कोर करता है |
एक सुसंगत, विश्वसनीय ब्राउज़र किसी भी एकल बचाव से अधिक महत्वपूर्ण है — यही कारण है कि तीनों को सर्वर-साइड स्थानांतरित करना हाथ से रोल किए गए पैच की तुलना में अधिक टिकाऊ है।
स्क्रैपलेस स्क्रैपिंग ब्राउज़र क्यों
स्क्रैपलेस स्क्रैपिंग ब्राउज़र एक कस्टमाइज़ेबल, एंटी-डिटेक्शन क्लाउड ब्राउज़र है जिसे वेब क्रॉलर और एआई एजेंटों के लिए डिज़ाइन किया गया है। विशेष रूप से क्लाउडफ्लेयर के लिए, यह लाता है:
- वास्तविक स्व-विकसित क्रोमियम जो चुनौती जावास्क्रिप्ट को बिल्कुल क्रोम की तरह चलाता है, ताकि यह रुकने के बजाय हल हो जाए।
- एक स्थिर प्रति-सेशन फिंगरप्रिंट — कोई
navigator.webdriverसंकेत नहीं, कोई हेडलेस डिफ़ॉल्ट नहीं जो लीक हो। - 195+ देशों में आवासीय निकासी — क्लाउडफ्लेयर निकासी आईपी को स्कोर करता है, और एक आवासीय क्षेत्र साफ पढ़ता है जबकि डाटासेंटर आईपी नहीं।
- सत्र स्थिरता ताकि
cf_clearanceअनुदान को उसी सत्र में अनुरोधों में फिर से उपयोग किया जा सके। - एक कनेक्शन सतह — हर विकल्प उसी WebSocket एंडपॉइंट पर एक क्वेरी पैरामीटर है।
app.scrapeless.com पर मुफ्त योजना पर अपनी API कुंजी प्राप्त करें।
आवश्यकताएँ
- एक गो टूलचैन (गो 1.21 या नया)
github.com/chromedp/chromedpऔरgithub.com/chromedp/cdproto- एक स्क्रैपलेस खाता और API कुंजी — s'app.scrapeless.com पर साइन अप करें।
पूर्ण कनेक्शन विवरण स्क्रैपिंग ब्राउज़र प्रलेखन में उपलब्ध हैं।
स्थापित करें
अपने मॉड्यूल में क्रोमेडीपी खींचें। आप एक दूरस्थ ब्राउज़र से जुड़ते हैं, इसलिए स्थानीय क्रोम की आवश्यकता नहीं है।
bash
go get github.com/chromedp/chromedp
go get github.com/chromedp/cdproto
export SCRAPELESS_API_KEY=your_api_token_here # मुफ्त की प्राप्ति करें https://app.scrapeless.com पर
कनेक्ट करें और चुनौती को साफ करें
क्रोमेडीपी NewRemoteAllocator के साथ एक दूरस्थ ब्राउज़र से जुड़ता है। बिना किसी संशोधन के URL का उपयोग करने के लिए chromedp.NoModifyURL के साथ स्क्रैपलेस अंत बिंदु पास करें, फिर पोस्ट-चुनौती सामग्री की प्रतीक्षा करें। चुनौती रेंडर के दौरान हल की जाती है - कोई अलग हल कॉल नहीं है।
नोट: इसे चलाने के लिए क्रोमेडीपी मॉड्यूल के साथ एक गो टूलचेन की आवश्यकता होती है। इस ब्लॉक को स्क्रैपलेस क्लाउड ब्राउज़र के खिलाफ लाइव सत्यापित किया गया था; अपना API कुंजी जोड़ें और इसे
go runकरें।
go
package main
import (
"context"
"fmt"
"net/url"
"os"
"time"
"github.com/chromedp/cdproto/network"
"github.com/chromedp/chromedp"
)
func main() {
q := url.Values{}
q.Set("token", os.Getenv("SCRAPELESS_API_KEY"))
q.Set("sessionTTL", "180")
q.Set("proxyCountry", "US")
endpoint := "wss://browser.scrapeless.com/api/v2/browser?" + q.Encode()
target := "https://www.scrapingcourse.com/cloudflare-challenge"
allocCtx, cancel := chromedp.NewRemoteAllocator(context.Background(), endpoint, chromedp.NoModifyURL)
defer cancel()
ctx, cancel2 := chromedp.NewContext(allocCtx)
defer cancel2()
ctx, cancel3 := context.WithTimeout(ctx, 120*time.Second)
defer cancel3()
var cleared string
var cookies []*network.Cookie
err := chromedp.Run(ctx,
chromedp.Navigate(target),
chromedp.WaitVisible("#challenge-title", chromedp.ByID),
chromedp.Text("#challenge-title", &cleared, chromedp.ByID),
chromedp.ActionFunc(func(ctx context.Context) error {
c, err := network.GetCookies().Do(ctx)
cookies = c
return err
}),
)
if err != nil {
fmt.Println("त्रुटि:", err)
os.Exit(1)
}
hasClearance := false
for _, c := range cookies {
if c.Name == "cf_clearance" {
hasClearance = true
}
}
fmt.Println("साफ:", cleared)
fmt.Println("cf_clearance:", hasClearance)
}
इस कार्यक्रम का एक लाइव रन साफ: आपने क्लाउडफ्लेयर चुनौती को पास कर लिया! :D और cf_clearance: true मुद्रित किया - मानक क्रोमेडीपी, जो क्लाउड ब्राउज़र के माध्यम से स्रोतित है।
मुफ्त योजना पर अपना API कुंजी प्राप्त करें: app.scrapeless.com
विश्वसनीय क्लियर के लिए क्षेत्र स्थापित करें
क्लाउडफ्लेयर निकासी IP को स्कोर करता है, इसलिए proxyCountry को एक आवासीय क्षेत्र पर स्थापित करें। इसे किसी भी ISO देश कोड में बदलें। W3C WebDriver विनिर्देशन conforming स्वचालन की मांग करता है कि यह webdriver ध्वज का प्रदर्शन करे; क्लाउड ब्राउज़र इसे नहीं ले जाता, इसलिए एक साफ IP के पास एक साफ फिंगरप्रिंट होता है।
go
q := url.Values{}
q.Set("token", os.Getenv("SCRAPELESS_API_KEY"))
q.Set("sessionTTL", "180")
q.Set("proxyCountry", "US") // या "DE", "JP", "ANY"
जहां स्थानीय गो ब्राउज़र रुकते हैं
एक स्थानीय क्रोमेडीपी स्क्रैपर ठीक है जब तक कि क्लाउडफ्लेयर ब्राउज़र को स्कोर करना शुरू नहीं करता। फिर हेडलेस फिंगरप्रिंट, webdriver ध्वज, और डेटा सेंटर IP प्रत्येक एक अलग जांच में विफल हो जाता है, और इंटरस्टीशियल सामग्री को बदल देता है। ये फिंगरप्रिंट, व्यवहार और IP की समस्याएं हैं - तीनों क्लाउड ब्राउज़र सर्वर-साइड संभालता है। स्क्रैपलेस से कनेक्ट करने से उन्हें एक प्रबंधित सत्र पर सौंप दिया जाता है जबकि आपका क्रोमेडीपी क्रियाएं मानक रहती हैं।
आपको क्या वापस मिलता है
सत्र किसी भी क्रोमेडीपी सत्र की तरह व्यवहार करता है - Navigate, WaitVisible, Text, और CDP network.GetCookies सभी काम करते हैं। क्लाउड ब्राउज़र के माध्यम से क्लाउडफ्लेयर को साफ करने से कुछ ईमानदार अवलोकन:
navigator.webdriverअनुपस्थित है, इसलिए पहला जांच क्लाउडफ्लेयर चलाता है जैसे एक वास्तविक क्रोम।- निकासी IP
proxyCountryके साथ मेल खाती है - एक आवासीय क्षेत्र एक डेटा सेंटर IP की तुलना में कहीं अधिक विश्वसनीयता से साफ करता है। cf_clearanceएक पास के बाद मौजूद है - सहायक अनुरोधों के पार अनुदान ले जाने के लिए उसी सत्र का पुनः उपयोग करें।- जिद्दी पृष्ठों के लिए सत्र को गर्म करें - संरक्षित पृष्ठ से पहले उसी सत्र में साइट के होमपेज को पहले लोड करें, ताकि व्यवहार की सतह एक सामान्य दौरे की तरह दिखे।
निष्कर्ष: क्लाउडफ्लेयर को साफ करें, अपना गो रखें
Clearing Cloudflare in Go का मतलब एक चुनौती का समाधान करना नहीं है - यह एक ऐसे ब्राउज़र को प्रस्तुत करना है जिस पर Cloudflare भरोसा करता है। Scrapeless Scraping Browser उन तीन चीजों (फिंगरप्रिंट, व्यवहार, निकास IP) को सर्वर-साइड संभालता है, इसलिए आपका chromedp कोड केवल अपने कनेक्शन URL को बदलता है। proxyCountry को एक आवासीय क्षेत्र पर पिन करें, चुनौती के बाद की सामग्री के लिए प्रतीक्षा करें, और पास की पुष्टि करने के लिए cf_clearance पढ़ें। यदि आप इसके विपरीत Python से वही क्लाउड ब्राउज़र चलाना चाहते हैं, तो Scrapling उत्पादन-स्क्रेपर गाइड देखें, और Scrapeless मूल्य निर्धारण पृष्ठ पर योजनाओं की तुलना करें।
क्या आप अपने Cloudflare-Clearing पाइपलाइन का निर्माण करने के लिए तैयार हैं?
हमारी समुदाय में शामिल हों, एक मुफ्त योजना का दावा करें और उन डेवलपर्स से जुड़ें जो Cloudflare-संरक्षित साइटों की स्क्रैपिंग कर रहे हैं: Discord · Telegram।
app.scrapeless.com पर मुफ्त Scraping Browser रनटाइम के लिए साइन अप करें और chromedp को उस क्लाउड ब्राउज़र की ओर इंगित करें जो प्रस्तुत करते समय Cloudflare को साफ करता है।
सामान्य प्रश्न
प्रश्न: क्या मुझे एक अलग CAPTCHA-समाधान सेवा की आवश्यकता है?
एक पास करते हुए ब्राउज़र पर नहीं। Cloudflare मुख्य रूप से फिंगरप्रिंट, व्यवहार और IP को बैकग्राउंड में स्कोर करता है और एक cf_clearance कुकी जारी करता है। क्लाउड ब्राउज़र इस स्कोरिंग को सामान्य प्रस्तुतियों के दौरान पास होने के लिए बनाया गया है, इसलिए एक अलग पहेली चरण को स्थापित करने की आवश्यकता नहीं है।
प्रश्न: NoModifyURL के साथ NewRemoteAllocator क्यों?
NewRemoteAllocator chromedp को एक ऐसे ब्राउज़र से जोड़ता है जिसे उसने लॉन्च नहीं किया था। NoModifyURL chromedp को निर्देशित करता है कि Scrapeless WebSocket URL को ठीक उसी तरह उपयोग करें जैसा दिया गया है, बजाय इसके कि इसे स्थानीय DevTools एंडपॉइंट खोजने के लिए फिर से लिखा जाए।
प्रश्न: क्या मुझे एक प्रॉक्सी की आवश्यकता है?
नहीं। आवासीय निकास अंतर्निहित है - proxyCountry को एक क्षेत्र या ANY पर सेट करें। Cloudflare निकास IP को स्कोर करता है, इसलिए एक आवासीय क्षेत्र एक डाटा सेंटर पते की तुलना में अधिक विश्वसनीयता के साथ साफ करता है।
प्रश्न: कुछ पृष्ठों पर चुनौती अब भी दिखाई देती है - क्या मदद करता है?
proxyCountry को एक आवासीय क्षेत्र पर पिन करें और सुरक्षित पृष्ठ से पहले उसी सत्र में साइट के होमपेज को पहले लोड करके सत्र को गर्म करें, ताकि व्यवहारिक सतह सामान्य दौरे की तरह पढ़े।
प्रश्न: क्या Cloudflare को साफ करना कानूनी है?
सार्वजनिक रूप से उपलब्ध डेटा तक पहुंच सामान्यतः अनुमत है, लेकिन नियम क्षेत्राधिकार और साइट के अनुसार भिन्न होते हैं। लक्षित सेवा की शर्तों की समीक्षा करें, रोबोट निर्देशों का सम्मान करें, और किसी भी संवेदनशील मामले के लिए सलाह लें।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



