Ошибка "URL using bad/illegal format or missing URL" указывает на проблему с форматом URL или отсутствие URL при использовании библиотеки curl. В коде присутствует некоторая путаница в использовании функций curl_easy_setopt и неправильное применение прокси.
Для исправления проблемы, нужно внести несколько изменений в код:
1. Исправить неправильное применение прокси. Вместо прокси устанавливаем его как опцию CURLOPT_PROXY:
```cpp
res = curl_easy_setopt(curl, CURLOPT_PROXY, proxy_url.c_str());
```
2. Изменить CURLOPT_URL на нужный URL, который вы хотите запросить через прокси:
```cpp
res = curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
```
Вот исправленный код:
```cpp
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <curl/curl.h>
#include <string>
using namespace std;
using namespace std::string_literals;
int main() {
setlocale(LC_ALL, "ru"
![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
;
CURL* curl;
CURLcode res;
FILE* fp = fopen("C:\\Users\\GLEBHAS\\Desktop\\socks5.txt", "r"
![Wink ;) ;)](data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)
;
if (fp == NULL) {
std::cout << "Не удаётся открыть прокси файл." << std::endl;
return 1;
}
curl_global_init(CURL_GLOBAL_DEFAULT);
// Создаем экземпляр библиотеки curl
curl = curl_easy_init();
if (curl == NULL) {
curl_global_cleanup();
std::cerr << "Ошибка инициализации curl" << std::endl;
return 1;
}
char proxy[225];
int proxy_length = 0;
while (fscanf(fp, "%s", proxy + proxy_length) != EOF) {
proxy_length += strlen(proxy + proxy_length);
}
proxy[proxy_length] = '\0';
fclose(fp);
std::string url = "
std::string proxy_url = "socks5://"s + proxy;
res = curl_easy_setopt(curl, CURLOPT_PROXY, proxy_url.c_str());
if (res != CURLE_OK) {
fprintf(stderr, "Option setting failed: %s\n", curl_easy_strerror(res));
return 1;
}
res = curl_easy_setopt(curl, CURLOPT_URL, url.c_str());
if (res != CURLE_OK) {
fprintf(stderr, "Option setting failed: %s\n", curl_easy_strerror(res));
return 1;
}
res = curl_easy_perform(curl);
if (res != CURLE_OK) {
fprintf(stderr, "Perform failed: %s\n", curl_easy_strerror(res));
return 1;
}
curl_easy_cleanup(curl);
return 0;
}
```
Теперь код должен выполнять запрос через прокси и вывести результат в стандартный вывод. Убедитесь, что у вас есть файл "socks5.txt" с указанными прокси-адресами в правильном формате, и URL, который вы хотите запросить, действительный и поддерживается библиотекой curl.