🥳हमारे शक्तिशाली वेब स्क्रैपिंग टूलकिट तक पहुंचने के लिए स्क्रैपलेस कम्युनिटी और अपने नि: शुल्क परीक्षण का दावा करें!
वापस ब्लॉग पर

वेब स्क्रैपिंग के लिए Undetected ChromeDriver का उपयोग कैसे करें

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

17-Mar-2025

Undetected ChromeDriver की मदद से वेब स्क्रैपिंग के लिए एंटी-बॉट सिस्टम को कैसे बायपास करें, इसके बारे में जानें, साथ ही स्टेप-बाय-स्टेप गाइडेंस, उन्नत तरीके और प्रमुख सीमाएँ भी। साथ ही, पेशेवर स्क्रैपिंग आवश्यकताओं के लिए एक और मज़बूत विकल्प Scrapeless के बारे में जानें।

इस गाइड में, आप सीखेंगे:

  • Undetected ChromeDriver क्या है और यह कैसे उपयोगी हो सकता है
  • यह बॉट डिटेक्शन को कैसे कम करता है
  • वेब स्क्रैपिंग के लिए इसे Python के साथ कैसे उपयोग करें
  • उन्नत उपयोग और तरीके
  • इसकी प्रमुख सीमाएँ और कमियाँ
  • अनुशंसित विकल्प: Scrapeless
  • एंटी-बॉट डिटेक्शन मैकेनिज्म का तकनीकी विश्लेषण

आइए शुरू करते हैं!

Undetected ChromeDriver क्या है?


Undetected ChromeDriver एक Python लाइब्रेरी है जो Selenium के ChromeDriver का एक अनुकूलित संस्करण प्रदान करती है। इसे एंटी-बॉट सेवाओं जैसे:

  • Imperva
  • DataDome
  • Distil Networks
  • और भी ...

द्वारा डिटेक्शन को सीमित करने के लिए पैच किया गया है।

यह कुछ Cloudflare सुरक्षाओं को बायपास करने में भी मदद कर सकता है, हालाँकि यह अधिक चुनौतीपूर्ण हो सकता है।

यदि आपने कभी Selenium जैसे ब्राउज़र ऑटोमेशन टूल्स का उपयोग किया है, तो आप जानते हैं कि वे आपको प्रोग्रामेटिक रूप से ब्राउज़र को नियंत्रित करने देते हैं। इसे संभव बनाने के लिए, वे नियमित उपयोगकर्ता सेटअप से अलग तरीके से ब्राउज़र को कॉन्फ़िगर करते हैं।

एंटी-बॉट सिस्टम उन अंतरों, या "लीक" की तलाश करते हैं, स्वचालित ब्राउज़र बॉट की पहचान करने के लिए। Undetected ChromeDriver इन बता देने वाले संकेतों को कम करने के लिए Chrome ड्राइवरों को पैच करता है, जिससे बॉट डिटेक्शन कम हो जाता है। यह एंटी-स्क्रैपिंग उपायों से सुरक्षित वेब साइटों को स्क्रैप करने के लिए आदर्श है!

Undetected ChromeDriver कैसे काम करता है?


Undetected ChromeDriver निम्नलिखित तकनीकों का उपयोग करके Cloudflare, Imperva, DataDome और समान समाधानों से डिटेक्शन को कम करता है:

  • वास्तविक ब्राउज़रों द्वारा उपयोग किए जाने वाले लोगों की नक़ल करने के लिए Selenium वेरिएबल का नाम बदलना
  • डिटेक्शन से बचने के लिए वैध, वास्तविक दुनिया के User-Agent स्ट्रिंग का उपयोग करना
  • उपयोगकर्ता को प्राकृतिक मानव संपर्क का अनुकरण करने की अनुमति देना
  • वेबसाइटों को नेविगेट करते समय कुकीज़ और सत्रों का ठीक से प्रबंधन करना
  • IP ब्लॉकिंग को बायपास करने और दर सीमा को रोकने के लिए प्रॉक्सी के उपयोग को सक्षम करना

