CAPSOLVER
ब्लॉग
एवीएस कैप्चा को नोड जेएस के साथ कैसे हल करें

एवीएस कैप्चा को नोड जेएस के साथ कैसे हल करें

Logo of CapSolver

Aloísio Vítor

Image Processing Expert

03-Nov-2025

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

इस विस्तृत गाइड में Node.js और CapSolver सेवा के साथ एक शक्तिशाली, स्वचालित समाधान प्रदान किया जाता है। हम वातावरण सेट करने, एक मॉड्यूलर Node.js स्क्रिप्ट के कार्यान्वयन, और CapSolver के विशेषज्ञ AntiAwsWafTask के उपयोग के माध्यम से WAF चुनौती (HTTP 202) और WAF कैप्चा (HTTP 405) स्थितियों के बाहर निकलने के लिए चलाएंगे। इस ट्यूटोरियल के अंत तक, आपके पास सुरक्षित सामग्री तक पहुंचने के लिए आवश्यक aws-waf-token कुकी ले जाने वाला एक प्रोडक्शन-तैयार स्क्रिप्ट होगा।

⚙️ पूर्वापेक्षा

शुरू करने से पहले, निम्न परिस्थितियों और जानकारी के साथ अपने वातावरण तैयार करें:

  1. Node.js वातावरण: आपके सिस्टम पर Node.js स्थापित है (LTS संस्करण सुझाया जाता है)।
  2. CapSolver API कुंजी: आपके पास CapSolver खाता होना चाहिए और आपकी API कुंजी होनी चाहिए।
  3. प्रॉक्सी (वैकल्पिक): यदि लक्षित वेबसाइट के भौगोलिक सीमाबद्धता है या आपके वास्तविक IP को छिपाने की आवश्यकता है, तो एक HTTP/HTTPS प्रॉक्सी तैयार करें।

🛠️ चरण एक: आवश्यक निर्भरताओं के स्थापना

अपने परियोजना निर्देशिका में, निम्न आदेश चलाएं ताकि आवश्यक Node.js मॉड्यूल स्थापित हो जाएं:

bash Copy
npm install axios cheerio
  • axios: HTTP अनुरोध भेजने के लिए उपयोग किया जाता है।
  • cheerio: HTML सामग्री के विश्लेषण और AWS WAF चुनौती के लिए आवश्यक पैरामीटर निकालने के लिए उपयोग किया जाता है।

💻 चरण दो: Node.js मुख्य कोड कार्यान्वयन

नीचे दिए गए AWS WAF चुनौती और कैप्चा को हल करने के लिए Node.js स्क्रिप्ट है। यह वेबसाइट द्वारा लौटाए गए स्थिति कोड की स्वचालित रूप से पहचान करता है और आवश्यकता के अनुसार उसके संबंधित CapSolver टास्क को चलाता है।

कृपया निम्न स्क्रिप्ट को aws_waf_solver.js के रूप में सहेजें।

javascript Copy
const axios = require('axios');
const cheerio = require('cheerio');
const { URL } = require('url');

// ⚠️ विनिर्देश: कृपया अपने वास्तविक मानों से बदलें
const CLIENT_KEY = "YOUR_CAPSOLVER_API_KEY"; // अपने CapSolver API कुंजी से बदलें
const PAGE_URL = "https://norway-meetup.aws.wslab.no/"; // लक्षित वेबसाइट URL से बदलें
const PROXY = "YOUR_PROXY_ADDRESS"; // अपने प्रॉक्सी पता से बदलें (फॉर्मैट: user:pass@ip:port या ip:port)

// --- सहायक कार्य ---

/**
 * निर्दिष्ट मिलीसेकंड के लिए निष्पादन को रोकता है
 * @param {number} ms मिलीसेकंड
 */
function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
}

/**
 * CapSolver के साथ एक कार्य बनाता है
 * @param {object} payload कार्य भार
 * @returns {Promise<object>} कार्य बनाने का परिणाम
 */
async function createTask(payload) {
    try {
        const res = await axios.post('https://api.capsolver.com/createTask', {
            clientKey: CLIENT_KEY,
            task: payload
        });
        if (res.data.errorId !== 0) {
            throw new Error(`CapSolver API त्रुटि: ${res.data.errorDescription}`);
        }
        return res.data;
    } catch (error) {
        console.error("CapSolver कार्य बनाने में विफल रहे:", error.message);
        return null;
    }
}

