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

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

Logo of CapSolver

Rajinder Singh

Deep Learning Researcher

22-Oct-2024

वेब स्क्रैपिंग वेबसाइटों से डेटा निकालने के लिए एक शक्तिशाली तकनीक है, जो मूल्य निर्धारण जानकारी एकत्रित करना, सामग्री अपडेट की निगरानी करना या बड़े डेटासेट एकत्र करना जैसे कार्यों के स्वचालन को सक्षम बनाता है। 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 जैसे कैप्चा को हल कर सकते हैं और अपने अनुरोधों में परिणाम का उपयोग कर सकते हैं।

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

अधिक

अनुकूलित करें CAPTCHA हल करने वाले API प्रतिक्रिया समय तेज़ ऑटोमेशन के लिए
कैप्चा हल करने वाले एपीआई के प्रतिक्रिया समय को तेज़ ऑटोमेशन के लिए अनुकूलित करें

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

Logo of CapSolver

Rajinder Singh

03-Apr-2026

कैप्चा समाधान एपीआई के विरुद्ध हस्तचालित समाधान: लागत और दक्षता (2026)
CAPTCHA समाधान API विरुद्ध हाथ से हल करना: लागत & कार्यकुशलता (2026)

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

Logo of CapSolver

Adélia Cruz

03-Apr-2026

एंटरप्राइज स्वचालन को ऊंचाई देना:
कॉर्पोरेट स्वचालन को उन्नत करते हुए: LLM-संचालित बुनियादी ढांचा सीमाहीन CAPTCHA पहचान एवं संचालन की कार्यक्षमता

जानें कि LLM-संचालित कृत्रिम बुद्धिमत्ता ऑटोमेशन इंफ्रास्ट्रक्चर CAPTCHA पहचान को बदल देता है, व्यवसाय प्रक्रिया की कार्यक्षमता में सुधार करता है और मैनुअल हस्तक्षेप कम करता है। उन्नत सत्यापन समाधानों के साथ अपने स्वचालित संचालन को अधिकतम करें।

AI
Logo of CapSolver

Rajinder Singh

30-Mar-2026

बीएलएम ट्रेनिंग के लिए डेटा संग्रह के पैमाने को बढ़ाना: CAPTCHA के बड़े पैमाने पर हल करना
LLM ट्रेनिंग के लिए डेटा संग्रह के पैमाने को बढ़ाना: CAPTCHAs को पैमाने पर हल करना

LLM प्रशिक्षण के लिए पैमाने पर डेटा संग्रह कैसे करें, जैसे कि CAPTCHAs को हल करके। AI मॉडल के लिए उच्च गुणवत्ता वाले डेटासेट बनाने के लिए स्वचालित रणनीतियाँ खोजें।

AI
Logo of CapSolver

Emma Foster

27-Mar-2026

ओपन ब्राउज़र का उपयोग करके कैपसॉल्वर
CAPTCHA कैसे हल करें OpenBrowser में CapSolver का उपयोग करके (AI एजेंट स्वचालन गाइड)

OpenBrowser में CapSolver के माध्यम से CAPTCHA हल करें। AI एजेंट के लिए reCAPTCHA, Turnstile आदि को स्वचालित करें आसानी से।

AI
Logo of CapSolver

Rajinder Singh

26-Mar-2026

हाइपरब्राउज़र के साथ कैपसॉल्वर
कैसे कोई भी CAPTCHA हल करें HyperBrowser में CapSolver का उपयोग करके (पूर्ण सेटअप गाइड)

हाइपरब्राउज़र में कैपसॉल्वर के उपयोग से कोई भी CAPTCHA हल करें। reCAPTCHA, Turnstile, AWS WAF आदि को स्वचालित करें और अधिक आसानी से।

AI
Logo of CapSolver

Rajinder Singh

26-Mar-2026