बड़े पैमाने पर वेब स्क्रैपिंग करना
(incolumitas.com)-
अगर आप ऐसी कोई सर्विस बनाते हैं जो लाखों Google searches चलाती हो, तो ब्लॉक हुए बिना काम करने के लिए किसी विकल्प की ज़रूरत होगी
-
सबसे आसान तरीका paid proxy का इस्तेमाल है, लेकिन यह काफ़ी महंगा पड़ता है
→ इसलिए लेखक ने जो-जो तरीके आज़माए, उन्हें विस्तार से समझाने वाला यह एक दिलचस्प लेख है
- शुरुआत में AWS Lambda + Puppeteer का इस्तेमाल किया गया
→ AWS दुनिया भर में 16 regions देता है, और Lambda को 3 बार चलाने पर नया IP assign हो जाता है
→ अगर 1000 Lambda एक साथ चलें, तो लगभग 250 public IP इस्तेमाल होते हैं
→ 16 regions * 250 यानी 4000 IP addresses, और यह साप्ताहिक लाखों Google searches चलाने के लिए काफ़ी है
→ GCP पर भी इसे आज़माया गया, लेकिन मज़ेदार बात यह है कि Google अपने ही cloud IPs को AWS की तुलना में ज़्यादा आक्रामक तरीके से ब्लॉक करता है
→ यह 2019~2020 के बीच की बात है, इसलिए अब बदल चुका हो सकता है
- यह तरीका Google/Bing/Amazon जैसी साइटों को scrape करने में काम आ सकता है, लेकिन इसकी सीमाएँ हैं
→ अगर साइट DataDome, Akamai, Imperva जैसी anti-bot कंपनियों का इस्तेमाल करती है, तो यह तरीका लागू नहीं होता
→ वे browser fingerprinting के बहुत अलग-अलग तरीकों से यह पहचान लेते हैं कि सामने bot है या नहीं
→ Google Picasso, Font/TLS/WebGL Fingerprinting..
→ वास्तव में ज़्यादातर बड़े scraping services cloud + Docker containers का इस्तेमाल करती हैं, इसलिए उन्हें पहचानना आसान होता है
- ऐसी scraping infrastructure जो detect करना मुश्किल हो और scale भी हो सके
→ scraping को सफल बनाने के लिए दो नियम
-
browser settings के बारे में झूठ मत बोलिए
-
सबसे ज़रूरी बात: browser settings के बारे में तभी झूठ बोलिए जब "किसी को ज़रा भी शक न हो"
→ इसके लिए निष्कर्ष यही है कि बस "real devices का इस्तेमाल" करना सबसे अच्छा है
⇨ अलग-अलग manufacturers से 500 सस्ते Android devices ख़रीदें और सस्ते data plans लें
⇨ उन्हें कई शहरों में distribute करें (antenna के पास)
⇨ DeviceFarmer/stf जैसे open source का इस्तेमाल करके devices को एक साथ control करें
⇨ Android Go जैसे lightweight OS इंस्टॉल करें, और हर 5 मिनट में airplane mode चालू कराएँ ताकि लगातार नया IP address मिलता रहे
⇨ "4G carrier grade NAT": IPv4 address exhaustion को रोकने के लिए बना तरीका, जिसमें एक IP को लाखों लोग share कर सकते हैं, इसलिए ब्लॉक करना लगभग असंभव है
→ लेकिन 500 Android devices ख़रीदने पड़ते हैं, उन्हें लगाने की जगह चाहिए, और hardware maintenance भी करनी पड़ती है — यानी काफ़ी झंझट है
- सुधार: Android को emulate करना
→ Android devices ख़रीदने की बजाय Android-X8, Bluestacks, Android Studio Emulator आदि का इस्तेमाल किया जाए तो?
→ Proxidize 4G mobile proxy बनाने में मदद करता है
→ एक server में 50 4G dongles लगाए जाते हैं
→ हर server पर 50~100 Android devices emulate किए जाते हैं
→ ऐसे stations को 5 शहरों में लगाया जाता है
→ फिर किसी मज़बूत command से इन stations को manage किया जाता है
12 टिप्पणियां
प्रॉक्सी, स्क्रैपिंग सर्विस, एंटी-बॉट सॉफ़्टवेयर आदि ऊपर दिए गए लेख में अच्छी तरह से संक्षेपित किए गए हैं।
कमाल की हैकिंग है!
https://www.diffbot.com/products/crawl/
crawl करके webpage scraping करने वाली सेवाएं भी हैं। scrape किए गए data को अनावश्यक जानकारी हटाकर json में store किया जाता है.
मुँह खुला का खुला रह गया...
वैसे यह पूरी तरह अलग बात है..
https://serpapi.com/ जैसी जगहें भी हैं, जो Google search को API बनाकर बेचती हैं.
लेकिन यहाँ Naver search को भी API बनाकर साथ में बेचते हैं, हाहा
https://serpapi.com/naver-search-api
महीने में 30,000 searches के लिए $250 — काफ़ी चौंकाने वाली? कीमत
क्या यह इसलिए चौंकाने वाला है क्योंकि यह बहुत महंगा है? मुझे ठीक से अंदाज़ा नहीं हो रहा।
हाँ, यह काफ़ी महँगा है। पेड proxy इस्तेमाल करने वगैरह की तुलना में।
लेकिन API होने की वजह से block होने की चिंता के बिना यह सुविधाजनक है
घरेलू संदर्भ में देखें तो कुछ 0 yen budget फोन प्लान याद आते हैं जिनमें कुछ हद तक डेटा मिलता है...
लेकिन बड़े पैमाने पर साइन-अप करना मुश्किल है, इसलिए यह भी कठिन होगा.
Google Fi के मामले में, एक लाइन पर 4 अतिरिक्त data SIM तक जोड़े जा सकते हैं, इसलिए यह भी एक तरीका हो सकता है
पहले जब naver की किसी चीज़ को scrape कर रहा था
तो याद है कि AWS lambda पर यह नहीं चल रहा था, लेकिन GCP functions पर चल रहा था,
मुझे लगा था कि शायद IP range खुली होने की वजह से ऐसा है, लेकिन लगता है कि ऐसा भी नहीं है।
मैं पहले से ही इसे पहले तरीके से कर रहा था, इसलिए देख रहा था कि और कौन-से तरीके हैं.. यह तो मैंने सोचा भी नहीं था.
असल में, अगर Lambda+Puppeteer वाले पहले तरीके को भी उसी तरह किया जाए तो वह भी ठीक लग सकता है.
लेकिन अंत में दिए गए Proxidize तरीके से तुलना करें तो, शायद scraping के scale के अनुसार लागत में फर्क पड़ेगा.
जितनी अधिक बड़े पैमाने की जरूरत होगी, Proxidize उतना ही स्थिर होगा, लेकिन इसे सरलता से करने के लिए पहला तरीका भी बुरा नहीं लगता.
अंत में परिचय कराया गया https://proxidize.com/ दिलचस्प है.
यह एक hardware+software solution है, जो आपको खुद 4G mobile proxy बनाकर उसे manage करने देता है.
5-dongle version $399 का है. उनके user country list में Korea भी दिख रहा है, तो शायद इसका उपयोग संभव होगा?
हालांकि यह CGNAT तक नहीं जाता, लेकिन software proxies के पूरे pool को manage करने वाला Scrapoxy जैसा solution भी है.