/**
 * कार्य पूरा होने तक CapSolver कार्य परिणाम प्राप्त करता है
 * @param {string} taskId कार्य पहचान
 * @returns {Promise<object>} कार्य परिणाम
 */
async function getTaskResult(taskId) {
    if (!taskId) return null;
    console.log(`कार्य परिणाम की प्रतीक्षा कर रहे हैं (ID: ${taskId})...`);
    try {
        let success = false;
        let result = null;
        while (!success) {
            await sleep(3000); // प्रत्येक 3 सेकंड के बाद पूछताछ
            const res = await axios.post('https://api.capsolver.com/getTaskResult', {
                clientKey: CLIENT_KEY,
                taskId: taskId
            });

            if (res.data.errorId !== 0) {
                throw new Error(`CapSolver API त्रुटि: ${res.data.errorDescription}`);
            }

            if (res.data.status === "ready") {
                success = true;
                result = res.data;
                console.log("कार्य पूरा हो गया, हल प्राप्त कर लिया गया।");
            } else if (res.data.status === "processing") {
                console.log("कार्य अभी भी प्रसंस्करण में है...");
            }
        }
        return result;
    } catch (error) {
        console.error("CapSolver कार्य परिणाम प्राप्त करने में विफल रहे:", error.message);
        return null;
    }
}

// --- मुख्य समाधान कार्य ---

/**
 * AWS WAF चुनौती हल करता है (स्थिति कोड 202)
 * @param {string} awsChallengeJS AWS चुनौती जावास्क्रिप्ट URL
 * @returns {Promise<string|null>} हल किए गए AWS WAF कुकी मान
 */
async function solveAwsChallenge(awsChallengeJS) {
    console.log("AWS WAF चुनौती पहचानी गई (स्थिति कोड 202), हल करना शुरू कर रहे हैं...");
    const taskPayload = {
        type: "AntiAwsWafTask",
        websiteURL: PAGE_URL,
        awsChallengeJS,
        proxy: PROXY
    };
    const taskData = await createTask(taskPayload);
    if (!taskData) return null;

    const result = await getTaskResult(taskData.taskId);
    if (result && result.solution && result.solution.cookie) {
        return result.solution.cookie;
    }
    return null;
}

/**
 * AWS WAF कैप्चा + चुनौती हल करता है (स्थिति कोड 405)
 * @param {string} htmlContent कैप्चा पैरामीटर वाला HTML सामग्री
 * @param {string} awsChallengeJS AWS चुनौती जावास्क्रिप्ट URL
 * @returns {Promise<string|null>} हल किए गए AWS WAF कुकी मान
 */
async function solveAwsCaptchaChallenge(htmlContent, awsChallengeJS) {
    console.log("AWS WAF कैप्चा पहचानी गई (स्थिति कोड 405), हल करना शुरू कर रहे हैं...");
    const $ = cheerio.load(htmlContent);
    const scriptContent = $("script[type='text/javascript']").last().html();

    if (!scriptContent) {
        console.error("कैप्चा पैरामीटर वाला स्क्रिप्ट सामग्री नहीं मिली।");
        return null;
    }

    // नियमित अभिव्यक्ति का उपयोग पैरामीटर निकालने के लिए करें
    const keyMatch = /"key":"(.*?)"/.exec(scriptContent);
    const ivMatch = /"iv":"(.*?)"/.exec(scriptContent);
    const contextMatch = /"context":"(.*?)"/.exec(scriptContent);

    const key = keyMatch ? keyMatch[1] : null;
    const iv = ivMatch ? ivMatch[1] : null;
    const context = contextMatch ? contextMatch[1] : null;

    if (!key || !iv || !context) {
        console.error("स्क्रिप्ट से सभी आवश्यक कैप्चा पैरामीटर (key, iv, context) निकालने में असफल रहे।");
        return null;
    }

    console.log(`निकाले गए पैरामीटर: Key=${key}, IV=${iv}, Context=${context}`);

    const taskPayload = {
        type: "AntiAwsWafTask", // CapSolver एक ही कार्य प्रकार का उपयोग सभी AWS WAF स्थितियों के लिए करता है
        websiteURL: PAGE_URL,
        awsKey: key,
        awsIv: iv,
        awsContext: context,
        awsChallengeJS,
        proxy: PROXY
    };

    const taskData = await createTask(taskPayload);
    if (!taskData) return null;

    const result = await getTaskResult(taskData.taskId);
    if (result && result.solution && result.solution.cookie) {
        return result.solution.cookie;
    }
    return null;
}

