उत्पादएकीकरणसंसाधनदस्तावेजीकरणमूल्य निर्धारण
अभी शुरू करें

© 2026 CapSolver. All rights reserved.

हमसे संपर्क करें

Slack: lola@capsolver.com

उत्पाद

  • reCAPTCHA v2
  • reCAPTCHA v3
  • Cloudflare Turnstile
  • Cloudflare Challenge
  • AWS WAF
  • ब्राउज़र एक्सटेंशन
  • अधिक कैप्चा प्रकार

एकीकरण

  • Selenium
  • Playwright
  • Puppeteer
  • n8n
  • साझेदार
  • सभी एकीकरण देखें

संसाधन

  • रेफरल प्रोग्राम
  • दस्तावेजीकरण
  • API संदर्भ
  • ब्लॉग
  • FAQ
  • शब्दावली
  • स्थिति

कानूनी

  • सेवा की शर्तें
  • गोपनीयता नीति
  • धनवापसी नीति
  • मेरी व्यक्तिगत जानकारी न बेचें
ब्लॉग/All/वेब स्क्रैपिंग के लिए libcurl का उपयोग कैसे करें
Oct21, 2024

वेब स्क्रैपिंग के लिए libcurl का उपयोग कैसे करें

Rajinder Singh

Rajinder Singh

Deep Learning Researcher

वेब स्क्रैपिंग वेबसाइटों से डेटा निकालने के लिए एक शक्तिशाली तकनीक है, जो मूल्य निर्धारण जानकारी एकत्रित करना, सामग्री अपडेट की निगरानी करना या बड़े डेटासेट एकत्र करना जैसे कार्यों के स्वचालन को सक्षम बनाता है। C++ में वेब स्क्रैपिंग करने के लिए सबसे लोकप्रिय पुस्तकालयों में से एक libcurl है, जो एक मुफ्त और ओपन-सोर्स क्लाइंट-साइड URL ट्रांसफर लाइब्रेरी है। यह HTTP, HTTPS, FTP, और बहुत कुछ जैसे कई प्रोटोकॉल का समर्थन करता है, जो इसे वेब सामग्री प्राप्त करने के लिए एक आदर्श विकल्प बनाता है।

libcurl का परिचय

libcurl HTTP अनुरोध करने के लिए एक शक्तिशाली C लाइब्रेरी है, जो HTTP, HTTPS, FTP, और कई अन्य जैसे विभिन्न प्रोटोकॉल का समर्थन करता है। यह एक लचीला उपकरण है जिसका उपयोग वेब अनुरोध करने के लिए C++ अनुप्रयोगों में व्यापक रूप से किया जाता है।

सुविधाएँ:

  • बहु-प्रोटोकॉल समर्थन: HTTP, HTTPS, FTP, FTPS, SMTP, और कई अन्य।
  • अतुल्यकालिक समर्थन: एक बार में कई अनुरोधों के प्रबंधन के लिए CURLM के माध्यम से।
  • त्रुटि हैंडलिंग: विस्तृत त्रुटि संदेश और स्थिति कोड प्रदान करता है।
  • प्रमाणीकरण: बेसिक, डाइजेस्ट, NTLM, नेगोशिएट, आदि का समर्थन करता है।
  • कुकीज़ और सत्र: कुकीज़ और सत्र जानकारी को आसानी से प्रबंधित कर सकता है।

पूर्वापेक्षाएँ

libcurl का उपयोग करने से पहले, आपको यह करना होगा:

  • अपने सिस्टम पर libcurl स्थापित करें।
  • अपने C++ कोड में curl/curl.h हेडर शामिल करें।

आप लिनक्स पर libcurl को इस प्रकार स्थापित कर सकते हैं:

bash Copy
sudo apt-get install libcurl4-openssl-dev

बेसिक उदाहरण: GET अनुरोध करना

यहाँ C++ में libcurl का उपयोग करके एक सरल GET अनुरोध करने का तरीका बताया गया है:

cpp Copy
#include <iostream>
#include <curl/curl.h>