ये तरीके लाइब्रेरी द्वारा नियंत्रित ब्राउज़र को विभिन्न एंटी-स्क्रैपिंग बचावों को प्रभावी ढंग से बायपास करने में मदद करते हैं।

वेब स्क्रैपिंग के लिए Undetected ChromeDriver का उपयोग करना: स्टेप-बाय-स्टेप गाइड


चरण #1: पूर्वापेक्षाएँ और प्रोजेक्ट सेटअप

Undetected ChromeDriver की निम्नलिखित पूर्वापेक्षाएँ हैं:

  • Chrome का नवीनतम संस्करण
  • Python 3.6+: यदि आपके कंप्यूटर पर Python 3.6 या बाद का संस्करण स्थापित नहीं है, तो इसे आधिकारिक साइट से डाउनलोड करें और स्थापना निर्देशों का पालन करें।

नोट: लाइब्रेरी स्वचालित रूप से आपके लिए ड्राइवर बाइनरी को डाउनलोड और पैच करती है, इसलिए मैन्युअल रूप से ChromeDriver डाउनलोड करने की कोई आवश्यकता नहीं है।

अपने प्रोजेक्ट के लिए एक निर्देशिका बनाएँ:

language Copy
mkdir undetected-chromedriver-scraper
cd undetected-chromedriver-scraper
python -m venv env

वर्चुअल एनवायरनमेंट को सक्रिय करें:

language Copy
# Linux या macOS पर
source env/bin/activate

# Windows पर
env\Scripts\activate

चरण #2: Undetected ChromeDriver स्थापित करें

pip पैकेज के माध्यम से Undetected ChromeDriver स्थापित करें:

language Copy
pip install undetected_chromedriver

यह लाइब्रेरी स्वचालित रूप से Selenium स्थापित करेगी, क्योंकि यह इसकी निर्भरताओं में से एक है।

चरण #3: प्रारंभिक सेटअप

एक scraper.py फ़ाइल बनाएँ और undetected_chromedriver आयात करें:

language Copy
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
import json

# एक Chrome उदाहरण इनिशियलाइज़ करें
driver = uc.Chrome()

# लक्ष्य पृष्ठ से कनेक्ट करें
driver.get("https://scrapeless.com")

# स्क्रैपिंग तर्क...

# ब्राउज़र बंद करें
driver.quit()

चरण #4: स्क्रैपिंग तर्क लागू करें

अब आइए Apple पृष्ठ से डेटा निकालने के लिए तर्क जोड़ें:

language Copy
import undetected_chromedriver as uc
from selenium.webdriver.common.by import By
import json
import time

# एक Chrome वेब ड्राइवर उदाहरण बनाएँ
driver = uc.Chrome()

# Apple वेबसाइट से कनेक्ट करें
driver.get("https://www.apple.com/fr/")

# पृष्ठ को पूरी तरह से लोड होने के लिए कुछ समय दें
time.sleep(3)

# उत्पाद जानकारी संग्रहीत करने के लिए शब्दकोश
apple_products = {}

try:
    # उत्पाद अनुभाग खोजें (प्रदान किए गए HTML से कक्षाओं का उपयोग करके)
    product_sections = driver.find_elements(By.CSS_SELECTOR, ".homepage-section.collection-module .unit-wrapper")
    
    for i, section in enumerate(product_sections):
        try:
            # उत्पाद का नाम (हेडलाइन) निकालें
            headline = section.find_element(By.CSS_SELECTOR, ".headline, .logo-image").get_attribute("textContent").strip()
            
            # विवरण (उपशीर्षक) निकालें
            subhead_element = section.find_element(By.CSS_SELECTOR, ".subhead")
            subhead = subhead_element.text
            
            # यदि उपलब्ध हो तो लिंक प्राप्त करें
            link = ""
            try:
                link_element = section.find_element(By.CSS_SELECTOR, ".unit-link")
                link = link_element.get_attribute("href")
            except:
                pass
            
            apple_products[f"product_{i+1}"] = {
                "name": headline,
                "description": subhead,
                "link": link
            }
        except Exception as e:
            print(f"Error processing section {i+1}: {e}")
    
    # स्क्रैप किए गए डेटा को JSON में निर्यात करें
    with open("apple_products.json", "w", encoding="utf-8") as json_file:
        json.dump(apple_products, json_file, indent=4, ensure_ascii=False)
    
    print(f"Successfully scraped {len(apple_products)} Apple products")
    
