बड़े पैमाने पर वेब स्क्रैपिंग करना
(incolumitas.com)<p>- अगर आप ऐसी कोई सर्विस बनाते हैं जो लाखों Google searches चलाती हो, तो ब्लॉक हुए बिना काम करने के लिए किसी विकल्प की ज़रूरत होगी<br />
- सबसे आसान तरीका paid proxy का इस्तेमाल है, लेकिन यह काफ़ी महंगा पड़ता है <br />
→ इसलिए लेखक ने जो-जो तरीके आज़माए, उन्हें विस्तार से समझाने वाला यह एक दिलचस्प लेख है<br />
<br />
- शुरुआत में AWS Lambda + Puppeteer का इस्तेमाल किया गया <br />
→ AWS दुनिया भर में 16 regions देता है, और Lambda को 3 बार चलाने पर नया IP assign हो जाता है <br />
→ अगर 1000 Lambda एक साथ चलें, तो लगभग 250 public IP इस्तेमाल होते हैं<br />
→ 16 regions * 250 यानी 4000 IP addresses, और यह साप्ताहिक लाखों Google searches चलाने के लिए काफ़ी है <br />
→ GCP पर भी इसे आज़माया गया, लेकिन मज़ेदार बात यह है कि Google अपने ही cloud IPs को AWS की तुलना में ज़्यादा आक्रामक तरीके से ब्लॉक करता है<br />
→ यह 2019~2020 के बीच की बात है, इसलिए अब बदल चुका हो सकता है <br />
<br />
- यह तरीका Google/Bing/Amazon जैसी साइटों को scrape करने में काम आ सकता है, लेकिन इसकी सीमाएँ हैं<br />
→ अगर साइट DataDome, Akamai, Imperva जैसी anti-bot कंपनियों का इस्तेमाल करती है, तो यह तरीका लागू नहीं होता <br />
→ वे browser fingerprinting के बहुत अलग-अलग तरीकों से यह पहचान लेते हैं कि सामने bot है या नहीं<br />
→ Google Picasso, Font/TLS/WebGL Fingerprinting..<br />
→ वास्तव में ज़्यादातर बड़े scraping services cloud + Docker containers का इस्तेमाल करती हैं, इसलिए उन्हें पहचानना आसान होता है<br />
<br />
- ऐसी scraping infrastructure जो detect करना मुश्किल हो और scale भी हो सके <br />
→ scraping को सफल बनाने के लिए दो नियम <br />
1. browser settings के बारे में झूठ मत बोलिए <br />
2. सबसे ज़रूरी बात: browser settings के बारे में तभी झूठ बोलिए जब "किसी को ज़रा भी शक न हो"<br />
→ इसके लिए निष्कर्ष यही है कि बस "real devices का इस्तेमाल" करना सबसे अच्छा है<br />
⇨ अलग-अलग manufacturers से 500 सस्ते Android devices ख़रीदें और सस्ते data plans लें<br />
⇨ उन्हें कई शहरों में distribute करें (antenna के पास)<br />
⇨ DeviceFarmer/stf जैसे open source का इस्तेमाल करके devices को एक साथ control करें <br />
⇨ Android Go जैसे lightweight OS इंस्टॉल करें, और हर 5 मिनट में airplane mode चालू कराएँ ताकि लगातार नया IP address मिलता रहे<br />
⇨ "4G carrier grade NAT": IPv4 address exhaustion को रोकने के लिए बना तरीका, जिसमें एक IP को लाखों लोग share कर सकते हैं, इसलिए ब्लॉक करना लगभग असंभव है<br />
→ लेकिन 500 Android devices ख़रीदने पड़ते हैं, उन्हें लगाने की जगह चाहिए, और hardware maintenance भी करनी पड़ती है — यानी काफ़ी झंझट है <br />
<br />
- सुधार: Android को emulate करना <br />
→ Android devices ख़रीदने की बजाय Android-X8, Bluestacks, Android Studio Emulator आदि का इस्तेमाल किया जाए तो?<br />
→ Proxidize 4G mobile proxy बनाने में मदद करता है<br />
→ एक server में 50 4G dongles लगाए जाते हैं<br />
→ हर server पर 50~100 Android devices emulate किए जाते हैं <br />
→ ऐसे stations को 5 शहरों में लगाया जाता है <br />
→ फिर किसी मज़बूत command से इन stations को manage किया जाता है </p>
12 टिप्पणियां