इस लेख में हमने आपकी सभी महत्वपूर्ण शंकाओं के जवाब देने की कोशिश की है। किसी भी समस्या को हल करना शुरू करने का पहला कदम यह तय करना है कि कौन-सा सुरक्षा सिस्टम उपयोग में है। इसके लिए आप लोकप्रिय कैप्चा और एंटी-बॉट सुरक्षा सिस्टमों की सूची देख सकते हैं, जहाँ ऐसे दृश्य उदाहरण और मुख्य संकेत दिए गए हैं जो यह जल्दी समझने में मदद करते हैं कि आप किस समाधान के साथ काम कर रहे हैं।
यदि आपको पता चलता है कि आपकी साइट पर DataDome CAPTCHA उपयोग हो रहा है, तो अगला कदम इसके गुणों और काम करने के तरीके को और विस्तार से समझना है। इसी लेख में आप DataDome CAPTCHA सिस्टम को जोड़ने (इंटीग्रेट करने) की निर्देशिका भी देख सकते हैं, ताकि आप पूरी तरह समझ सकें कि यह आपकी साइट पर कैसे काम करता है। इससे आप न केवल मौजूदा सुरक्षा को बेहतर ढंग से समझ पाएँगे, बल्कि उसकी सपोर्ट और रखरखाव की सही योजना भी बना सकेंगे।
API के माध्यम से CapMonster Cloud के साथ काम करने के सामान्य चरण:
type - CustomTask
class - DataDome
websiteURL - मुख्य पृष्ठ का पता जहाँ कैप्चा हल की जा रही है।
captchaUrl (metadata के अंदर) - "captchaUrl" — कैप्चा का लिंक। आमतौर पर इस प्रारूप में: "https://geo.captcha-delivery.com/captcha/?initialCid=..."
datadomeCookie (metadata के अंदर) - आपकी DataDome कुकीज़। इन्हें पृष्ठ पर document.cookie के माध्यम से प्राप्त किया जा सकता है (यदि कुकीज़ में HttpOnly फ्लैग नहीं है), Set-Cookie हेडर में: "datadome=...", या HTML कोड से सीधे initialCid प्राप्त किया जा सकता है।
userAgent - ब्राउज़र User-Agent। केवल वर्तमान UA Windows से प्रदान करें।
इसके अलावा, इस कार्य के लिए अपने प्रॉक्सी का उपयोग करना आवश्यक है:
proxyType :
proxyAddress - प्रॉक्सी IPv4/IPv6 IP पता।
proxyPort - प्रॉक्सी पोर्ट।
proxyLogin - प्रॉक्सी सर्वर लॉगिन।
proxyPassword - प्रॉक्सी सर्वर पासवर्ड।
https://api.capmonster.cloud/createTask
{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "DataDome",
"websiteURL": "https://example.com",
"userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36",
"metadata": {
"captchaUrl": "https://geo.captcha-delivery.com/interstitial/?initialCid=AHrlqAAAAAMA9UvsL58YLqIAXNLFPg%3D%3D&hash=C0705ACD75EBF650A07FF8291D3528&cid=7sfa5xUfDrR4bQTp1c2mhtiD7jj9TXExcQypjdNAxKVFyIi1S9tE0~_mqLa2EFpOuzxKcZloPllsNHjNnqzD9HmBA4hEv7SsEyPYEidCBvjZEaDyfRyzefFfolv0lAHM&referer=https%3A%2F%2Fwww.example.com.au%2F&s=6522&b=978936&dm=cm",
"datadomeCookie": "datadome=VYUWrgJ9ap4zmXq8Mgbp...64emvUPeON45z"
},
"proxyType": "http",
"proxyAddress": "123.45.67.89",
"proxyPort": 8080,
"proxyLogin": "proxyUsername",
"proxyPassword": "proxyPassword"
}
}
{
"errorId":0,
"taskId":407533072
}https://api.capmonster.cloud/getTaskResult{
"clientKey":"API_KEY",
"taskId": 407533072
}
{
"errorId": 0,
"status": "ready",
"solution": {
"domains": {
"www.example.com": {
"cookies": {
"datadome": "P1w0VnjFcTFslfps0J4FaPpY_QPbPBW4MeYxj4LW~pztIfJiSSuBPr8oQTUHzdrfgv137FbOBd3kCUOOgny7LhIkhm5e1qdtzYM4s2e46U_qfERK4KiCy22MOSIDsDyh"
},
"localStorage": null
}
},
"url": null,
"fingerprint": null,
"headers": null,
"data": null
}
}
// npx playwright install chromium
import { chromium } from 'playwright';
import { CapMonsterCloudClientFactory, ClientOptions, DataDomeRequest } from '@zennolab_com/capmonstercloud-client';
// अपनी CapMonster Cloud API कुंजी दर्ज करें
const API_KEY = 'YOUR_API_KEY';
// आपकी साइट DataDome द्वारा सुरक्षित है
const TARGET_URL = 'https://example.com/';
const USER_AGENT = Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/142.0.0.0 Safari/537.36
// प्रॉक्सी सेटिंग
const proxy = {
proxyType: "http",
proxyAddress: '8.8.8.8',
proxyPort: 8080,
proxyLogin: 'proxyLogin',
proxyPassword: 'proxyPassword'
};
async function main() {
// ब्राउज़र लॉन्च करें
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext({ userAgent: USER_AGENT });
const page = await context.newPage();
// साइट पर जाएं
await page.goto(TARGET_URL, { waitUntil: 'networkidle' });
// पहले से स्थापित datadome कुकी खोजें (यदि मौजूद है)
const existingDd = (await context.cookies()).find(c => /datadome|dd_/i.test(c.name));
// DataDome iframe खोजें -> CAPTCHA URL
const captchaUrl = await page.evaluate(() =>
Array.from(document.querySelectorAll('iframe[src]'))
.find(i => /captcha-delivery\.com\/captcha/i.test(i.src))
?.src || null
);
console.log(`=== निकाले गए DataDome पैरामीटर ===`);
console.log(`captchaUrl:`, captchaUrl || 'नहीं मिला');
console.log(`वर्तमान datadome कुकी::`, existingDd ? ${existingDd.name}=${existingDd.value}` : 'कोई नहीं');
const cm = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// CapMonster में टास्क भेजें
console.log(`CapMonster में DataDome टास्क भेज रहे हैं......`);
// DataDome समाधान के लिए टास्क भेजना
const solve = await cm.Solve(new DataDomeRequest({
_class: "DataDome",
websiteURL: TARGET_URL,
userAgent: USER_AGENT,
proxy,
metadata: {
captchaUrl: captchaUrl || undefined,
datadomeCookie: existingDd
? `${existingDd.name}=${existingDd.value}`
: undefined
}
}));
const sol = solve?.solution;
// सॉल्यूशन से डोमेन और आवश्यक कुकी प्राप्त करें
const host = new URL(TARGET_URL).hostname;
const domainKey =
Object.keys(sol.domains).find(d => d.includes(host))
|| Object.keys(sol.domains)[0];
const cookiesArr = sol.domains[domainKey]?.cookies || [];
console.log(`\n=== CapMonster कुकीज़ ===`);
cookiesArr.forEach(c => console.log(`${c.name}=${c.value}`));
const ddSolved =
cookiesArr.find(c => c.name?.toLowerCase() === 'datadome')
|| cookiesArr.find(c => /datadome/i.test(c.name));
// ब्राउज़र में datadome कुकी सेट करें
await context.addCookies([{
name: 'datadome',
value: ddSolved.value,
domain: '.' + host,
path: '/',
httpOnly: ddSolved.httpOnly ?? true,
secure: ddSolved.secure ?? true,
sameSite: ddSolved.sameSite ?? 'Lax'
}]);
console.log(`datadome कुकी सेट की गई:`, ddSolved.value);
// कुकी डालने के बाद साइट फिर से खोलें
const page2 = await context.newPage();
const resp2 = await page2.goto(TARGET_URL, { waitUntil: 'domcontentloaded', timeout: 60000 });
console.log(`कुकी सेट करने के बाद स्थिति:: ${resp2?.status()}`);
await browser.close();
}
main();
1. अपने अकाउंट में लॉगिन करें या रजिस्टर करें और client-side और server-side keys प्राप्त करें।
महत्वपूर्ण: रजिस्ट्रेशन के लिए आपकी कंपनी का कॉर्पोरेट ईमेल आवश्यक है।
रजिस्ट्रेशन के बाद, आप एडमिन पैनल में पहुंचेंगे।
2. पैनल में साइट (डोमेन) जोड़ें।
अपने डोमेन को सिस्टम में जोड़ें और सुरक्षा पैरामीटर चुनें:
3. सर्वर-साइड इंटीग्रेशन स्थापित करें।
Protection API का उपयोग करें या अपने स्टैक (Node.js / Express, Nginx, Cloudflare, Java (Tomcat/Jetty/Vert.x), Go आदि) के लिए रेडी-मेड मॉड्यूल चुनें।
DataDome का आधिकारिक SDK/middleware इंस्टॉल करें और सर्वर की key सेट करें।
Node.js में DataDome इंटीग्रेशन का उदाहरण:
DataDome सर्वर को बॉट्स और संदिग्ध अनुरोधों से सुरक्षित करता है, आवश्यक होने पर challenge दिखाता है। Express या Node.js HTTP server के साथ उपयोग किया जा सकता है।
इंस्टॉलेशन
Express के लिए:
npm install @datadome/module-expressNode.js HTTP मॉड्यूल के लिए:
npm install @datadome/module-httpNode.js संस्करण 18 या उससे ऊपर समर्थित हैं। DataDome पैनल से server-side key आवश्यक है।
const { DatadomeExpress } = require('@datadome/module-express');
const express = require('express');
const app = express();
// DataDome क्लाइंट इनिशियलाइज़ करें
const datadomeClient = new DatadomeExpress('YOUR_SERVER_KEY');
// middleware कनेक्ट करें
app.use(datadomeClient.middleware());
// आपके रूट्स
app.get('/', (req, res) => {
res.send('Hello World');
});
// सर्वर लॉन्च करें
app.listen(3000, () => {
console.log('Server running on port 3000');
})
const { DatadomeHttp } = require('@datadome/module-http');
const http = require('http');
const datadomeClient = new DatadomeHttp('YOUR_SERVER_KEY');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer(async (req, res) => {
const { result, error } = await datadomeClient.handleRequest(req, res);
if (result === 'ALLOW') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
} else {
console.log('Request challenged');
if (error) console.error(error);
}
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});मॉड्यूल सेटिंग्स
क्लाइंट बनाते समय कॉन्फ़िगरेशन पास कर सकते हैं:
const datadomeClient = new DatadomeExpress('YOUR_SERVER_KEY', {
timeout: 150, // timeout (ms) जिसके बाद अनुरोध स्वीकार किया जाए
urlPatternInclusion: null, // कौन-सी URLs जाँचें
urlPatternExclusion: /\.(avi|flv|mka|mkv|mov|mp4|mpeg|mpg|mp3|flac|ogg|ogm|opus|wav|webm|webp|bmp|gif|ico|jpeg|jpg|png|svg|svgz|swf|eot|otf|ttf|woff|woff2|css|less|js|map|json|avif|xml|gz|zip)$/i,
endpointHost: 'api.datadome.co',
});उन्नत विकल्प:
सर्वर-साइड इंटीग्रेशन के लिए अधिक जानकारी आधिकारिक डॉक्यूमेंटेशन में।
4. क्लाइंट-साइड इंटीग्रेशन करें।
JS Tag अपने साइट के <head> में डालें:
<head>
<script>
window.ddjskey = 'YOUR_DATADOME_JS_KEY';
window.ddoptions = {
// यहाँ अपनी सेटिंग डालें (वैकल्पिक)
};
</script>
<script src="https://js.datadome.co/tags.js" async></script>
<!-- अन्य head एलिमेंट्स -->
</head>
YOUR_DATADOME_JS_KEY → अपने Client-Side key से बदलें
स्क्रिप्ट को <head> के प्रारंभ में लोड करें ताकि DataDome अनुरोधों को सही ढंग से ट्रैक कर सके।
यदि साइट CSP का उपयोग करती है, तो निम्न निर्देश जोड़ें:
<script nonce="DYNAMIC_NONCE">
window.ddjskey = 'YOUR_DATADOME_JS_KEY';
window.ddoptions = {};
</script>
script-src js.datadome.co ct.captcha-delivery.com 'nonce-DYNAMIC_NONCE';
connect-src api-js.datadome.co; /* JS Tag डेटा भेजने के लिए */
frame-src *.captcha-delivery.com; /* Challenge पृष्ठ के लिए */
worker-src blob:; /* Web workers के लिए */
क्लाइंट-साइड इंटीग्रेशन का अधिक विवरण DataDome CAPTCHA आधिकारिक डॉक्यूमेंटेशन में।
परिणाम जांच
सफलतापूर्वक सत्यापन के बाद DataDome datadome= कुकी बनाता है। यह कुकी उपयोगकर्ता द्वारा स्वचालित रूप से भेजी जाती है — और सर्वर अनुरोध को स्वीकार कर लेता है। यदि कुकी नहीं है या अवैध है, तो DataDome फिर से चुनौती दिखाएगा।
अगर आपके पास ऐसा साइट आया है, जिस पर पहले से ही कोई कैप्चा या अन्य सुरक्षा प्रणाली लगी हुई है और आपके पास कोड तक पहुंच नहीं है — तो घबराने की ज़रूरत नहीं है! यह पता लगाना काफ़ी आसान है कि वास्तव में कौन-सी तकनीक इस्तेमाल हो रही है। काम की सही जाँच के लिए आप अलग-थलग टेस्ट वातावरण में CapMonster Cloud पहचान सेवा का उपयोग कर सकते हैं, ताकि यह सुनिश्चित हो सके कि टोकन प्रोसेसिंग का मेकैनिज़्म और वेरिफिकेशन लॉजिक ठीक तरह से काम कर रहे हैं।
DataDome CAPTCHA के मामले में सिस्टम की पहचान करना, उसके व्यवहार का विश्लेषण करना और यह सुनिश्चित करना ही काफ़ी है कि सुरक्षा सही तरीके से काम कर रही है। इस लेख में हमने दिखाया है कि DataDome CAPTCHA को कैसे पहचाना जाए और इसे जोड़ने या दोबारा कॉन्फ़िगर करने की निर्देशिका कहाँ मिलेगी, ताकि आप आत्मविश्वास के साथ सुरक्षा को बनाए रख सकें और इसके काम को नियंत्रित कर सकें।