except Exception as e:
    print(f"Error during scraping: {e}")

finally:
    # ब्राउज़र को बंद करें और उसके संसाधनों को जारी करें
    driver.quit()

इसे इसके साथ चलाएँ:

language Copy
python scraper.py

Undetected ChromeDriver: उन्नत उपयोग

अब जब आप जानते हैं कि लाइब्रेरी कैसे काम करती है, तो आप कुछ और उन्नत परिदृश्यों का पता लगाने के लिए तैयार हैं।

एक विशिष्ट Chrome संस्करण चुनें

version_main तर्क सेट करके लाइब्रेरी द्वारा उपयोग किए जाने वाले Chrome के किसी विशेष संस्करण को निर्दिष्ट कर सकते हैं:

language Copy
import undetected_chromedriver as uc

# Chrome के लक्ष्य संस्करण को निर्दिष्ट करें
driver = uc.Chrome(version_main=105)

With Syntax के साथ

जब आपको ड्राइवर की आवश्यकता न हो तो मैन्युअल रूप से quit() विधि को कॉल करने से बचने के लिए, आप with syntax का उपयोग कर सकते हैं:

language Copy
import undetected_chromedriver as uc

with uc.Chrome() as driver:
    driver.get("https://example.com")
    # आपके कोड का बाकी हिस्सा...

Undetected ChromeDriver की सीमाएँ

जबकि undetected_chromedriver एक शक्तिशाली Python लाइब्रेरी है, इसकी कुछ ज्ञात सीमाएँ हैं:

IP ब्लॉक

लाइब्रेरी आपके IP पते को छिपाती नहीं है। यदि आप किसी डेटा केंद्र से स्क्रिप्ट चला रहे हैं, तो संभावना है कि पता लगाया जाएगा। इसी प्रकार, यदि आपके होम IP की खराब प्रतिष्ठा है, तो आपको भी ब्लॉक किया जा सकता है।

अपने IP को छिपाने के लिए, आपको नियंत्रित ब्राउज़र को एक प्रॉक्सी सर्वर के साथ एकीकृत करने की आवश्यकता है, जैसा कि पहले दिखाया गया है।

GUI नेविगेशन के लिए कोई समर्थन नहीं

मॉड्यूल की आंतरिक कार्यप्रणाली के कारण, आपको get() विधि का उपयोग करके प्रोग्रामेटिक रूप से ब्राउज़ करना होगा। मैन्युअल नेविगेशन के लिए ब्राउज़र GUI का उपयोग करने से बचें—अपने कीबोर्ड या माउस का उपयोग करके पृष्ठ के साथ बातचीत करने से पता चलने का खतरा बढ़ जाता है।

हेडलेस मोड के लिए सीमित समर्थन

आधिकारिक तौर पर, हेडलेस मोड को undetected_chromedriver लाइब्रेरी द्वारा पूरी तरह से समर्थित नहीं किया गया है। हालाँकि, आप इसका उपयोग करके इसके साथ प्रयोग कर सकते हैं:

language Copy
driver = uc.Chrome(headless=True)

स्थिरता समस्याएँ

कई कारकों के कारण परिणाम भिन्न हो सकते हैं। डिटेक्शन एल्गोरिदम को समझने और उनका मुकाबला करने के निरंतर प्रयासों के अलावा, कोई गारंटी नहीं दी जाती है। एक स्क्रिप्ट जो आज एंटी-बॉट सिस्टम को सफलतापूर्वक बायपास करती है, कल विफल हो सकती है यदि सुरक्षा विधियों को अपडेट प्राप्त होता है।

