वापस ब्लॉग पर

Cloudflare स्क्रेपर गाइड: Scrapeless के साथ पेज सामग्री प्राप्त करें और सत्यापित करें

Michael Lee
Michael Lee

Expert Network Defense Engineer

10-Oct-2026

सारांश:

  • Cloudflare स्क्रेपर को सामग्री प्राप्त करने के बाद उसे वैधता के लिए जाँचना चाहिए। एक पूरा हुआ HTTP अनुरोध भी एप्लिकेशन को उपयोगी पेज डेटा के बिना छोड़ सकता है।
  • Scrapeless Web Unlocker प्रतिक्रिया‑उन्मुख मार्ग है। जब वर्कफ़्लो को नियंत्रित ब्राउज़र सेशन या पेज इंटरैक्शन की ज़रूरत हो, तब Agent Browser उपयुक्त होता है।
  • सर्विस प्रतिक्रियाएँ और ओरिजिन प्रतिक्रियाएँ अलग‑अलग अवलोकन हैं। किसी API के हेडर को लक्ष्य वेबसाइट के हेडर मानकर न चलें।
  • रिकॉर्ड्स को स्रोत‑विशिष्ट कॉन्ट्रैक्ट के अनुसार स्वीकार करें। पेज की पहचान, अपेक्षित सामग्री, आवश्यक फ़ील्ड, और खाली परिणाम का अर्थ जाँचें।

एक स्क्रेपर बिना ध्यान दिए किसी प्रोडक्ट URL के तहत चैलेंज डॉक्युमेंट स्टोर कर सकता है। अनुरोध पूरा हो गया, पार्सर को टेक्स्ट मिल गया, और प्राप्त रिकॉर्ड भरा‑पूरा दिखता है, लेकिन वह अब भी गलत डॉक्युमेंट का वर्णन करता है।

यह Cloudflare स्क्रेपर गाइड उसी स्वीकार्यता सीमा पर केंद्रित है। यह HTML अनुरोध करने के लिए Scrapeless Web Unlocker का उपयोग करता है और स्वीकृत सामग्री को चैलेंज या अधूरा रिकॉर्ड से अलग करने के लिए एक छोटा Python वैलिडेटर। लोकल वैलिडेशन उदाहरण स्पष्ट रूप से दृष्टांतात्मक पेजों का उपयोग करता है; प्रमाणित लक्ष्य कैप्चर के लिए आपके अपने की और अनुमत स्रोत की आवश्यकता होगी।

Cloudflare स्क्रेपर को किन चीज़ों को संभालना होता है?

Cloudflare स्क्रेपर को अनुमत लक्ष्य सामग्री प्राप्त करनी होती है और यह पहचानना होता है कि कब उसे कोई अलग प्रतिक्रिया मिली है। चैलेंज हैंडलिंग और डेटा एक्सट्रैक्शन उस काम के अलग‑अलग हिस्से हैं।

Cloudflare अपेक्षित संसाधन की जगह एक इंटरस्टीशियल Challenge Page लौटा सकता है। इसका Challenge Page response signal ओरिजिन हेडर cf-mitigated: challenge का उपयोग करता है, और चैलेंज कंटेंट टाइप text/html है।

जब एप्लिकेशन ओरिजिन प्रतिक्रिया देख सकता है, तब यह सिग्नल उपयोगी होता है। एक मैनेज्ड अधिग्रहण API अपना खुद का JSON लिफाफा और सर्विस हेडर लौटा सकता है। अगर वह लक्ष्य के हेडर को एक्सपोज़ नहीं करता, तो API प्रतिक्रिया में उनकी अनुपस्थिति यह सिद्ध नहीं करती कि लक्ष्य को चैलेंज नहीं मिला।

उपलब्ध चैलेंज संकेतों के साथ‑साथ सकारात्मक कंटेंट चेक रखें। अपेक्षित लेख शीर्षक या प्रोडक्ट आइडेंटिफ़ायर माँगे गए पेज के लिए, किसी एक सामान्य वाक्यांश की अनुपस्थिति से कहीं मजबूत प्रमाण हैं।

HTTP सफलता और कंटेंट सफलता अलग हैं

HTTP सफलता प्रोटोकॉल परिणाम का वर्णन करती है; कंटेंट सफलता यह बताती है कि प्रतिक्रिया आपकी संग्रहण टास्क को संतुष्ट करती है या नहीं। HTTP response semantics आपका प्रोडक्ट स्कीमा या लेख स्वीकृति नियम परिभाषित नहीं करता।