static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main() {
    CURL* curl;
    CURLcode res;
    std::string readBuffer;

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();
    
    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://httpbin.org/get");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

        res = curl_easy_perform(curl);
        if(res != CURLE_OK) {
            std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
        } else {
            std::cout << "Response: " << readBuffer << std::endl;
        }

        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    
    return 0;
}

वेब स्क्रैपिंग उदाहरण: API से JSON डेटा प्राप्त करना

यहाँ एक उदाहरण दिया गया है जहाँ हम एक API से डेटा प्राप्त करते हैं और परिणाम प्रिंट करते हैं:

cpp Copy
#include <iostream>
#include <curl/curl.h>

static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main() {
    CURL* curl;
    CURLcode res;
    std::string readBuffer;

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://jsonplaceholder.typicode.com/posts");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

        res = curl_easy_perform(curl);
        if(res != CURLE_OK) {
            std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
        } else {
            std::cout << "Response: " << readBuffer << std::endl;
        }

        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    
    return 0;
}

libcurl के साथ प्रॉक्सी को हैंडल करना

libcurl के साथ अपने अनुरोधों को प्रॉक्सी सर्वर के माध्यम से रूट करने के लिए:

cpp Copy
#include <iostream>
#include <curl/curl.h>

static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main() {
    CURL* curl;
    CURLcode res;
    std::string readBuffer;

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://httpbin.org/ip");
        curl_easy_setopt(curl, CURLOPT_PROXY, "http://proxyserver:8080");
        curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, "username:password");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

        res = curl_easy_perform(curl);
        if(res != CURLE_OK) {
            std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
        } else {
            std::cout << "Response: " << readBuffer << std::endl;
        }

        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    
    return 0;
}

libcurl के साथ कुकीज़ को हैंडल करना

libcurl COOKIEFILE विकल्प को सक्षम करके कुकीज़ का प्रबंधन कर सकता है:

cpp Copy
#include <iostream>
#include <curl/curl.h>

static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main() {
    CURL* curl;
    CURLcode res;
    std::string readBuffer;

    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if(curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://httpbin.org/cookies/set?name=value");
        curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

        res = curl_easy_perform(curl);
        if(res != CURLE_OK) {
            std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
        } else {
            std::cout << "Response: " << readBuffer << std::endl;
        }

        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();
    
    return 0;
}

उन्नत उपयोग: कस्टम हेडर और POST अनुरोध

libcurl के साथ कस्टम हेडर भेजने या POST अनुरोध करने के लिए:

cpp Copy
#include <iostream>
#include <curl/curl.h>

static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp)
{
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

int main() {
    CURL* curl;
    CURLcode res;
    std::string readBuffer;
    
    curl_global_init(CURL_GLOBAL_DEFAULT);
    curl = curl_easy_init();

    if(curl) {
        struct curl_slist* headers = nullptr;
        headers = curl_slist_append(headers, "User-Agent: Mozilla/5.0");
        headers = curl_slist_append(headers, "Accept-Language: en-US,en;q=0.5");

        curl_easy_setopt(curl, CURLOPT_URL, "https://httpbin.org/post");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "username=testuser&password=testpass");
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

        res = curl_easy_perform(curl);
        if(res != CURLE_OK) {
            std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl;
        } else {
            std::cout << "Response: " << readBuffer << std::endl;
        }

        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
    }
    curl_global_cleanup();

    return 0;
}

उदाहरण: CapSolver और libcurl (C++) के साथ ReCaptcha V3 को हल करना

इस उदाहरण में, हम प्रदर्शित करेंगे कि C++ में libcurl लाइब्रेरी का उपयोग करके CapSolver: के साथ ReCaptcha V3 को कैसे हल किया जाए। CapSolver API ReCaptcha कार्यों के साथ आसान बातचीत करने और समाधान प्राप्त करने की अनुमति देता है।

शुरू करने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित पूर्वापेक्षाएँ हैं:

  • libcurl आपके सिस्टम पर स्थापित है (इसे लिनक्स पर sudo apt-get install libcurl4-openssl-dev के माध्यम से स्थापित करें)।
  • एक CapSolver API कुंजी (नीचे दिए गए कोड में "YourKey" को अपनी वास्तविक कुंजी से बदलें)।