अनुशंसित विकल्प: Scrapeless


Undetected ChromeDriver की सीमाओं को देखते हुए, Scrapeless ब्लॉक किए बिना वेब स्क्रैपिंग के लिए एक अधिक मज़बूत और विश्वसनीय विकल्प प्रदान करता है।

हम वेबसाइट की गोपनीयता की दृढ़ता से रक्षा करते हैं। इस ब्लॉग में सभी डेटा सार्वजनिक हैं और केवल क्रॉलिंग प्रक्रिया के प्रदर्शन के रूप में उपयोग किए जाते हैं। हम कोई भी जानकारी और डेटा सहेजते नहीं हैं।

Scrapeless बेहतर क्यों है

Scrapeless एक दूरस्थ ब्राउज़र सेवा है जो Undetected ChromeDriver दृष्टिकोण के अंतर्निहित समस्याओं का समाधान करती है:

  1. निरंतर अपडेट: Undetected ChromeDriver के विपरीत जो एंटी-बॉट सिस्टम अपडेट के बाद काम करना बंद कर सकता है, Scrapeless को इसकी टीम द्वारा लगातार अपडेट किया जाता है।

  2. अंतर्निहित IP रोटेशन: Scrapeless स्वचालित IP रोटेशन प्रदान करता है, जिससे Undetected ChromeDriver का IP ब्लॉकिंग समस्या समाप्त हो जाती है।

  3. अनुकूलित कॉन्फ़िगरेशन: Scrapeless ब्राउज़र पहले से ही डिटेक्शन से बचने के लिए अनुकूलित हैं, जो प्रक्रिया को बहुत सरल करता है।

  4. स्वचालित CAPTCHA समाधान: Scrapeless आपके द्वारा सामना किए जा सकने वाले CAPTCHA को स्वचालित रूप से हल कर सकता है।

  5. कई ढाँचों के साथ संगत: Playwright, Puppeteer और अन्य ऑटोमेशन टूल्स के साथ काम करता है।

निःशुल्क परीक्षण के लिए Scrapeless में साइन इन करें।

अनुशंसित पठन: [Puppeteer के साथ Cloudflare को कैसे बायपास करें]

वेब को स्क्रैप करने के लिए Scrapeless का उपयोग कैसे करें (ब्लॉक किए बिना)

यहाँ Playwright का उपयोग करके Scrapeless के साथ समान समाधान को लागू करने का तरीका बताया गया है:

चरण 1: पंजीकरण करें और Scrapeless में लॉग इन करें

चरण 2: Scrapeless API KEY प्राप्त करें

चरण 3: आप अपने प्रोजेक्ट में निम्न कोड को एकीकृत कर सकते हैं

language Copy
const {chromium} = require('playwright-core');

// Scrapeless कनेक्शन URL आपके टोकन के साथ
const connectionURL = 'wss://browser.scrapeless.com/browser?token=YOUR_TOKEN_HERE&session_ttl=180&proxy_country=ANY';

