Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос по curl c++ !!!!!!!

Глеб Гарусин Ученик (96), на голосовании 1 год назад
Вопрос по curl c++ !!!!!!!
Как можно сделать чтобы мои прокси которые заходят на сайт оставались на сайте и считались как посетители???
 #define _CRT_SECURE_NO_WARNINGS  
#include
#include
#include
#include
#include

using namespace std;
using namespace std::string_literals;

int main() {
setlocale(LC_ALL, "ru");

CURL* curl;
CURLcode res;
std::ifstream file("C:\\Users\\GLEBHAS\\Desktop\\socks5.txt");
if (!file.is_open()) {
cout << "Не удаётся открыть прокси файл." << endl;
return 1;
}

curl_global_init(CURL_GLOBAL_DEFAULT);

// Создаем экземпляр библиотеки curl
curl = curl_easy_init();
if (curl == NULL) {
curl_global_cleanup();
cerr << "Ошибка инициализации curl" << endl;
return 1;
}

std::string proxy;

std::string url = "https://САЙТ";

// Установка URL
res = curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
if (res != CURLE_OK) {
fprintf(stderr, "Ошибка установки URL: %s\n", curl_easy_strerror(res));
return 1;
}

// Установка обработчика ошибок
char error_buffer[CURL_ERROR_SIZE];
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error_buffer);

// Установка буфера
curl_easy_setopt(curl, CURLOPT_BUFFERSIZE, 102400L);

// Включение сохранения кук
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "C:\\Users\\Desktop\\c++\\Scripts\\cookies.txt");
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "C:\\Users\\Desktop\\c++\\Scripts\\cookies.txt");

while (std::getline(file, proxy)) {
// Установка прокси
std::string proxy_url = "socks5://"s + proxy;
res = curl_easy_setopt(curl, CURLOPT_PROXY, proxy_url.c_str());
if (res != CURLE_OK) {
fprintf(stderr, "Ошибка установки прокси: %s\n", curl_easy_strerror(res));
continue; // переход к следующему прокси-серверу
}

// Выполнение запроса
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "Ошибка выполнения запроса: %s\n", error_buffer);
continue; // переход к следующему прокси-серверу
}
}

//Устанавливаем время подключения прокси сервера
curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 30L);

// очиста curl
curl_easy_cleanup(curl);

//остановка
std::cout << "Нажмите любую клавишу для продолжения..." << std::endl;
getchar();
std::cout << "Продолжение выполнения программы" << std::endl;
main();
return 0;

}






Голосование за лучший ответ
S.H.I. Оракул (74208) 1 год назад
Ваш код выглядит правильным, и он должен работать, если прокси-серверы, указанные в файле socks5.txt, действительно работают. Однако, если вы хотите, чтобы прокси-серверы оставались на сайте и считались как посетители, то вам необходимо убедиться, что ваш код сохраняет куки (cookies) между запросами и использует их при последующих запросах. Это можно сделать с помощью опций CURLOPT_COOKIEJAR и CURLOPT_COOKIEFILE.

Также обратите внимание, что в вашем коде есть несколько мест, где вы устанавливаете опции CURLOPT_COOKIEJAR и CURLOPT_COOKIEFILE, но делаете это после того, как уже выполнили запрос. Вам необходимо установить эти опции до того, как вы выполните запрос с помощью curl_easy_perform.
Глеб ГарусинУченик (96) 1 год назад
я переместил куки в своём коде до выполнения запроса но всё ровно куки не сохраняют нечего в txt файл
S.H.I. Оракул (74208) Глеб Гарусин, Если куки не сохраняются в файле, то возможно, что проблема заключается в том, что вы указываете неправильный путь к файлу с куками. Убедитесь, что путь к файлу с куками указан правильно и что у вас есть разрешение на запись в этот файл. Также убедитесь, что вы используете абсолютный путь к файлу, а не относительный. Если проблема не решается, то попробуйте использовать функцию обратного вызова для записи куков. Для этого вы можете использовать опцию CURLOPT_WRITEFUNCTION и указать функцию обратного вызова, которая будет вызываться каждый раз, когда libcurl получает данные. В этой функции вы можете проверить, являются ли полученные данные куками, и если да, то записать их в файл.
Похожие вопросы