टिकटोक डेटा को बिना ब्लॉक हुए कैसे स्क्रैप करें
Advanced Data Extraction Specialist
मुख्य बिंदु:
- TikTok अपने डेटा को पृष्ठ में भेजता है, फिर शेष को XHR के माध्यम से हाइड्रेट करता है। प्रोफाइल और पहले पोस्ट
#__UNIVERSAL_DATA_FOR_REHYDRATION__JSON ब्लॉब में रहते हैं; टिप्पणियाँ और गहरे पोस्ट स्क्रॉल-प्रेरित XHR के रूप में आते हैं जो आप नेटवर्क से पकड़ते हैं। - क्षेत्र एक साफ रेंडर प्राप्त करने का हिस्सा है। वही प्रोफाइल जो एक एग्रेस से टाइम आउट हो जाता है, तुरंत दूसरे से रेंडर होता है —
proxyCountryपिन करें और सत्र को हाइड्रेशन XHRs के लिए काफी TTL दें ताकि वह लैंड कर सकें। - आप नेटवर्क से निकालते हैं, चयनकर्ताओं का अनुमान लगाकर नहीं। पृष्ठ स्क्रॉल करते समय
xhr/fetchप्रतिक्रियाओं की सुनें और JSON को पार्स करें जो TikTok पहले ही लौटाता है — वीडियो ग्रिड का भंगुर DOM स्क्रैपिंग नहीं। - TikTok कड़ी पहचान करता है, इसलिए ब्राउज़र असली होना चाहिए। Scrapeless Scraping Browser पर चलना — एंटी-डिटेक्शन Chromium के साथ आवासीय एग्रेस — वही है जो हाइड्रेशन को पूरी तरह से होने में मदद करता है।
- एक सत्र, पांच सतहें। प्रोफाइल, पोस्ट, टिप्पणियाँ, खोज, और चैनल सभी एकल क्लाउड सत्र के माध्यम से समान रेंडर-फिर-निकालने के पैटर्न में परिवर्तित होते हैं।
- शुरू करने के लिए स्वतंत्र। नए Scrapeless खातों में मुफ्त Scraping Browser रनटाइम शामिल है — app.scrapeless.com पर साइन अप करें।
परिचय: TikTok अपने डेटा को कहाँ रखता है
TikTok अपने वेब पृष्ठों को दो चरणों में रेंडर करता है। प्रारंभिक HTML एक बड़ा JSON द्वीप ले जाता है — <script id="__UNIVERSAL_DATA_FOR_REHYDRATION__"> ब्लॉब — जिसमें प्रोफाइल, उसके आंकड़े, और पहले पृष्ठ के पोस्ट होते हैं। इसके बाद की सभी चीजें (जैसे और पोस्ट जब आप स्क्रॉल करते हैं, टिप्पणी थ्रेड, खोज पृष्ठ) पृष्ठ बूट होने के बाद XHR के माध्यम से लादे जाते हैं। इसलिए TikTok को स्क्रैप करना दो तकनीकों का काम है: पहले से मौजूद चीजों के लिए हाइड्रेशन JSON पढ़ें, और मांग पर लोड होने के लिए XHR प्रतिक्रियाओं को कैप्चर करें।
दोनों चरण इस बात पर निर्भर करते हैं कि TikTok एक वास्तविक ब्राउज़र को संचालित कर रहा है। प्लेटफॉर्म आक्रामकता से पहचान करता है, और एक साधारण HTTP अनुरोध या डिफ़ॉल्ट हेडलेस ब्राउज़र के लिए कोई उपयोगी डेटा नहीं मिलता है। रेंडर पूरा नहीं होता है।
यह गाइड Scrapeless Scraping Browser पर चलता है — एक एंटी-डिटेक्शन क्लाउड ब्राउज़र जो स्वयं विकसित Chromium को आवासीय प्रॉक्सी के साथ जोड़ा गया है — Puppeteer के साथ CDP के माध्यम से कनेक्टेड है। नीचे प्रोफाइल निकासी लाइव कैप्चर की गई थी; पोस्ट और टिप्पणी पैटर्न समान रेंडर-फिर-नेटवर्क-पढ़ने के दृष्टिकोण का उपयोग करते हैं। पूरे में केवल सार्वजनिक डेटा।
आप इसके साथ क्या कर सकते हैं
- एक क्रिएटर प्रोफाइल खींचें — बायो, सत्यापन, अनुयायी/दिल/वीडियो गणना — हाइड्रेशन JSON से।
- एक क्रिएटर के पोस्ट इकट्ठा करें जिसमें कैप्शन, वीडियो मेटाडेटा, लेखक, और व्यस्तता आँकड़े शामिल हैं।
- टिप्पणी थ्रेड स्क्रैप करें जिसमें पाठ, लाइक की गिनती, उत्तरों की गिनती, और लेखक हैंडल शामिल हैं।
- कीवर्ड खोज चलाएं और परिणाम फ़ीड कैप्चर करें।
- एक चैनल/हैशटैग फ़ीड पर चलें उसी स्क्रॉल-और-कैप्चर लूप के साथ।
क्यों Scrapeless Scraping Browser
Scrapeless Scraping Browser एक अनुकूलन योग्य, एंटी-डिटेक्शन क्लाउड ब्राउज़र है जिसे वेब क्रॉलर और एआई एजेंटों के लिए डिज़ाइन किया गया है। विशेष रूप से TikTok के लिए, यह लाता है:
- स्वयं विकसित Chromium — एक असली इंजन, इसलिए हाइड्रेशन JSON जनित होता है और XHRs सक्रिय होते हैं।
- एंटी-डिटेक्शन फिंगरप्रिंटिंग — सत्र सामान्य ब्राउज़र के रूप में पढ़ा जाता है, इसलिए TikTok वास्तव में वास्तविक डेटा प्रदान करता है, न कि खाली शेल।
- 195+ देशों में आवासीय प्रॉक्सी — देश द्वारा एग्रेस पिन करें ताकि पृष्ठ साफ़ और लगातार रेंडर हो।
- कॉन्फ़िगर करने योग्य सत्र TTL — सत्र को लंबे समय तक जीवित रखें ताकि स्क्रॉल-प्रेरित XHRs लैंड कर सकें पहले कि इसे खत्म किया जाए।
- एक मानक Puppeteer कनेक्शन — SDK के साथ सत्र बनाएं, फिर CDP पर
puppeteer.connect(); आपकी निकासी साधारण Puppeteer है।
app.scrapeless.com पर मुफ्त योजना पर अपना API कुंजी प्राप्त करें।
पूर्वापेक्षाएँ
- Node.js 18 या नया
- एक Scrapeless खाता और API कुंजी — app.scrapeless.com पर साइन अप करें
- Puppeteer और JSON की मूलभूत जानकारियाँ
इंस्टॉल करें
bash
npm install @scrapeless-ai/sdk puppeteer-core
bash
export SCRAPELESS_API_KEY="your_api_token_here"
चरण 1 — एक सत्र बनाएं और Puppeteer से कनेक्ट करें
SDK क्लाउड सत्र बनाता है (जहाँ आप प्रॉक्सी देश और TTL पिन करते हैं) और एक WebSocket अंत बिंदु लौटाता है; Puppeteer इसे CDP के माध्यम से कनेक्ट करता है:
javascript
import { Scrapeless } from '@scrapeless-ai/sdk';
import puppeteer from 'puppeteer-core';
const client = new Scrapeless({ apiKey: process.env.SCRAPELESS_API_KEY });
const { browserWSEndpoint } = await client.browser.create({
proxyCountry: 'US', // एग्रेस पिन करें — क्षेत्र यह प्रभावित करता है कि पृष्ठ कैसे रेंडर होता है
sessionTTL: 300, // सेकंड; हाइड्रेशन XHRs के लैंड करने के लिए पर्याप्त लंबा
});
const browser = await puppeteer.connect({ browserWSEndpoint });
const page = await browser.newPage();
इसका एक वास्तविक-विश्व नोट: वही प्रोफाइल जो लगातार एक एग्रेस क्षेत्र से टाइम आउट होता था, दूसरे से पहली बार में रेंडर हुआ। अगर रेंडर लटके, तो proxyCountry को पहले कुछ और करने से पहले बदलें।
चरण 2 — हाइड्रेशन JSON से प्रोफाइल स्क्रैप करें
प्रोफ़ाइल, इसके आंकड़े और पहले के पोस्ट पहले से ही पृष्ठ पर होते हैं जब यह लोड होता है - #__UNIVERSAL_DATA_FOR_REHYDRATION__ स्क्रिप्ट टैग के भीतर। उस नोड की प्रतीक्षा करें, इसे पार्स करें, और webapp.user-detail स्कोप को पढ़ें:
javascript
await page.goto('https://www.tiktok.com/@oddanimalspecimens', {
waitUntil: 'domcontentloaded',
timeout: 120000,
});
await page.waitForSelector('#__UNIVERSAL_DATA_FOR_REHYDRATION__', { timeout: 60000 });
const userInfo = await page.evaluate(() => {
const el = document.getElementById('__UNIVERSAL_DATA_FOR_REHYDRATION__');
const data = JSON.parse(el.textContent);
return data.__DEFAULT_SCOPE__['webapp.user-detail'].userInfo;
});
console.log(userInfo.user.uniqueId, '—', userInfo.stats);
यह TikTok का अपना userInfo ऑब्जेक्ट शब्दशः लौटाता है - एक user ऑब्जेक्ट और एक stats ऑब्जेक्ट। कोई DOM स्क्रैपिंग नहीं; आप उन डेटा को पढ़ रहे हैं जो TikTok ने अपने पृष्ठ को रेंडर करने के लिए भेजा है।
मुफ्त योजना पर अपना API कुंजी प्राप्त करें: app.scrapeless.com
चरण 3 - XHR से पोस्ट और टिप्पणियाँ कैप्चर करें
पहले पृष्ठ के पार पोस्ट, और सभी टिप्पणी थ्रेड्स, पृष्ठ बूट होने के बाद और स्क्रॉल करते समय XHR के रूप में आते हैं। पैटर्न पहले नेविगेट करने से पहले response श्रोता को संलग्न करना, फिर फेचेस को ट्रिगर करने के लिए स्क्रॉल करना है, फिर JSON बॉडीज़ को पार्स करना है:
javascript
const xhrCalls = [];
page.on('response', async (resp) => {
const rt = resp.request().resourceType();
if (rt !== 'xhr' && rt !== 'fetch') return;
try {
xhrCalls.push({ url: resp.url(), body: await resp.text() });
} catch { /* कुछ बॉडीज़ पढ़ने योग्य नहीं हैं; छोड़ दें */ }
});
await page.goto('https://www.tiktok.com/@oddanimalspecimens', { waitUntil: 'domcontentloaded' });
//lazy-loaded पोस्ट/टिप्पणियों को ट्रिगर करने के लिए स्क्रॉल करें
for (let i = 0; i < 5; i++) {
await page.evaluate(() => window.scrollBy(0, document.body.scrollHeight));
await new Promise((r) => setTimeout(r, 2000));
}
// आइटम/टिप्पणी सूची के एंडपॉइंट्स के लिए फ़िल्टर करें और बॉडीज़ को JSON.parse करें
const itemLists = xhrCalls.filter((c) => /\/api\/(post|comment)\//.test(c.url));
वहां से आप प्रत्येक कैप्चर की गई बॉडी को JSON.parse करते हैं और आइटम या टिप्पणी श्रृंखलाओं को निकालते हैं। यह प्रोफ़ाइल के समान रेंडर-फिर-नेटवर्क पढ़ने का दृष्टिकोण है, बस स्क्रॉलिंग द्वारा संचालित है न कि एकल हाइड्रेशन ब्लॉब द्वारा।
आपको क्या वापस मिलता है
प्रोफ़ाइल निष्कर्षण TikTok का userInfo ऑब्जेक्ट लौटाता है। नीचे का आकार ठीक उसी प्रकार का है जैसा लाइव रन ने उत्पन्न किया; गिनतियाँ एक असली कैप्चर हैं और समय के साथ बदलेंगी:
json
{
"user": {
"id": "...",
"uniqueId": "oddanimalspecimens",
"nickname": "Odd Animal Specimens",
"avatarLarger": "https://...",
"signature": "...",
"verified": false,
"secUid": "...",
"privateAccount": false
},
"stats": {
"followerCount": 4000000,
"followingCount": 9,
"heartCount": 78000000,
"videoCount": 179,
"diggCount": 0,
"friendCount": 6
}
}
// आकार TikTok का userInfo शब्दशः है; "..." के रूप में प्रदर्शित स्ट्रिंग फ़ील्ड एक निश्चित उदाहरण हैं, गिनतियाँ एक असली कैप्चर हैं और समय के साथ बदलती हैं।
कुछ ईमानदार अवलोकन:
userऑब्जेक्ट व्यापक है — TikTok दर्जनों फ़ील्ड (सेटिंग्स, secUid, संबंध ध्वज) शामिल करता है। आपको आवश्यक कुछ को पढ़ें; बाकी को अनदेखा करें।heartऔरheartCountदोनों दिखाई देते हैं और एक समान कुल ले जाते हैं -heartCountका उपयोग करें।- गिनतियाँ पैमाने पर गोल होती हैं। बड़े खातें गोल कुल की रिपोर्ट करते हैं (जैसे 4,000,000) उसी तरह जैसे TikTok उन्हें UI में दिखाता है।
- रेंडर के लिए क्षेत्र महत्वपूर्ण है, न कि केवल डेटा के लिए।
proxyCountryको पिन करें और सत्र को पर्याप्त TTL दें।
निष्कर्ष: हर TikTok सतह पर एक पैटर्न
TikTok को स्क्रैप करना दो पढ़ाई पर आ जाता है: पृष्ठ पर पहले से मौजूद डेटा के लिए #__UNIVERSAL_DATA_FOR_REHYDRATION__ को पार्स करें, और स्क्रॉल पर हाइड्रेट होने वाले XHR प्रतिक्रियाओं को कैप्चर करें। प्रोफाइल, पद, टिप्पणियाँ, खोज, और चैनल सभी उस एकल रेंडर-फिर-निकासी लूप के भिन्नताएँ हैं। Scrapeless Scraping Browser पर इसे चलाना रेंडर होने का कारण है — एंटी-डिटेक्शन क्रोमियम जो वासाऽसरित परिदृश्य के साथ, ताकि TikTok वास्तविक डेटा की सेवा करे बजाय एक खाली खोल के। समान SDK-ओवर-CDP पैटर्न का एक ईकॉमर्स संस्करण देखने के लिए, Etsy स्क्रैपर गाइड; Scraping Browser उत्पाद पृष्ठ और दस्तावेज़ पूरे SDK सतह को कवर करते हैं। क्षेत्र को पिन करें, स्क्रॉल भारी सतहों के लिए TTL को बढ़ाएं, और उस JSON को पढ़ें जिसे TikTok पहले से ही आपको देता है।
क्या आप अपना AI-सक्षम डेटा पाइपलाइन बनाने के लिए तैयार हैं?
हमारे समुदाय में शामिल हों, एक मुफ्त योजना का दावा करें और सामाजिक-डेटा पाइपलाइनों का निर्माण करने वाले डेवलपर्स के साथ कनेक्ट करें: Discord · Telegram।
साइन अप करें app.scrapeless.com पर मुफ्त स्क्रैपिंग ब्राउज़र रनटाइम के लिए और ऊपर दिए गए पैटर्नों को अपने कार्यप्रवाह की आवश्यकता के अनुसार प्रोफाइल, प्रश्नों, और चैनलों में अनुकूलित करें। पैमाने के लिए मूल्य निर्धारण देखें।
सामान्य प्रश्न
प्रश्न: क्या TikTok को स्क्रेप करना कानूनी है?
सार्वजनिक रूप से उपलब्ध डेटा एकत्र करना सामान्यतः अनुमेय है, लेकिन नियम क्षेत्रानुसार भिन्न होते हैं और TikTok की सेवा शर्तें लागू होती हैं। केवल सार्वजनिक डेटा स्क्रेप करें, सेवा शर्तें देखें, और अपने उपयोग के मामले के लिए सलाह लें।
प्रश्न: मेरा स्क्रैप खाली पृष्ठ या समय समाप्त क्यों होता है?
दो सामान्य कारण: वह क्षेत्र जहाँ से TikTok आपको रूट करता है, और एक सत्र जो हाइड्रेशन पूरा होने से पहले समाप्त हो जाता है। proxyCountry को पिन करें (अगर रेंडर रुक जाए तो इसे स्विच करें) और sessionTTL बढ़ाएँ।
प्रश्न: क्या मुझे एक प्रॉक्सी की आवश्यकता है?
हाँ। TikTok आईपी प्रतिष्ठा को भारी वजन देता है; पृष्ठ को रेंडर करने और XHRs को चलाने के लिए proxyCountry के साथ आवासीय आउटगोइंग पिन करें।
प्रश्न: मैं पहले पृष्ठ के पार पोस्ट्स कैसे प्राप्त करूं?
पृष्ठ को स्क्रॉल करें ताकि लेज़ी-लोडेड XHR अनुरोधों को सक्रिय किया जा सके और उन्हें response श्रोता के साथ कैप्चर करें, फिर JSON बॉडीज़ को पार्स करें — रीहाइड्रेशन ब्लॉब केवल पहले बैच को रखता है।
प्रश्न: DOM मार्कअप बदल गया और मेरे चयनकर्ता टूट गए। अब क्या करें?
JSON स्रोतों पर निर्भर रहें — रीहाइड्रेशन ब्लॉब और XHR बॉडीज़ — बजाय रेंडर किए गए ग्रिड को स्क्रेप करने के। वे दृश्य मार्कअप की तुलना में बहुत कम बदलते हैं। केवल उनके लिए पुनः जांचें जो आपको अभी भी चाहिए।
प्रश्न: मैं TikTok के खिलाफ कितने कार्यकर्ता चला सकता हूँ?
एक्सकॉनकरेंसी को संकीर्ण रखें — प्रति होस्ट कुछ सत्र — ताकि आईपी-प्रतिष्ठा संकेत साफ रहे।
प्रश्न: क्या मैं इसे बिना किसी एआई एजेंट के चला सकता हूँ?
हाँ। यह Scrapeless SDK है साथ ही सीडीपी पर प्लेन Puppeteer — कोई एजेंट आवश्यक नहीं है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



