
Rajinder Singh
Deep Learning Researcher

वेब स्क्रैपिंग वेबसाइटों से डेटा निकालने के लिए एक शक्तिशाली तकनीक है, जो मूल्य निर्धारण जानकारी एकत्रित करना, सामग्री अपडेट की निगरानी करना या बड़े डेटासेट एकत्र करना जैसे कार्यों के स्वचालन को सक्षम बनाता है। C++ में वेब स्क्रैपिंग करने के लिए सबसे लोकप्रिय पुस्तकालयों में से एक libcurl है, जो एक मुफ्त और ओपन-सोर्स क्लाइंट-साइड URL ट्रांसफर लाइब्रेरी है। यह HTTP, HTTPS, FTP, और बहुत कुछ जैसे कई प्रोटोकॉल का समर्थन करता है, जो इसे वेब सामग्री प्राप्त करने के लिए एक आदर्श विकल्प बनाता है।
libcurl HTTP अनुरोध करने के लिए एक शक्तिशाली C लाइब्रेरी है, जो HTTP, HTTPS, FTP, और कई अन्य जैसे विभिन्न प्रोटोकॉल का समर्थन करता है। यह एक लचीला उपकरण है जिसका उपयोग वेब अनुरोध करने के लिए C++ अनुप्रयोगों में व्यापक रूप से किया जाता है।
सुविधाएँ:
CURLM के माध्यम से।libcurl का उपयोग करने से पहले, आपको यह करना होगा:
curl/curl.h हेडर शामिल करें।आप लिनक्स पर libcurl को इस प्रकार स्थापित कर सकते हैं:
sudo apt-get install libcurl4-openssl-dev
यहाँ C++ में libcurl का उपयोग करके एक सरल GET अनुरोध करने का तरीका बताया गया है:
#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 से डेटा प्राप्त करते हैं और परिणाम प्रिंट करते हैं:
#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 के साथ अपने अनुरोधों को प्रॉक्सी सर्वर के माध्यम से रूट करने के लिए:
#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 COOKIEFILE विकल्प को सक्षम करके कुकीज़ का प्रबंधन कर सकता है:
#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;
}
libcurl के साथ कस्टम हेडर भेजने या POST अनुरोध करने के लिए:
#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;
}
इस उदाहरण में, हम प्रदर्शित करेंगे कि C++ में libcurl लाइब्रेरी का उपयोग करके CapSolver: के साथ ReCaptcha V3 को कैसे हल किया जाए। CapSolver API ReCaptcha कार्यों के साथ आसान बातचीत करने और समाधान प्राप्त करने की अनुमति देता है।
शुरू करने से पहले, सुनिश्चित करें कि आपके पास निम्नलिखित पूर्वापेक्षाएँ हैं:
sudo apt-get install libcurl4-openssl-dev के माध्यम से स्थापित करें)।"YourKey" को अपनी वास्तविक कुंजी से बदलें)।
यहाँ CapSolver का उपयोग करके ReCaptcha V3 को हल करने के लिए एक चरण-दर-चरण मार्गदर्शिका दी गई है:
पहला चरण CapSolver की API को ReCaptcha को हल करने के लिए एक कार्य बनाने के लिए अनुरोध भेजना है। कार्य में वेबसाइट URL, साइट कुंजी (लक्ष्य पृष्ठ से), और विशिष्ट पृष्ठ क्रिया जैसे विवरण शामिल हैं।
#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 शामिल होगा।
एक बार कार्य बनाए जाने के बाद, आपको कार्य का परिणाम प्राप्त करने के लिए CapSolver की API को क्वेरी करने की आवश्यकता होगी, जिसमें ReCaptcha चुनौती को बायपास करने के लिए टोकन शामिल है।
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 समाधान लौटाता है।
अंत में, यहाँ बताया गया है कि आप अपने मुख्य कोड में दोनों कार्यों को कैसे एकीकृत कर सकते हैं:
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;
}
यह कोड करेगा:
CapSolver: scrape पर शीर्ष कैप्चा समाधान के लिए अपना बोनस कोड का दावा करें। इसे रिडीम करने के बाद, आपको प्रत्येक रिचार्ज के बाद एक अतिरिक्त 5% बोनस मिलेगा, असीमित बार।

libcurl के साथ, आप C++ अनुप्रयोगों में HTTP अनुरोधों को आसानी से संभाल सकते हैं। इसे CapSolver के साथ एकीकृत करके, आप ReCaptcha V3 जैसे कैप्चा को हल कर सकते हैं और अपने अनुरोधों में परिणाम का उपयोग कर सकते हैं।
CapSolver की खोज करें, 2026 में AI स्वचालन के लिए प्रमुख नो-कोड CAPTCHA सॉल्वर, कोडिंग के बिना कार्य प्रक्रियाओं को सुगम बनाएं और डेटा एकत्रीकरण में सुधार करें। अपने मुख्य विशेषताओं, लाभों और नैतिक उपयोग के बारे में जानें।

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