(async () => {
  // दूरस्थ Scrapeless ब्राउज़र से कनेक्ट करें
  const browser = await chromium.connectOverCDP(connectionURL);
  
  try {
    // एक नया पृष्ठ बनाएँ
    const page = await browser.newPage();
    
    // Apple की वेबसाइट पर जाएँ
    console.log('Navigating to Apple website...');
    await page.goto('https://www.apple.com/fr/', {
      waitUntil: 'domcontentloaded',
      timeout: 60000
    });
    
    console.log('Page loaded successfully');
    
    // उत्पाद अनुभागों के उपलब्ध होने की प्रतीक्षा करें
    await page.waitForSelector('.homepage-section.collection-module', { timeout: 10000 });
    
    // होमपेज से फीचर्ड उत्पाद प्राप्त करें
    const products = await page.evaluate(() => {
      const results = [];
      
      // सभी उत्पाद अनुभाग प्राप्त करें
      const productSections = document.querySelectorAll('.homepage-section.collection-module .unit-wrapper');
      
      productSections.forEach((section, index) => {
        try {
          // उत्पाद का नाम प्राप्त करें - .headline या .logo-image में हो सकता है
          const headlineEl = section.querySelector('.headline') || section.querySelector('.logo-image');
          const headline = headlineEl ? headlineEl.textContent.trim() : 'Unknown Product';
          
          // उत्पाद विवरण प्राप्त करें
          const subheadEl = section.querySelector('.subhead');
          const subhead = subheadEl ? subheadEl.textContent.trim() : '';
          
          // उत्पाद लिंक प्राप्त करें
          const linkEl = section.querySelector('.unit-link');
          const link = linkEl ? linkEl.getAttribute('href') : '';
          
          results.push({
            name: headline,
            description: subhead,
            link: link
          });
        } catch (err) {
          console.error(`Error processing section ${index}: ${err.message}`);
        }
      });
      
      return results;
    });
    
    // परिणाम प्रदर्शित करें
    console.log('Found Apple products:');
    console.log(JSON.stringify(products, null, 2));
    console.log(`Total products found: ${products.length}`);
    
  } catch (error) {
    console.error('An error occurred:', error);
  } finally {
    // ब्राउज़र बंद करें
    await browser.close();
    console.log('Browser closed');
  }
})();

आप डेवलपर सपोर्ट प्रोग्राम में भाग लेने और मुफ्त में 500k SERP API उपयोग क्रेडिट प्राप्त करने के लिए Scrapeless Discord से भी जुड़ सकते हैं।

उन्नत तकनीकी विश्लेषण

बॉट डिटेक्शन: यह कैसे काम करता है

एंटी-बॉट सिस्टम ऑटोमेशन का पता लगाने के लिए कई तकनीकों का उपयोग करते हैं:

  1. ब्राउज़र फिंगरप्रिंटिंग: एक अद्वितीय हस्ताक्षर बनाने के लिए दर्जनों ब्राउज़र गुणों (फ़ॉन्ट्स, कैनवास, WebGL, आदि) को इकट्ठा करता है।

  2. WebDriver डिटेक्शन: WebDriver API या उसके कलाकृतियों की उपस्थिति की तलाश करता है।

  3. व्यवहारिक विश्लेषण: माउस मूवमेंट, क्लिक, टाइपिंग गति का विश्लेषण करता है जो मनुष्यों और बॉट के बीच भिन्न होते हैं।

  4. नेविगेशन विसंगति का पता लगाना: बहुत तेज़ अनुरोधों या छवि/CSS लोडिंग की कमी जैसे संदिग्ध पैटर्न की पहचान करता है।

अनुशंसित पठन: [एंटी बॉट को कैसे बायपास करें]

Undetected ChromeDriver डिटेक्शन को कैसे बायपास करता है

Undetected ChromeDriver इन डिटेक्शन को बायपास करके:

  1. WebDriver संकेतकों को हटाना: navigator.webdriver प्रॉपर्टी और अन्य WebDriver ट्रेस को समाप्त करता है।

  2. Cdc_ को पैच करना: Chrome ड्राइवर नियंत्रक चर को संशोधित करता है जो ChromeDriver के ज्ञात हस्ताक्षर हैं।

  3. यथार्थवादी User-Agents का उपयोग करना: डिफ़ॉल्ट User-Agents को अप-टू-डेट स्ट्रिंग्स से बदलता है।

  4. कॉन्फ़िगरेशन परिवर्तनों को कम करना: Chrome ब्राउज़र के डिफ़ॉल्ट व्यवहार में परिवर्तनों को कम करता है।

तकनीकी कोड जो दिखाता है कि Undetected ChromeDriver ड्राइवर को कैसे पैच करता है:

language Copy
Undetected ChromeDriver सोर्स कोड से सरलीकृत अंश