यहाँ CapSolver का उपयोग करके ReCaptcha V3 को हल करने के लिए एक चरण-दर-चरण मार्गदर्शिका दी गई है:

चरण 1: कार्य बनाना

पहला चरण CapSolver की API को ReCaptcha को हल करने के लिए एक कार्य बनाने के लिए अनुरोध भेजना है। कार्य में वेबसाइट URL, साइट कुंजी (लक्ष्य पृष्ठ से), और विशिष्ट पृष्ठ क्रिया जैसे विवरण शामिल हैं।

cpp Copy
#include <iostream>
#include <string>
#include <curl/curl.h>
#include <json/json.h>

const std::string CAPSOLVER_KEY = "YourKey";
const std::string PAGE_URL = "https://antcpt.com/score_detector";
const std::string PAGE_KEY = "6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf";
const std::string PAGE_ACTION = "homepage";

static size_t WriteCallback(void* contents, size_t size, size_t nmemb, void* userp) {
    ((std::string*)userp)->append((char*)contents, size * nmemb);
    return size * nmemb;
}

std::string createTask(const std::string& url, const std::string& key, const std::string& action) {
    CURL* curl;
    CURLcode res;
    std::string readBuffer;

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://api.capsolver.com/createTask");
        curl_easy_setopt(curl, CURLOPT_POST, 1L);

        // JSON payload for task creation
        Json::Value payload;
        payload["clientKey"] = CAPSOLVER_KEY;
        payload["task"]["type"] = "ReCaptchaV3TaskProxyLess";
        payload["task"]["websiteURL"] = url;
        payload["task"]["websiteKey"] = key;
        payload["task"]["pageAction"] = action;

        Json::StreamWriterBuilder writer;
        std::string requestData = Json::writeString(writer, payload);

        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, requestData.c_str());

        struct curl_slist* headers = nullptr;
        headers = curl_slist_append(headers, "Content-Type: application/json");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

        res = curl_easy_perform(curl);
        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
    }
    return readBuffer;
}

यह फ़ंक्शन आवश्यक कार्य विवरणों के साथ CapSolver API को एक POST अनुरोध भेजता है और प्रतिक्रिया देता है, जिसमें taskId शामिल होगा।

चरण 2: CAPTCHA समाधान प्राप्त करना

एक बार कार्य बनाए जाने के बाद, आपको कार्य का परिणाम प्राप्त करने के लिए CapSolver की API को क्वेरी करने की आवश्यकता होगी, जिसमें ReCaptcha चुनौती को बायपास करने के लिए टोकन शामिल है।

cpp Copy
std::string getTaskResult(const std::string& taskId) {
    CURL* curl;
    CURLcode res;
    std::string readBuffer;

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://api.capsolver.com/getTaskResult");
        curl_easy_setopt(curl, CURLOPT_POST, 1L);

        // JSON payload to get the task result
        Json::Value payload;
        payload["clientKey"] = CAPSOLVER_KEY;
        payload["taskId"] = taskId;

        Json::StreamWriterBuilder writer;
        std::string requestData = Json::writeString(writer, payload);

        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, requestData.c_str());

        struct curl_slist* headers = nullptr;
        headers = curl_slist_append(headers, "Content-Type: application/json");
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);

        do {
            readBuffer.clear();
            res = curl_easy_perform(curl);
            std::this_thread::sleep_for(std::chrono::seconds(5));
        } while (readBuffer.find("\"status\":\"ready\"") == std::string::npos);

        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
    }
    return readBuffer;
}

यह फ़ंक्शन तैयार होने तक कार्य की स्थिति की बार-बार जाँच करता है, जिसके बाद यह ReCaptcha समाधान लौटाता है।

चरण 3: इसे एक साथ रखना

अंत में, यहाँ बताया गया है कि आप अपने मुख्य कोड में दोनों कार्यों को कैसे एकीकृत कर सकते हैं:

cpp Copy
int main() {
    std::cout << "Creating CAPTCHA task..." << std::endl;
    std::string taskResponse = createTask(PAGE_URL, PAGE_KEY, PAGE_ACTION);

    Json::CharReaderBuilder reader;
    Json::Value jsonResponse;
    std::string errors;
    std::istringstream taskStream(taskResponse);
    std::string taskId;

    if (Json::parseFromStream(reader, taskStream, &jsonResponse, &errors)) {
        taskId = jsonResponse["taskId"].asString();
        std::cout << "Task ID: " << taskId << std::endl;

        std::cout << "Retrieving CAPTCHA result..." << std::endl;
        std::string resultResponse = getTaskResult(taskId);

        Json::Value resultJson;
        std::istringstream resultStream(resultResponse);
        Json::parseFromStream(reader, resultStream, &resultJson, &errors);

        std::string token = resultJson["solution"]["gRecaptchaResponse"].asString();
        std::cout << "Token Solution: " << token << std::endl;
    } else {
        std::cerr << "Error parsing task response: " << errors << std::endl;
    }

    return 0;
}

यह कोड करेगा:

  1. CapSolver के माध्यम से एक ReCaptcha कार्य बनाएँ।
  2. कार्य पूरा होने तक प्रतीक्षा करें।
  3. ReCaptcha टोकन समाधान प्राप्त करें और उसे प्रिंट करें।

बोनस कोड

CapSolver: scrape पर शीर्ष कैप्चा समाधान के लिए अपना बोनस कोड का दावा करें। इसे रिडीम करने के बाद, आपको प्रत्येक रिचार्ज के बाद एक अतिरिक्त 5% बोनस मिलेगा, असीमित बार।

CapSolver बोनस

निष्कर्ष

libcurl के साथ, आप C++ अनुप्रयोगों में HTTP अनुरोधों को आसानी से संभाल सकते हैं। इसे CapSolver के साथ एकीकृत करके, आप ReCaptcha V3 जैसे कैप्चा को हल कर सकते हैं और अपने अनुरोधों में परिणाम का उपयोग कर सकते हैं।

और देखें

May 07, 2026

सबसे अच्छे एआई एजेंट फ्रेमवर्क वेब ऑटोमेशन और कैप्चा समाधान के लिए

2026 में वेब ऑटोमेशन, CAPTCHA हल करना, अनुपालन और उत्पादन-तैयार एजेंट वर्कफ़्लो के लिए सबसे अच्छे AI एजेंट फ्रेमवर्क की तुलना करें।

Rajinder Singh
Rajinder Singh
May 07, 2026

श्रेष्ठ जावा वेब स्क्रैपिंग पुस्तकालय विश्वसनीय डेटा निकासी के लिए

सबसे अच्छे जावा वेब डेटा निकालने वाले लाइब्रेरी की तुलना करें, जिसमें jsoup, Selenium, जावा के लिए Playwright, HtmlUnit, Apache Nutch, और एपीआई विकल्प शामिल हैं।

Rajinder Singh
Rajinder Singh

विषय-सूची

May 06, 2026

CAPTCHA कैप्चा कैसे हल करें ब्राउज़र ऑटोमेशन में हर्मीस एजेंट और कैपसॉल्वर के साथ

हेर्मीस एजेंट और कैपसॉल्वर के उपयोग के माध्यम से एआई ब्राउजर ऑटोमेशन वर्कफ़्लो में CAPTCHA को हल करना सीखें। यह गाइड समझाता है कि कैपसॉल्वर के एकीकरण के माध्यम से reCAPTCHA, hCaptcha और अन्य आधुनिक CAPTCHA प्रणालियों को स्वचालित रूप से स्वचालित ब्राउजिंग वातावरणों में जटिल कोड लिखे बिना कैसे संभाला जा सकता है।

Rajinder Singh
Rajinder Singh
Apr 30, 2026

वेब स्क्रैपिंग लिनक्स पर: उपकरण, सेटअप एवं व्यावहारिक गाइड

लिनक्स पर वेब स्क्रैपिंग सेट करें, पायथन, प्रॉक्सी और CAPTCHA के प्रबंधन के साथ। एक प्रायोगिक डेवलपर गाइड जो स्क्रैपी, प्लेयराइट, कैपसॉल्वर और डेटा पाइपलाइन को कवर करता है।

Rajinder Singh
Rajinder Singh