सर्विस अनुरोध, लौटा हुआ पेलोड, और निकाला गया रिकॉर्ड को अलग‑अलग रखें। सर्विस प्रतिक्रिया वैध JSON हो सकती है जबकि उसके डेटा में अनुपयुक्त पेज हो। इसके उलट, एक वैध खोज पेज पर कोई मैच न होना संभव है, बिना ब्लॉक हुए।

Layer Question Evidence to keep
API request क्या सर्विस ने ऑपरेशन स्वीकार कर पूरा किया? सर्विस स्टेटस और लिफाफा
Page identity क्या यह इच्छित पेज है या अनुमत कैननिकल समकक्ष? अनुरोधित URL और उपलब्ध अंतिम पहचान
Content क्या पेज में आवश्यक स्रोत सामग्री है? शीर्षक, मार्कर, या सहायक अनुच्छेद
Extraction क्या इस टास्क के लिए आवश्यक फ़ील्ड वैध हैं? पार्स किए गए मान और वैलिडेशन परिणाम
Empty state क्या स्रोत खुद यह स्थापित करता है कि कोई रिकॉर्ड मौजूद नहीं है? स्रोत‑विशिष्ट empty‑state प्रमाण

इन लेयर्स पर अलग‑अलग विफलता कारण रखें। “कोई रिकॉर्ड नहीं” तब पर्याप्त निदान नहीं होता जब कैप्चर किए गए डॉक्युमेंट में कभी माँगा गया पेज था ही नहीं।

ऑपरेशन के अनुसार Web Unlocker या Agent Browser चुनें

Web Unlocker उस वर्कफ़्लो के लिए उपयुक्त है जो लक्ष्य URL से शुरू होता है और लौटाई गई सामग्री चाहता है। इसका rendering configuration प्रलेखित jsRender फ़ील्ड्स के माध्यम से HTML अनुरोध को सपोर्ट करता है।

Agent Browser उन कार्यों के लिए उपयुक्त है जिन्हें ब्राउज़र सेशन नियंत्रण, इंटरैक्शन, या पेज स्टेट्स के बीच नेविगेशन की आवश्यकता होती है। उस मार्ग को तब चुनें जब एप्लिकेशन को एक अधिग्रहण प्रतिक्रिया की खपत के बजाय पेज के साथ सीधे काम करना पड़े।

हर इम्प्लीमेंटेशन को उसके चुने हुए प्रोडक्ट सरफ़ेस के भीतर रखें। नीचे दिया गया उदाहरण Web Unlocker का उपयोग करता है। यह ट्यूटोरियल के बीच में ब्राउज़र सेशन को HTTP API में नहीं बदलता, और यह हर संरक्षित लक्ष्य पर स्वीकृति की गारंटी नहीं देता।

स्रोत के समर्थित एक्सेस मेथड से शुरुआत करें। एक अधिग्रहण सर्विस कोई अनुमति अनुदान नहीं है, और प्रतिबंध के पीछे की सामग्री को केवल इसलिए सार्वजनिक संग्रह लक्ष्य नहीं मान लेना चाहिए कि कोई क्लाइंट उसका URL अनुरोध कर सकता है।

पूर्वापेक्षाएँ और इंस्टॉलेशन

अनुरोध उदाहरण के लिए Scrapeless API कुंजी, Web Unlocker तक खाता पहुँच, Python, और requests पैकेज की आवश्यकता होती है। सत्यापक केवल Python की मानक लाइब्रेरी का उपयोग करता है।

SCRAPELESS_API_KEY को अपने रनटाइम में निजी रूप से सेट करें। TARGET_URL को ऐसी सार्वजनिक या अन्य अधिकृत पेज पर सेट करें, जिसका अपेक्षित शीर्षक और पहचानी जाने वाली फ़ील्ड आप पहले ही निरीक्षण कर चुके हों। क्रेडेंशियल्स को न प्रिंट करें और न ही उन्हें लेख के आउटपुट रिकॉर्ड्स में रखें।

सेवा कॉल करने से पहले, अपने प्रोजेक्ट के वातावरण में requests इंस्टॉल करें और Web Unlocker क्विकस्टार्ट देखें। अपने निर्भरता वर्ज़न को प्रोजेक्ट लॉक या एनवायरनमेंट मैनिफ़ेस्ट में दर्ज करें। नेटवर्क हिस्से के लिए एक सेवा खाता और अनुमत लक्ष्य पूर्वापेक्षा हैं; यहाँ किसी प्रमाणित कैप्चर का दावा नहीं किया गया है।