/**
 * मुख्य निष्पादन कार्य
 */
async function main() {
    let awsWafCookie = null;
    let initialResponse = null;

    // 1. लक्षित पृष्ठ के लिए पहला अनुरोध
    try {
        console.log(`लक्षित पृष्ठ के लिए अनुरोध कर रहे हैं: ${PAGE_URL}`);
        initialResponse = await axios.get(PAGE_URL, {
            headers: {
                // ब्राउजर अनुरोध हेडर के अनुकरण करें
                "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
                "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
                "Accept-Encoding": "gzip, deflate, br",
                "Accept-Language": "en-US,en;q=0.9",
                "Cache-Control": "max-age=0",
                "Upgrade-Insecure-Requests": "1"
            },
            // 2xx, 3xx, 4xx स्थिति कोड के साथ प्रसंस्करण की अनुमति दें
            validateStatus: (status) => status >= 200 && status < 500
        });
        console.log(`प्रारंभिक परिणाम स्थिति कोड: ${initialResponse.status}`);
    } catch (error) {
        console.error(`प्रारंभिक अनुरोध विफल रहा: ${error.message}`);
        return;
    }

    const $ = cheerio.load(initialResponse.data);
    const scriptTags = $('script[src*="token.awswaf.com"]');
    const awsChallengeJS = scriptTags.attr('src');

    if (!awsChallengeJS) {
        console.log("AWS WAF चुनौती स्क्रिप्ट नहीं पाई गई। वेबसाइट सुरक्षित नहीं है या पास हो गई है।");
        // यदि कोई चुनौती स्क्रिप्ट नहीं है, तो प्रारंभिक परिणाम का उपयोग करें
        if (initialResponse.status === 200) {
            console.log("वेबसाइट सफलतापूर्वक लोड हो गई।");
            // console.log(initialResponse.data); // अंतिम सामग्री प्रिंट करें
            return;
        }
    } else {
        console.log(`AWS WAF चुनौती स्क्रिप्ट URL पहचानी गई: ${awsChallengeJS}`);
    }


    // 2. स्थिति कोड के आधार पर चुनौती/कैप्चा हल करें
    if (initialResponse.status === 202) {
        // केवल AWS WAF चुनौती
        awsWafCookie = await solveAwsChallenge(awsChallengeJS);
    } else if (initialResponse.status === 405) {
        // AWS WAF कैप्चा + चुनौती
        awsWafCookie = await solveAwsCaptchaChallenge(initialResponse.data, awsChallengeJS);
    } else if (initialResponse.status === 200) {
        console.log("वेबसाइट सफलतापूर्वक लोड हो गई, कैप्चा हल करने की आवश्यकता नहीं है।");
        // console.log(initialResponse.data); // अंतिम सामग्री प्रिंट करें
        return;
    } else {
        console.log(`अप्रत्याशित स्थिति कोड से निपटा गया: ${initialResponse.status}.`);
        return;
    }

    // 3. प्राप्त कुकी के साथ लक्षित पृष्ठ के लिए दोहरा अनुरोध
    if (awsWafCookie) {
        try {
            console.log("\n--- दूसरा अनुरोध: AWS WAF कुकी का उपयोग कर रहे हैं ---");
            console.log(`उपयोग की गई कुकी: ${awsWafCookie}`);

            const finalResponse = await axios.get(PAGE_URL, {
                headers: {
                    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36",
                    "Cookie": `aws-waf-token=${awsWafCookie}`
                },
                validateStatus: (status) => status === 200 // अंतिम सफलता की अपेक्षा
            });

            console.log(`अंतिम परिणाम स्थिति कोड: ${finalResponse.status}`);
            console.log("वेबसाइट की सामग्री सफलतापूर्वक प्राप्त कर ली गई!");
            // console.log(finalResponse.data); // अंतिम सामग्री प्रिंट करें
        } catch (error) {
            console.error(`अंतिम अनुरोध विफल रहा: ${error.message}`);
        }
    } else {
        console.log("AWS WAF कुकी प्राप्त करने में असफल, दूसरा अनुरोध करने में असमर्थ।");
    }
}

main();

💡 मुख्य बिंदु सारांश

