Back to Blog

API वाइल्डबेरीज़, ओज़ोन और अविटो के लिए बार-बार अनुरोध करने पर ब्लॉक होने से कैसे बचें

API मार्केटप्लेस की कीमतों और स्टॉक्स को पार्स करते समय ब्लॉक होने के कारणों की जांच करते हैं, और बिना बैन के स्थिर काम के लिए प्रॉक्सी, देरी और हेडर को सही तरीके से सेट करने का तरीका दिखाते हैं।

📅January 30, 2026
```html

यदि आप प्रतिस्पर्धियों की कीमतों की निगरानी कर रहे हैं, उत्पादों के स्टॉक को पार्स कर रहे हैं या मार्केटप्लेस पर स्वचालित रूप से विज्ञापन पोस्ट कर रहे हैं — तो आप निश्चित रूप से ब्लॉकों का सामना कर चुके हैं। Wildberries, Ozon, यांडेक्स मार्केट और अविटो का API स्वचालन से सक्रिय रूप से सुरक्षा करता है: अनुरोधों की संख्या को सीमित करता है, IP पतों को बैन करता है और कैप्चा की मांग करता है। इस गाइड में हम समझेंगे कि ब्लॉकेज क्यों होते हैं और पार्सर को इस तरह से कैसे सेट करें कि महीनों तक बिना बैन के स्थिरता से काम कर सकें।

मार्केटप्लेस बार-बार API अनुरोधों को क्यों ब्लॉक करते हैं

मार्केटप्लेस अपनी अवसंरचना का समर्थन करने के लिए भारी धन खर्च करते हैं — सर्वर, डेटाबेस, CDN। जब आप कीमतों को पार्स करने के लिए प्रति मिनट हजारों अनुरोध करते हैं, तो आप उनके सिस्टम पर अतिरिक्त लोड उत्पन्न करते हैं। लेकिन ब्लॉकेज का मुख्य कारण तकनीकी नहीं है, बल्कि व्यावसायिक है।

ब्लॉकेज के मुख्य कारण:

  • प्रतिस्पर्धात्मक डेटा की सुरक्षा। Wildberries और Ozon नहीं चाहते कि प्रतिस्पर्धी आसानी से कीमतों, स्टॉक्स और लोकप्रिय उत्पादों की जानकारी प्राप्त करें। ये डेटा व्यावसायिक रहस्य हैं।
  • सर्वरों पर लोड को कम करना। एक पार्सर उतने ही अनुरोध उत्पन्न कर सकता है जितने 10,000 सामान्य खरीदार। इससे होस्टिंग पर खर्च बढ़ता है।
  • स्पैम और फर्जीवाड़े से लड़ना। स्वचालित सिस्टम अविटो पर दृश्यता, समीक्षाओं, और विज्ञापनों के लिए फर्जीवाड़ा करते हैं।
  • API का मुद्रीकरण। कुछ मार्केटप्लेस आधिकारिक भुगतान वाले API की पेशकश करते हैं जिनमें सीमाएँ होती हैं। मुफ्त पार्सिंग को ब्लॉक करके, वे पहुंच खरीदने के लिए प्रोत्साहित करते हैं।

उदाहरण के लिए, यदि आप हर घंटे 5000 उत्पादों की कीमतों की निगरानी करते हैं — तो यह प्रति दिन 120,000 अनुरोध हैं। एक IP पते से यह संदिग्ध लगता है, और मार्केटप्लेस की सुरक्षा प्रणाली जल्दी से आपके पहुंच को ब्लॉक कर देगी।

Wildberries, Ozon और अविटो कौन से सुरक्षा उपायों का उपयोग करते हैं

आधुनिक मार्केटप्लेस पार्सिंग से सुरक्षा के लिए बहुस्तरीय सुरक्षा का उपयोग करते हैं। इन तंत्रों को समझना ब्लॉकेज को पार करने के लिए सही सेटअप में मदद करेगा।

सुरक्षा विधि यह कैसे काम करता है इसे कैसे पार करें
रेट लिमिटिंग एक IP से अनुरोधों की सीमा: 100-500 प्रति घंटे अनुरोधों के बीच देरी + IP की रोटेशन
IP ब्लैकलिस्ट ज्ञात डेटा सेंटर प्रॉक्सियों को ब्लॉक करना रहवासी प्रॉक्सी का उपयोग करना
यूजर-एजेंट जांच ब्राउज़र यूजर-एजेंट के बिना अनुरोधों को ब्लॉक करना यथार्थवादी हेडर सेट करना
जावास्क्रिप्ट जांचें डेटा प्राप्त करने के लिए JS कोड को निष्पादित करने की आवश्यकता हेडलेस ब्राउज़रों का उपयोग करना
कैप्चा संदिग्ध गतिविधि पर मजबूर जांच अनुरोधों की आवृत्ति को कम करना, कैप्चा समाधान सेवाएं
TLS फिंगरप्रिंटिंग TLS पैरामीटर के आधार पर स्वचालन की पहचान सही फिंगरप्रिंट के साथ पुस्तकालयों का उपयोग करना
व्यवहारात्मक विश्लेषण पैटर्न का विश्लेषण: क्लिक की गति, माउस की गति देरी में यादृच्छिकता, मानव व्यवहार की नकल करना

Wildberries आक्रामक सुरक्षा का उपयोग करता है: एक IP से प्रति घंटे लगभग 200-300 अनुरोधों की सीमा, यूजर-एजेंट की जांच और जावास्क्रिप्ट चुनौतियाँ। सीमा को पार करने पर आपको HTTP 429 (Too Many Requests) या 403 (Forbidden) प्राप्त होगा।

Ozon API के माध्यम से पार्सिंग के लिए अधिक सहिष्णु है, लेकिन डेटा सेंटर के IP को सक्रिय रूप से बैन करता है। वे IP के प्रकार (डेटा सेंटर बनाम रेजिडेंशियल) की पहचान करने वाली सेवाओं का उपयोग करते हैं, इसलिए सामान्य प्रॉक्सी अक्सर काम नहीं करती हैं।

अविटो API को विज्ञापनों के बड़े पैमाने पर पोस्टिंग और संपर्कों के पार्सिंग से सुरक्षित करता है। यहाँ भौगोलिक संबंध महत्वपूर्ण है: यदि आप कज़ान में विज्ञापन पोस्ट कर रहे हैं, तो IP कज़ान से होना चाहिए, अन्यथा मॉडरेशन प्रकाशन को ब्लॉक कर देगा।

रेट लिमिटिंग: अनुरोधों के बीच देरी को सही तरीके से कैसे सेट करें

रेट लिमिटिंग — यह अनुरोधों की गति को कृत्रिम रूप से सीमित करना है, ताकि आपकी गतिविधि सामान्य उपयोगकर्ता के कार्यों के रूप में दिखाई दे। मुख्य नियम: धीरे-धीरे लेकिन स्थिरता से बेहतर है, तेज़ी से और बैन के साथ नहीं।

लोकप्रिय मार्केटप्लेस के लिए अनुशंसित सेटिंग्स:

Wildberries:

  • अनुरोधों के बीच देरी: 2-5 सेकंड (यादृच्छिक)
  • एक IP से अधिकतम 150-200 अनुरोध प्रति घंटे
  • हर 100 अनुरोधों के बाद 10-15 मिनट का ब्रेक
  • 200 अनुरोधों के बाद IP की रोटेशन

Ozon:

  • अनुरोधों के बीच देरी: 1-3 सेकंड
  • एक IP से अधिकतम 300-400 अनुरोध प्रति घंटे
  • रहवासी प्रॉक्सी का उपयोग अनिवार्य है
  • 300 अनुरोधों के बाद IP की रोटेशन

अविटो:

  • अनुरोधों के बीच देरी: 3-7 सेकंड
  • प्रति घंटे अधिकतम 50-100 अनुरोध (कठोर सीमाएँ)
  • IP को विज्ञापन के शहर से मेल खाना चाहिए
  • एक IP = एक खाता (मिश्रण न करें)

यादृच्छिक देरी को लागू करने का तरीका: "सटीक 3 सेकंड" जैसे निश्चित अंतराल का उपयोग न करें — यह बॉट की तरह दिखता है। यादृच्छिकता जोड़ें: 2 से 5 सेकंड। अधिकांश पार्सर इसे सेटिंग्स के माध्यम से समर्थन करते हैं।

उदाहरण के लिए, Python में requests पुस्तकालय के साथ यह इस प्रकार दिखता है:

import time
import random
import requests

def make_request(url, proxies):
    response = requests.get(url, proxies=proxies)
    # 2 से 5 सेकंड के बीच यादृच्छिक देरी
    delay = random.uniform(2.0, 5.0)
    time.sleep(delay)
    return response

# उपयोग का उदाहरण
proxy = {
    'http': 'http://username:password@proxy.example.com:8000',
    'https': 'http://username:password@proxy.example.com:8000'
}

for product_id in product_list:
    url = f'https://card.wb.ru/cards/detail?nm={product_id}'
    response = make_request(url, proxy)
    # डेटा प्रोसेसिंग...

महत्वपूर्ण बिंदु: हर 100-200 अनुरोधों के बाद लंबा ब्रेक लें (10-20 मिनट) या IP बदलें। यह उस व्यक्ति के व्यवहार की नकल करता है जो उत्पादों को देखता है, फिर अन्य कार्यों में व्यस्त हो जाता है।

लोड को वितरित करने के लिए प्रॉक्सी की रोटेशन

सही देरी के साथ भी, एक IP लंबे समय तक लोड नहीं सहन करेगा। समाधान — प्रॉक्सी की रोटेशन: कई IP पतों के बीच अनुरोधों का वितरण। यह मार्केटप्लेस के स्थिर पार्सिंग का आधार है।

मार्केटप्लेस पार्सिंग के लिए प्रॉक्सी के प्रकार:

प्रॉक्सी का प्रकार लाभ नुकसान किस कार्यों के लिए
डेटा सेंटर तेज, सस्ते, स्थिर आसान पहचान, अक्सर बैन लिस्ट में होते हैं यांडेक्स मार्केट, छोटे मार्केटप्लेस
रहवासी घरेलू उपयोगकर्ताओं के वास्तविक IP, बैन का कम जोखिम महंगे, डेटा सेंटर से धीमे Wildberries, Ozon, अविटो
मोबाइल मोबाइल ऑपरेटरों के IP, अधिकतम गुमनामी सबसे महंगे, गति में परिवर्तनशीलता अविटो के कठोर ब्लॉकों को पार करना

Wildberries और Ozon के लिए हम रहवासी प्रॉक्सी का उपयोग करने की सिफारिश करते हैं — इनमें वास्तविक घरेलू उपयोगकर्ताओं के IP होते हैं, इसलिए मार्केटप्लेस इन्हें सामान्य खरीदारों से अलग नहीं कर सकते। डेटा सेंटर प्रॉक्सी यहाँ अच्छी तरह से काम नहीं करती हैं: Ozon और Wildberries ऐसे IP की काली सूची बनाते हैं।

प्रॉक्सी रोटेशन की रणनीतियाँ:

  • N अनुरोधों के बाद रोटेशन। हर 100-300 अनुरोधों के बाद IP बदलें। यह प्रभावशीलता और सुरक्षा के बीच का सबसे अच्छा संतुलन है।
  • समय के अनुसार रोटेशन। हर 30-60 मिनट में IP बदलें। लंबी पार्सिंग सत्रों के लिए उपयुक्त।
  • स्टिकी सत्र। एक उत्पाद/श्रेणी के लिए सभी अनुरोधों के लिए एक IP का उपयोग करें, फिर बदलें। यह संदेह को कम करता है।
  • भौगोलिक संबंध। अविटो के लिए अनिवार्य: मास्को के विज्ञापनों को मास्को के IP के माध्यम से पार्स करें, कज़ान के लिए — कज़ान के माध्यम से।

अधिकांश रहवासी प्रॉक्सी प्रदाता स्वचालित रोटेशन की पेशकश करते हैं: आपको एक एंडपॉइंट मिलता है, और IP स्वचालित रूप से निर्धारित आवृत्ति के साथ या प्रत्येक अनुरोध के बाद बदलता है। यह पार्सर को सेट करना आसान बनाता है।

Python में प्रॉक्सी पूल सेटअप का उदाहरण:

import requests
import random

# प्रॉक्सी की सूची (फाइल से लोड कर सकते हैं)
proxy_list = [
    'http://user:pass@proxy1.example.com:8000',
    'http://user:pass@proxy2.example.com:8000',
    'http://user:pass@proxy3.example.com:8000',
    # ... और 50-100 प्रॉक्सी
]

def get_random_proxy():
    proxy = random.choice(proxy_list)
    return {
        'http': proxy,
        'https': proxy
    }

# उपयोग
for product_id in product_list:
    proxy = get_random_proxy()  # प्रत्येक अनुरोध के लिए यादृच्छिक प्रॉक्सी
    response = requests.get(url, proxies=proxy)
    # डेटा प्रोसेसिंग...

ब्राउज़र की नकल करने के लिए हेडर और फिंगरप्रिंट सेट करना

मार्केटप्लेस केवल IP और अनुरोधों की आवृत्ति का विश्लेषण नहीं करते, बल्कि HTTP हेडर भी। यदि आपका पार्सर डिफ़ॉल्ट हेडरों के साथ अनुरोध भेजता है (जैसे python-requests/2.28.0), तो इसे तुरंत बॉट के रूप में पहचाना जाएगा।

ब्राउज़र की नकल करने के लिए आवश्यक हेडर:

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
    'Accept-Encoding': 'gzip, deflate, br',
    'DNT': '1',
    'Connection': 'keep-alive',
    'Upgrade-Insecure-Requests': '1',
    'Sec-Fetch-Dest': 'document',
    'Sec-Fetch-Mode': 'navigate',
    'Sec-Fetch-Site': 'none',
    'Cache-Control': 'max-age=0',
    'Referer': 'https://www.google.com/'
}

महत्वपूर्ण बिंदु:

  • User-Agent को वास्तविक ब्राउज़र से मेल खाना चाहिए। वर्तमान Chrome, Firefox, Safari के संस्करणों का उपयोग करें। हर 100-200 अनुरोधों के बाद User-Agent बदलें।
  • Accept-Language को प्रॉक्सी के भौगोलिक स्थान से मेल खाना चाहिए। यदि आप रूसी IP का उपयोग कर रहे हैं — तो ru-RU सेट करें, यूक्रेनी के लिए — uk-UA।
  • Referer दिखाता है कि उपयोगकर्ता कहाँ से आया। पहले अनुरोध के लिए Google/Yandex का उपयोग करें, बाद के लिए — मार्केटप्लेस के आंतरिक पृष्ठ।
  • Sec-Fetch-* हेडर यथार्थता जोड़ते हैं। आधुनिक ब्राउज़र इन्हें स्वचालित रूप से भेजते हैं।

TLS फिंगरप्रिंटिंग: उन्नत सुरक्षा प्रणालियाँ (Ozon, Wildberries) TLS कनेक्शन के पैरामीटर का विश्लेषण करती हैं: सिफर सूट का क्रम, एक्सटेंशन, प्रोटोकॉल का संस्करण। Python/Node.js की मानक पुस्तकालयों का फिंगरप्रिंट ब्राउज़रों से भिन्न होता है।

समाधान — विशेष पुस्तकालयों का उपयोग:

  • curl-impersonate (Python) — Chrome/Firefox का TLS फिंगरप्रिंट नकल करता है
  • tls-client (Go, Python बाइंडिंग) — अनुकूलन योग्य TLS फिंगरप्रिंट
  • Playwright / Puppeteer — वास्तविक TLS के साथ हेडलेस ब्राउज़र

अधिकांश मार्केटप्लेस पार्सिंग कार्यों के लिए सही HTTP हेडर और रहवासी प्रॉक्सी पर्याप्त हैं। TLS फिंगरप्रिंटिंग केवल सबसे सुरक्षित API के साथ काम करते समय महत्वपूर्ण है।

API बनाम वेब-स्क्रैपिंग: पार्सिंग के लिए क्या सुरक्षित है

मार्केटप्लेस के पास डेटा प्राप्त करने के दो तरीके हैं: आधिकारिक API और HTML पृष्ठों का स्क्रैपिंग (वेब-स्क्रैपिंग)। स्थिरता से काम करने के लिए कौन सा चुनें?

पैरामीटर आधिकारिक API वेब-स्क्रैपिंग
कानूनीता ✅ अनुमति है, दस्तावेज़ीकरण है ⚠️ ग्रे क्षेत्र, ToS का उल्लंघन कर सकता है
स्थिरता ✅ स्थिर डेटा संरचना ❌ वेबसाइट के री-डिज़ाइन पर टूट जाता है
सीमाएँ ⚠️ कठोर आधिकारिक सीमाएँ ⚠️ अनौपचारिक, लेकिन सुरक्षा है
डेटा तक पहुँच ⚠️ सभी डेटा उपलब्ध नहीं है ✅ सभी सार्वजनिक डेटा
गति ✅ तेज़ JSON प्रतिक्रियाएँ ❌ HTML के कारण धीमा
लागत ⚠️ अक्सर भुगतान करना होता है ✅ मुफ्त (केवल प्रॉक्सी)

चुनने के लिए सिफारिशें:

  • यदि आप आधिकारिक API का उपयोग करें: आपको छोटे डेटा वॉल्यूम (दिन में 10,000 उत्पादों तक) की आवश्यकता है, आप पहुंच के लिए भुगतान करने के लिए तैयार हैं, कानूनीता और स्थिरता महत्वपूर्ण है।
  • यदि आप वेब-स्क्रैपिंग का उपयोग करें: आपको बड़े डेटा वॉल्यूम की आवश्यकता है, आधिकारिक API आवश्यक जानकारी प्रदान नहीं करता (जैसे, प्रतिस्पर्धियों की कीमतें), बजट सीमित है।

हाइब्रिड दृष्टिकोण: कई पेशेवर पार्सर दोनों विधियों को संयोजित करते हैं। उदाहरण के लिए, वे API के माध्यम से उत्पादों की सूची प्राप्त करते हैं (तेज़ और कानूनी), और कीमतों और स्टॉक्स की विस्तृत जानकारी HTML पृष्ठों से स्क्रैप करते हैं (अधिक डेटा)।

मार्केटप्लेस के आंतरिक API: आधिकारिक API के अलावा, मार्केटप्लेस वेबसाइट के काम के लिए आंतरिक API का उपयोग करते हैं। उदाहरण के लिए, Wildberries उत्पाद डेटा को https://card.wb.ru/cards/detail के माध्यम से लोड करता है। ये एंडपॉइंट दस्तावेजीकृत नहीं होते हैं, लेकिन HTML पार्सिंग की तुलना में तेजी से काम करते हैं। नकारात्मक पक्ष — ये बिना पूर्व सूचना के बदल सकते हैं।

लोकप्रिय पार्सर्स और उपकरणों को सेट करना

अधिकांश विक्रेता और विपणक मार्केटप्लेस के लिए पार्सिंग के लिए तैयार उपकरणों का उपयोग करते हैं। आइए देखें कि लोकप्रिय समाधानों में प्रॉक्सी और सीमाओं को सही तरीके से कैसे सेट करें।

Scrapy (Python फ्रेमवर्क) सेट करना

Scrapy — वेब-स्क्रैपिंग के लिए एक लोकप्रिय फ्रेमवर्क है। मार्केटप्लेस के साथ काम करने के लिए settings.py में जोड़ें:

# अनुरोधों के बीच देरी
DOWNLOAD_DELAY = 3  # 3 सेकंड
RANDOMIZE_DOWNLOAD_DELAY = True  # 0.5*DELAY से 1.5*DELAY के बीच यादृच्छिकता

# समवर्ती अनुरोधों की सीमाएँ
CONCURRENT_REQUESTS = 8
CONCURRENT_REQUESTS_PER_DOMAIN = 2

# प्रॉक्सी सेटअप (मिडलवेयर रोटेटिंग-प्रॉक्सी के माध्यम से)
ROTATING_PROXY_LIST = [
    'http://user:pass@proxy1.example.com:8000',
    'http://user:pass@proxy2.example.com:8000',
    # ... प्रॉक्सी की सूची
]

# यूजर-एजेंट रोटेशन
USER_AGENT_LIST = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0',
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) Safari/537.36',
    # ... यूजर-एजेंट की सूची
]

# त्रुटियों पर पुनः प्रयास
RETRY_TIMES = 3
RETRY_HTTP_CODES = [429, 500, 502, 503, 504]

Octoparse (कोड के बिना दृश्य पार्सर) सेट करना

Octoparse — बिना प्रोग्रामिंग के पार्सिंग के लिए एक लोकप्रिय उपकरण है। प्रॉक्सी और सीमाओं को सेट करना:

  1. कार्य सेटिंग्स → उन्नत विकल्प खोलें
  2. "नेटवर्क" अनुभाग में "प्रॉक्सी सर्वर का उपयोग करें" सक्षम करें
  3. प्रॉक्सी की सूची जोड़ें IP:PORT:USER:PASS प्रारूप में
  4. स्वचालित रोटेशन के लिए "प्रत्येक अनुरोध के लिए IP बदलें" सक्षम करें
  5. "गति" अनुभाग में "धीमा" या "कस्टम" सेट करें जिसमें 3-5 सेकंड की देरी हो
  6. मानव व्यवहार की नकल के लिए "यादृच्छिक देरी" सक्षम करें

Selenium (ब्राउज़र स्वचालन) सेट करना

Selenium वास्तविक ब्राउज़र को नियंत्रित करता है, इसलिए कई सुरक्षा उपायों को पार करता है। प्रॉक्सी के साथ सेटअप का उदाहरण:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
import random

# प्रॉक्सी के साथ Chrome सेट करना
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://user:pass@proxy.example.com:8000')
chrome_options.add_argument('--disable-blink-features=AutomationControlled')
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
chrome_options.add_experimental_option('useAutomationExtension', False)

driver = webdriver.Chrome(options=chrome_options)

# WebDriver को छिपाना
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")

# देरी के साथ पार्सिंग
urls = ['https://www.wildberries.ru/catalog/...', ...]

for url in urls:
    driver.get(url)
    # 3-7 सेकंड के बीच यादृच्छिक देरी
    time.sleep(random.uniform(3, 7))
    
    # पढ़ने की नकल करने के लिए स्क्रॉलिंग
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight/2);")
    time.sleep(random.uniform(1, 3))
    
    # डेटा पार्सिंग
    # ...

मार्केटप्लेस पार्सिंग के लिए तैयार सेवाएँ

यदि आप स्वयं पार्सर सेट नहीं करना चाहते हैं, तो विशेष सेवाओं का उपयोग करें:

  • Mpstats.io — Wildberries और Ozon का विश्लेषण, स्वचालित मूल्य और बिक्री की निगरानी
  • SellerFox — मार्केटप्लेस पर प्रतिस्पर्धियों की निगरानी, स्टॉक्स की ट्रैकिंग
  • Moneyplace — अविटो का पार्सिंग, स्वचालित विज्ञापनों की पोस्टिंग
  • Parsehub — किसी भी वेबसाइट के लिए दृश्य पार्सर, मार्केटप्लेस सहित

ये सेवाएँ पहले से ही प्रॉक्सी, सीमाएँ और सुरक्षा को पार करने के लिए सेट कर चुकी हैं — आपको केवल यह निर्दिष्ट करना है कि क्या पार्स करना है। नकारात्मक पक्ष — मासिक सदस्यता 2000₽ से शुरू होती है।

ब्लॉकों की निगरानी और स्वचालित प्रतिक्रिया

सही सेटिंग्स के साथ भी, ब्लॉकेज संभव हैं: मार्केटप्लेस सुरक्षा को अपडेट करते हैं, प्रॉक्सी बैन लिस्ट में आते हैं, सीमाएँ बदलती हैं। समस्याओं को ट्रैक करना और स्वचालित रूप से प्रतिक्रिया करना महत्वपूर्ण है।

ब्लॉकेज के संकेत जो ट्रैक करने चाहिए:

  • HTTP 429 (Too Many Requests) — अनुरोधों की सीमा पार हो गई, ब्रेक या IP बदलने की आवश्यकता है
  • HTTP 403 (Forbidden) — IP ब्लॉक हो गया, प्रॉक्सी की तात्कालिक रोटेशन की आवश्यकता है
  • HTTP 503 (Service Unavailable) — अस्थायी ओवरलोड या DDoS से सुरक्षा
  • उत्तर में कैप्चा — स्वचालन का पता चला, सक्रियता को कम करने की आवश्यकता है
  • खाली उत्तर या मुख्य पृष्ठ पर रीडायरेक्ट — नरम ब्लॉक
  • उत्तर समय में अचानक वृद्धि — संभवतः सर्वर की ओर से रेट लिमिटिंग

ब्लॉकेज पर स्वचालित प्रतिक्रिया (Python में उदाहरण):

import requests
import time
from datetime import datetime

class SmartParser:
    def __init__(self, proxy_list):
        self.proxy_list = proxy_list
        self.current_proxy_index = 0
        self.request_count = 0
        self.blocked_proxies = set()
        
    def get_next_proxy(self):
        # ब्लॉक किए गए प्रॉक्सी को छोड़ें
        while self.current_proxy_index in self.blocked_proxies:
            self.current_proxy_index = (self.current_proxy_index + 1) % len(self.proxy_list)
        
        proxy = self.proxy_list[self.current_proxy_index]
        return {'http': proxy, 'https': proxy}
    
    def rotate_proxy(self):
        self.current_proxy_index = (self.current_proxy_index + 1) % len(self.proxy_list)
        self.request_count = 0
        
    def make_request(self, url):
        max_retries = 3
        
        for attempt in range(max_retries):
            try:
                proxy = self.get_next_proxy()
                response = requests.get(url, proxies=proxy, timeout=10)
                
                # ब्लॉकेज की जांच
                if response.status_code == 429:
                    print(f"[{datetime.now()}] रेट लिमिट! 60 सेकंड का ब्रेक...")
                    time.sleep(60)
                    self.rotate_proxy()
                    continue
                    
                elif response.status_code == 403:
                    print(f"[{datetime.now()}] IP ब्लॉक हो गया! प्रॉक्सी की रोटेशन...")
                    self.blocked_proxies.add(self.current_proxy_index)
                    self.rotate_proxy()
                    continue
                    
                elif response.status_code == 503:
                    print(f"[{datetime.now()}] सर्वर ओवरलोड है। 120 सेकंड का ब्रेक...")
                    time.sleep(120)
                    continue
                
                # सफल अनुरोध
                self.request_count += 1
                
                # 200 अनुरोधों के बाद रोटेशन
                if self.request_count >= 200:
                    self.rotate_proxy()
                    time.sleep(10)  # रोटेशन के बाद ब्रेक
                
                return response
                
            except requests.exceptions.Timeout:
                print(f"[{datetime.now()}] टाइमआउट। प्रयास {attempt + 1}/{max_retries}")
                time.sleep(5)
                
        return None  # सभी प्रयास समाप्त

लॉगिंग और अलर्ट: महत्वपूर्ण घटनाओं पर सूचनाएँ सेट करें। उदाहरण के लिए, जब:

  • पूल से 30% से अधिक प्रॉक्सी ब्लॉक हो गई हैं
  • सफल अनुरोधों का प्रतिशत 80% से कम हो गया है
  • पार्सर ने 30 मिनट से अधिक डेटा प्राप्त नहीं किया
  • उत्तर में कैप्चा का पता चला

निगरानी के लिए मैट्रिक्स:

  • सफलता दर — सफल अनुरोधों का प्रतिशत (90% से अधिक होना चाहिए)
  • औसत प्रतिक्रिया समय — औसत प्रतिक्रिया समय (बढ़ना समस्याओं का संकेत दे सकता है)
  • प्रति घंटे अनुरोध — प्रत्येक प्रॉक्सी के लिए प्रति घंटे अनुरोधों की संख्या
  • प्रॉक्सी स्वास्थ्य — पूल में कार्यशील प्रॉक्सी का प्रतिशत
  • ब्लॉक दर — ब्लॉकेज की आवृत्ति (5% से कम होनी चाहिए)

मैट्रिक्स के दृश्य के लिए डैशबोर्ड का उपयोग करें: Grafana, Datadog या सरल Google Sheets जो API के माध्यम से स्वचालित रूप से अपडेट होते हैं।

निष्कर्ष

मार्केटप्लेस पर पार्सिंग के दौरान ब्लॉकेज एक बाधा नहीं हैं, बल्कि एक समस्या है जिसे उपकरणों की सही सेटिंग के साथ हल किया जा सकता है। बिना बैन के स्थिरता से काम करने के लिए मुख्य बिंदु:

  • Wildberries, Ozon और अविटो के लिए रहवासी प्रॉक्सी का उपयोग करें — यहाँ डेटा सेंटर प्रॉक्सी काम नहीं करती
  • अनुरोधों के बीच 2-5 सेकंड की यादृच्छिक देरी सेट करें
  • 150-300 अनुरोधों के बाद या हर 30-60 मिनट में IP की रोटेशन करें
  • यथार्थवादी HTTP हेडर का उपयोग करें जिसमें अद्यतन User-Agent हो
  • ब्लॉकों की निगरानी करें और उन पर स्वचालित रूप से प्रतिक्रिया दें
  • अविटो के लिए विज्ञापन के शहर से IP का भौगोलिक संबंध अनिवार्य है

सही तरीके से सेट किया गया पार्सर उच्च गुणवत्ता वाली प्रॉक्सी के साथ महीनों तक बिना किसी ब्लॉक के काम कर सकता है, हर दिन हजारों उत्पादों को इकट्ठा कर सकता है। मुख्य बात — गति के पीछे न भागें, बल्कि सामान्य उपयोगकर्ता के व्यवहार की नकल करें।

यदि आप नियमित रूप से Wildberries, Ozon या अविटो को पार्स करने की योजना बना रहे हैं, तो हम रहवासी प्रॉक्सी का उपयोग करने की सिफारिश करते हैं जो स्वचालित रोटेशन के साथ हैं — ये अधिकतम स्थिरता और न्यूनतम ब्लॉकेज जोखिम प्रदान करते हैं। उन कार्यों के लिए जो मोबाइल IP की आवश्यकता होती हैं (जैसे, अविटो के कठोर ब्लॉकों को पार करना) मोबाइल प्रॉक्सी उपयुक्त हैं जो रूसी ऑपरेटरों के IP के साथ हैं।

```