एक न्यूनतम रेंडर्ड HTML अनुरोध भेजें

वर्तमान Web Unlocker रेंडरिंग अनुरोध v2 एंडपॉइंट और नेस्टेड jsRender ऑब्जेक्ट का उपयोग करता है। लौटाए गए HTML को सेवा एनवेलप से अलग सहेजें ताकि दोनों निरीक्षण योग्य रहें।

नोट: इस अनुरोध के लिए वास्तविक Scrapeless API कुंजी, खाता पहुँच, और एक अधिकृत TARGET_URL आवश्यक है। इसे वर्तमान अनुरोध प्रलेखन के विरुद्ध जाँचा गया था, लेकिन इस उदाहरण में किसी सशुल्क लक्ष्य पर निष्पादित नहीं किया गया।

python Copy
import json
import os
from pathlib import Path
import requests

target = os.environ["TARGET_URL"]
response = requests.post(
    "https://api.scrapeless.com/api/v2/unlocker/request",
    headers={"x-api-token": os.environ["SCRAPELESS_API_KEY"]},
    json={
        "actor": "unlocker.webunlocker",
        "proxy": {"country": "ANY"},
        "input": {
            "url": target,
            "jsRender": {
                "enabled": True,
                "response": {"type": "html"}
            }
        }
    },
    timeout=60
)
response.raise_for_status()
envelope = response.json()
html = envelope.get("data")
if envelope.get("code") != 200 or not isinstance(html, str):
    raise ValueError("Expected a successful HTML envelope")
Path("page.html").write_text(html, encoding="utf-8")
print(json.dumps({"requested_url": target, "html_characters": len(html)}))

API एनवेलप जांच प्रलेखित प्रतिक्रिया संरचना स्थापित करती है। यह अभी तक यह स्थापित नहीं करती कि page.html में वह स्रोत है जिसकी आपके अनुप्रयोग को आवश्यकता है। दर्ज किया गया URL अनुरोधित URL है; अंतिम गंतव्य देखे बिना इसे final_url नाम न दें।

पार्सिंग से पहले सामग्री अनुबंध परिभाषित करें

सामग्री अनुबंध उस न्यूनतम साक्ष्य का नाम देता है जो किसी पृष्ठ को स्वीकार करने के लिए आवश्यक है। किसी लेख के लिए, इसमें इच्छित शीर्षक और एक स्रोत पहचानकर्ता की आवश्यकता हो सकती है। किसी उत्पाद कार्य के लिए अपने उत्पाद और वेरिएंट फ़ील्ड की ज़रूरत होती है।

अनुबंध को किसी निरीक्षित लक्ष्य पेज से लिखें। किसी अनुमानित CSS क्लास को सफलता की एकमात्र परिभाषा बनाने से बचें। स्थिर पहचानकर्ता, प्रलेखित स्ट्रक्चर्ड फ़ील्ड, और टिकाऊ URL पैटर्न उपयोगी होते हैं जब स्रोत उन्हें प्रदान करता है।

निर्धारित करें कि वैकल्पिक फ़ील्ड का प्रतिनिधित्व कैसे किया जाए। एक गायब लेखक किसी एक लेख स्रोत के लिए स्वीकार्य हो सकता है; एक गायब उत्पाद पहचानकर्ता किसी पूरे उत्पाद रिकॉर्ड को अनुपयोगी बना सकता है। गायब फ़ील्ड को गढ़े हुए पाठ से भरने के बजाय एक कारण दर्ज करें।

Scrapeless के साथ स्क्रैपिंग शुरू करें

Scrapeless के साथ अपने वेब स्क्रैपिंग और ऑटोमेशन वर्कफ़्लो को सशक्त बनाएं!
आज ही साइन अप करें और $5 का निःशुल्क क्रेडिट प्राप्त करें — कोई क्रेडिट कार्ड आवश्यक नहीं।

अभी अपना निःशुल्क क्रेडिट Scrapeless डैशबोर्ड में क्लेम करें।

एक छोटा कंटेंट स्वीकृति जाँच चलाएँ

स्थानीय स्वीकृति जाँच को किसी स्पष्ट चुनौती संकेत को अस्वीकार करना चाहिए और अपेक्षित पेज के सकारात्मक साक्ष्य की आवश्यकता होनी चाहिए। निम्नलिखित पूर्ण स्क्रिप्ट इन नियमों को उदाहरणात्मक HTML फ़िक्स्चर पर अभ्यास में लाती है।