def _patch_driver_executable():
    """
    ऑटोमेशन के बता देने वाले संकेतों को दूर करने के लिए ChromeDriver बाइनरी को पैच करता है
    """
    linect = 0
    replacement = os.urandom(32).hex()
    with io.open(self.executable_path, "r+b") as fh:
        for line in iter(lambda: fh.readline(), b""):
            if b"cdc_" in line.lower():
                fh.seek(-len(line), 1)
                newline = re.sub(
                    b"cdc_.{22}", b"cdc_" + replacement.encode(), line
                )
                fh.write(newline)
                linect += 1
    return linect

Scrapeless अधिक प्रभावी क्यों है

Scrapeless एक अलग दृष्टिकोण अपनाता है:

  1. पूर्व-कॉन्फ़िगर किया गया वातावरण: मानव उपयोगकर्ताओं की नकल करने के लिए पहले से ही अनुकूलित ब्राउज़र का उपयोग करना।

  2. क्लाउड-आधारित अवसंरचना: उचित फिंगरप्रिंटिंग के साथ क्लाउड में ब्राउज़र चलाना।

  3. बुद्धिमान प्रॉक्सी रोटेशन: लक्ष्य साइट के आधार पर स्वचालित रूप से IP को घुमाना।

  4. उन्नत फिंगरप्रिंट प्रबंधन: पूरे सत्र में सुसंगत ब्राउज़र फिंगरप्रिंट बनाए रखना।

  5. WebRTC, कैनवास और प्लगइन दमन: सामान्य फिंगरप्रिंटिंग तकनीकों को अवरुद्ध करना।

निःशुल्क परीक्षण के लिए Scrapeless में साइन इन करें।

निष्कर्ष

इस लेख में, आपने सीखा है कि Undetected ChromeDriver का उपयोग करके Selenium में बॉट डिटेक्शन से कैसे निपटें। यह लाइब्रेरी ब्लॉक किए बिना वेब स्क्रैपिंग के लिए ChromeDriver का एक पैच किया गया संस्करण प्रदान करती है।

चुनौती यह है कि Cloudflare जैसी उन्नत एंटी-बॉट तकनीकें अभी भी आपकी स्क्रिप्ट का पता लगाने और उन्हें ब्लॉक करने में सक्षम होंगी। undetected_chromedriver जैसी लाइब्रेरी अस्थिर हैं—जबकि वे आज काम कर सकती हैं, वे कल काम नहीं कर सकती हैं।

पेशेवर स्क्रैपिंग आवश्यकताओं के लिए, Scrapeless जैसे क्लाउड-आधारित समाधान अधिक मज़बूत विकल्प प्रदान करते हैं। वे विशेष रूप से एंटी-बॉट उपायों को बायपास करने के लिए डिज़ाइन किए गए पूर्व-कॉन्फ़िगर किए गए दूरस्थ ब्राउज़र प्रदान करते हैं, जिसमें IP रोटेशन और CAPTCHA समाधान जैसी अतिरिक्त सुविधाएँ होती हैं।

Undetected ChromeDriver और Scrapeless के बीच चुनाव आपकी विशिष्ट आवश्यकताओं पर निर्भर करता है:

  • Undetected ChromeDriver: छोटी परियोजनाओं के लिए अच्छा, मुफ़्त और ओपन-सोर्स, लेकिन अधिक रखरखाव की आवश्यकता होती है और कम विश्वसनीय हो सकता है।
  • Scrapeless: पेशेवर स्क्रैपिंग आवश्यकताओं के लिए बेहतर, अधिक विश्वसनीय, लगातार अपडेट किया जाता है, लेकिन सदस्यता लागत के साथ आता है।

इन एंटी-बॉट बायपास तकनीकों के काम करने के तरीके को समझकर, आप अपनी वेब स्क्रैपिंग परियोजनाओं के लिए सही उपकरण चुन सकते हैं और स्वचालित डेटा संग्रह के सामान्य नुकसान से बच सकते हैं।

स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।

सबसे लोकप्रिय लेख

सूची