मुख्य बिंदु मूल कोड समस्या अनुकूलित सुधार
निर्भरता स्थापना cheerio की कमी, गलत पायथन सिन्टैक्स हाइलाइटिंग का उपयोग किया गया। axios और cheerio के आवश्यकता स्पष्ट रूप से बताया गया, सही bash सिन्टैक्स हाइलाइटिंग का उपयोग किया गया।
कार्य प्रकार FunCaptchaTaskProxyless और AntiAwsWafTask के संयोजन का उपयोग किया गया। सभी AWS WAF स्थितियों के लिए CapSolver के आधिकारिक अनुशंसित AntiAwsWafTask का एकीकृत उपयोग किया गया।
पैरामीटर निकालना 405 लॉजिक में awsChallengeJS निकालने के लिए अपूर्ण तर्क, 202 लॉजिक में निकाला नहीं गया। main फ़ंक्शन में प्रारंभिक अनुरोध के बाद awsChallengeJS के एकीकृत निकालना, और स्थिति कोड (202 या 405) के आधार पर अलग-अलग समाधान कार्य कॉल करें।
त्रुटि संस्करण सरल त्रुटि संस्करण, API त्रुटि जांच और कार्य प्रतीक्षा प्रतिक्रिया की कमी। createTask और getTaskResult में CapSolver API त्रुटि जांच (errorId !== 0) जोड़ दी गई, और कार्य प्रसंस्करण के दौरान स्थिति प्रतिक्रिया प्रदान की गई।
कोड संरचना सभी तर्क main फ़ंक्शन में केंद्रित थे, जिसके कारण खराब पठनीयता हुई। स्पष्ट सहायक कार्य (sleep, createTask, getTaskResult) और मुख्य समाधान कार्य (solveAwsChallenge, solveAwsCaptchaChallenge) में अलग कर दिया गया, जिससे तर्क स्पष्ट हो गया।
अनुरोध हेडर मूल हेडर अत्यधिक और अपूर्ण थे। सरलीकृत और अधिक मानक ब्राउजर-सिमुलेटिंग अनुरोध हेडर का उपयोग किया गया।

❓ अक्सर पूछे जाने वाले प्रश्न (FAQ)

Q: मुझे दोनों HTTP 202 और HTTP 405 स्थिति कोड का निपटान क्यों करना होगा?

A: AWS WAF अलग-अलग सुरक्षा उपायों का उपयोग करता है जो अलग-अलग HTTP स्थिति कोड के कारण होते हैं:

  • HTTP 202 (स्वीकृत): आमतौर पर एक WAF चुनौती की आवश्यकता होती है। यह एक हल्का सुरक्षा जांच है जो आमतौर पर एक जावास्क्रिप्ट स्निपेट चलाने के साथ होती है।
  • HTTP 405 (विधि अनुमत नहीं है): आमतौर पर एक WAF कैप्चा की आवश्यकता होती है, जो एक जटिल जांच है जो एक दृश्य या अंतर्क्रिया पहेली हल करने के साथ-साथ चुनौती पैरामीटर के साथ होती है। हमारी स्क्रिप्ट दोनों स्थितियों की स्वचालित रूप से पहचान और निपटान के लिए डिज़ाइन की गई है।

Q: क्या मैं प्रॉक्सी के बिना इस स्क्रिप्ट का उपयोग कर सकता हूं?

A: हाँ, आप कर सकते हैं। PROXY चर के बिना उपयोग किया जा सकता है। यदि आपको प्रॉक्सी की आवश्यकता नहीं है, तो आप const PROXY = ""; को सेट कर सकते हैं। हालांकि, वेब स्क्रैपिंग और स्वचालन कार्यों के लिए उच्च गुणवत्ता वाले प्रॉक्सी के उपयोग की अत्यधिक सिफारिश की जाती है ताकि IP बैन बचा जा सके और निरंतर पहुंच सुनिश्चित की जा सके।

Q: AntiAwsWafTask क्या है?