हेडिंग और data-record-id मार्कर इन फ़िक्स्चर के हैं। इन्हें किसी मनमाने संरक्षित वेबसाइट के लिए चयनकर्ताओं के रूप में विज्ञापित नहीं किया गया है। स्क्रिप्ट को स्थानीय रूप से सत्यापन व्यवहार की जाँच के लिए निष्पादित किया गया; इसका आउटपुट किसी लाइव Cloudflare अधिग्रहण परिणाम का प्रतिनिधित्व नहीं करता।

python Copy
import json
from html.parser import HTMLParser

class Signals(HTMLParser):
    def __init__(self):
        super().__init__()
        self.heading = []
        self.ids = []
        self.in_heading = False

    def handle_starttag(self, tag, attrs):
        if tag == "h1":
            self.in_heading = True
        marker = dict(attrs).get("data-record-id")
        if marker:
            self.ids.append(marker)

    def handle_endtag(self, tag):
        if tag == "h1":
            self.in_heading = False

    def handle_data(self, data):
        if self.in_heading:
            self.heading.append(data)

def assess(html, origin_headers, expected_heading):
    headers = {k.lower(): v for k, v in origin_headers.items()}
    if headers.get("cf-mitigated") == "challenge":
        return {"status": "quarantined", "reason": "origin_challenge"}
    signals = Signals()
    signals.feed(html)
    heading = " ".join(" ".join(signals.heading).split())
    if heading != expected_heading or not signals.ids:
        return {"status": "rejected", "reason": "content_contract"}
    return {"status": "accepted", "heading": heading, "ids": signals.ids}

# Illustrative fixtures; these are not fetched target pages.
fixtures = [
    ("article", '<h1>Public Article</h1><main data-record-id="demo-a"></main>', {}),
    ("challenge", '<h1>Challenge</h1>', {"cf-mitigated": "challenge"}),
    ("incomplete", '<h1>Public Article</h1>', {})
]
print(json.dumps({name: assess(html, headers, "Public Article")
                  for name, html, headers in fixtures}))

लेख फ़िक्स्चर को स्वीकार कर लिया जाता है, स्पष्ट चुनौती फ़िक्स्चर को क्वारंटीन किया जाता है, और पहचानकर्ता से रहित फ़िक्स्चर को अस्वीकार कर दिया जाता है। यह दिखाए गए इनपुट पर स्थानीय ब्रांच व्यवहार को सिद्ध करता है। सेवा कैप्चर का मूल्यांकन करने से पहले अनुबंध को वास्तविक स्रोत के अनुसार अनुकूलित करें।

अधिक जटिल फ़ील्ड चयन के लिए, निष्कर्षण तर्क को इस स्वीकार-या-अस्वीकार निर्णय से अलग रखें। HTML निष्कर्षण ट्यूटोरियल पार्सिंग लेयर को कवर करता है।

खाली परिणामों को अनुपयोगी सामग्री से अलग पहचानें

एक मान्य खाली परिणाम के लिए स्रोत की खाली स्थिति का सकारात्मक साक्ष्य आवश्यक होता है। केवल एक खाली सेलेक्टर परिणाम वह साक्ष्य नहीं दे सकता।

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

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

आउटपुट और अधिग्रहण साक्ष्य संरक्षित करें

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

अवलोकन को उसे उत्पन्न करने वाली गतिविधि से जोड़े रखने के लिए स्रोत प्रोवेनेन्स का उपयोग करें। अस्वीकृत रिकॉर्ड का कारण रखें, लेकिन उसकी सामग्री को सफल बिज़नेस रिकॉर्ड के रूप में अग्रेषित न करें।

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

सीमाएँ और उत्तरदायी संग्रहण

Cloudflare स्क्रैपर को स्रोत की अनुमत एक्सेस और चुने गए अधिग्रहण मार्ग की सीमाओं का सम्मान करना होता है। यह वर्कफ़्लो किसी सार्वभौमिक सफलता दर या निजी पेजों तक पहुँच का वादा नहीं करता।

स्रोत की शर्तों और रोबोट्स एक्सक्लूज़न नियमों की समीक्षा संग्रहण से पहले करें। एक सीमित टारगेट सूची रखें और संग्रहण को केवल उन डाटा तक सीमित करें जिनकी आपके कार्य को आवश्यकता है।

एक अनुमत टारगेट से शुरू करें। छोटे समांतरता कैप, जैसे प्रति होस्ट तीन से अधिक वर्कर न हों, इस उदाहरण के लिए अनुप्रयोग नीति है, Scrapeless सेवा की सीमा नहीं। केवल तब विस्तार करें जब स्रोत की अनुमति, स्वीकृत सामग्री, और परिचालन लागत की समीक्षा हो चुकी हो।

निष्कर्ष

एक उपयोगी Cloudflare स्क्रैपर वे रिकॉर्ड लौटाता है जिनके स्रोत और फ़ील्ड कार्य के जाँच-मानकों पर खरे उतरे हों। अनुरोध केवल अधिग्रहण चरण है।

रिस्पॉन्स-उन्मुख संग्रहण के लिए Web Unlocker का उपयोग करें, सेवा पेलोड को संरक्षित रखें, और निकाले गए फ़ील्ड को स्वीकार करने से पहले इच्छित पेज को मान्य करें। चुनौती, अपूर्ण, और वैध-पर-खाली स्थितियों को अलग-अलग रखें।

क्या आप अपने वेब डेटा को मान्य करने के लिए तैयार हैं?

Scrapeless के साथ एक अनुमत सामग्री जाँच बनाएँ और स्वीकृत रिकॉर्ड को वर्तमान मूल्य निर्धारण के संदर्भ में परखें। अपने एक्सट्रैक्शन कॉन्ट्रैक्ट पर Telegram पर चर्चा करें।

FAQ

प्र: क्या Cloudflare-संरक्षित वेबसाइट को स्क्रैप करना कानूनी है?

सुरक्षा तकनीक किसी पेज को संग्रहित करने की अनुमति स्थापित नहीं करती। स्क्रैपर उपयोग करने से पहले स्रोत की शर्तों, लागू आवश्यकताओं, और अपनी अधिकृत स्थिति की समीक्षा करें।

प्र: क्या इस Web Unlocker वर्कफ़्लो के लिए अलग से कॉन्फ़िगर किया हुआ प्रॉक्सी ज़रूरी है?

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

प्र: क्या HTTP 200 रिस्पॉन्स यह साबित करता है कि स्क्रैपिंग सफल रही?

HTTP 200 रिस्पॉन्स यह साबित नहीं करता कि अनुरोधित बिज़नेस सामग्री प्राप्त हो गई। रिकॉर्ड को स्वीकार करने से पहले पेज की पहचान, पेलोड, और आवश्यक फ़ील्ड का निरीक्षण करें।

प्र: वर्कफ़्लो को Agent Browser कब उपयोग करना चाहिए?

Agent Browser का उपयोग तब करें जब कार्य को नियंत्रित ब्राउज़र सेशन या पेज स्टेट के साथ इंटरेक्शन की आवश्यकता हो। केवल एक लौटा हुआ कंटेंट रिस्पॉन्स अक्सर रिस्पॉन्स-उन्मुख कार्य के लिए पर्याप्त होता है।

प्र: जब पेज सेलेक्टर मैच होना बंद हो जाएँ तो क्या बदलना चाहिए?

स्रोत मार्कअप और आवश्यक फ़ील्ड का पुनः निरीक्षण करें, फिर एक्सट्रैक्शन कॉन्ट्रैक्ट को अपडेट करें। सेलेक्टर का गुम परिणाम तब तक अनसुलझा रहना चाहिए जब तक पेज की पहचान और सामग्री की जाँच न हो जाए।

प्र: इस उदाहरण को कितनी समांतरता का उपयोग करना चाहिए?

एक सीमित स्रोत सेट के साथ शुरू करें और इस उदाहरण की संग्रहण नीति के रूप में प्रति होस्ट तीन से अधिक वर्कर न रखें। किसी भी बाद के विस्तार पर स्रोत की अनुमति और देखे गए संचालन का शासन होना चाहिए।

प्र: क्या यह वर्कफ़्लो किसी AI एजेंट के बिना चल सकता है?

HTTP अनुरोध और Python वैलिडेशन किसी AI एजेंट के बिना चल सकते हैं। डिटरमिनिस्टिक जाँचें समाप्त होने के बाद कोई एजेंट स्वीकृत रिकॉर्ड का उपभोग कर सकता है।

प्र: क्या अनुरोधित URL को कैनॉनिकल URL के रूप में संग्रहीत किया जाना चाहिए?

अनुरोधित URL को किसी भी अंतिम या कैनॉनिकल पेज पहचान से अलग संग्रहीत करें। कैनॉनिकल मान केवल तभी उपयोग करें जब अधिग्रहण या स्रोत सामग्री वास्तव में उसे स्थापित करे।

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

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

सूची