A: AntiAwsWafTask CapSolver द्वारा प्रदान किया गया एक विशिष्ट कार्य प्रकार है जो विशेष रूप से AWS WAF सुरक्षा तंत्र के साथ निपटने के लिए डिज़ाइन किया गया है। यह सुरक्षित पृष्ठ से निकाले गए चुनौती पैरामीटर (शामिल awsKey, awsIv, awsContext, और awsChallengeJS) के साथ बुद्धिमानीपूर्वक प्रसंस्करण करता है और सुरक्षा के बाहर निकलने के लिए आवश्यक aws-waf-token` कुकी वापस करता है।

📚 अधिक जानकारी

✅ निष्कर्ष

यह गाइड ने Node.js और CapSolver के उपयोग से AWS WAF चुनौतियों और कैप्चा को कार्यक्रम रूप से हल करने की एक मजबूत और कार्यक्षम विधि को प्रदर्शित किया है। मॉड्यूलर स्क्रिप्ट के कार्यान्वयन और CapSolver के विशेष टास्क प्रकार के लाभ उठाकर, आप इस समाधान को अपने ऑटोमेशन वर्कफ़्लो में बिना किसी असुविधा के एम्बेड कर सकते हैं। सफलता का रहस्य सही तरीके से WAF स्थिति कोड (202 या 405) की पहचान करना, आवश्यक पैरामीटर निकालना और बाद के अनुरोधों के लिए परिणामस्वरूप aws-waf-token कुकी का उपयोग करना है। इस प्रकार सुनिश्चित करता है कि आपके ऑटोमेशन कार्य एएसडब्ल्यूएस डब्ल्यूएफ द्वारा सुरक्षित सामग्री तक विश्वसनीय रूप से पहुंच सकते हैं।

अनुपालन अस्वीकरण: इस ब्लॉग पर प्रदान की गई जानकारी केवल सूचनात्मक उद्देश्यों के लिए है। CapSolver सभी लागू कानूनों और विनियमों का पालन करने के लिए प्रतिबद्ध है। CapSolver नेटवर्क का उपयोग अवैध, धोखाधड़ी या दुरुपयोग करने वाली गतिविधियों के लिए करना सख्त वर्जित है और इसकी जांच की जाएगी। हमारे कैप्चा समाधान उपयोगकर्ता अनुभव को बेहतर बनाने के साथ-साथ सार्वजनिक डेटा क्रॉलिंग के दौरान कैप्चा कठिनाइयों को हल करने में 100% अनुपालन सुनिश्चित करते हैं। हम अपनी सेवाओं के जिम्मेदार उपयोग की प्रोत्साहना करते हैं। अधिक जानकारी के लिए, कृपया हमारी सेवा की शर्तें और गोपनीयता नीति पर जाएं।

अधिक

एवीएस कैप्चा कैसे हल करें नोड जेएस के साथ
एवीएस कैप्चा को नोड जेएस के साथ कैसे हल करें

इस लेख में, हम आपको AWS कैप्चा / चैलेंज कैसे हल करें के साथ दिखाएंगे।

aws waf
Logo of CapSolver

Aloísio Vítor

03-Nov-2025

स्वचालित हल करना AWS WAF कैप्चा
एवएस डब्ल्यूएफ कैप्चा के स्वचालित समाधान ब्राउज़र या एपीआई इंटीग्रेशन के माध्यम से

ब्राउजर एक्सटेंशन और एपीआई एकीकरण के उपयोग से AWS WAF CAPTCHA को स्वचालित रूप से हल करना सीखें। इस गाइड में चित्र पहचान, टोकन-आधारित चुनौतियां और CapSolver समाधान शामिल हैं जो सीमाहीन ऑटोमेशन और वेब डेटा निकालने के लिए हैं।

aws waf
Logo of CapSolver

Rajinder Singh

23-Oct-2025

कैसे हल करें एवीएस डब्ल्यूएफ़ क्रॉल 4 एआई में कैपसॉल्वर इंटीग्रेशन के साथ
AWS WAF को Crawl4AI में CapSolver एकीकरण के साथ कैसे हल करें

जानें कैसे Crawl4AI में AWS WAF सुरक्षाओं को हल करें CapSolver के API और ब्राउज़र एक्सटेंशन इंटीग्रेशन विधियों के उपयोग से। यह गाइड सीमलेस वेब स्क्रैपिंग के लिए कोड उदाहरण प्रदान करता है।

aws waf
Logo of CapSolver

Rajinder Singh

21-Oct-2025

सबसे अच्छा AWS WAF CAPTCHA सॉल्वर स्वचालन एवं स्क्रैपिंग के लिए
सबसे अच्छा एवीएस डब्ल्यूएफ कैप्चा सॉल्वर स्वचालन एवं स्क्रैपिंग के लिए

AWS WAF CAPTCHA सॉल्वर की खोज करें। CapSolver का एआई-आधारित समाधान तत्काल WAF चुनौतियों को बायपास करता है, जो अविच्छिन्न वेब स्क्रैपिंग और स्केल पर ऑटोमेशन की गारंटी देता है।

aws waf
Logo of CapSolver

Rajinder Singh

17-Oct-2025