неправильно работает простейшая, на мой взгляд, программа#include <stdio.h>
#include <curl/curl.h>int main(int argc, char* argv[])
{
CURL* curl;
char url[] = "some_host";
char proxy[] = "some_proxy_ip";
long port = [some_port];
char error[200];curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();curl_easy_setopt(curl, CURLOPT_URL, url);
curl_easy_setopt(curl, CURLOPT_PROXY, proxy);
curl_easy_setopt(curl, CURLOPT_PROXYPORT, port);
curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_HEADER, 1);printf("\nTrying proxy [%s:%d]:\n", proxy, port);
if (curl_easy_perform(curl))
printf("Cannot perform\nError:%s\n", error);return 0;
}я не нашёл ни одного прокси, который бы либо не вешал программу(до некотороо момента, естественно, когда curl обрывает зависшее соединение), либо не присылал код 404 - север не найден. списки проксей свежие и по идее рабочие
так
#include <stdio.h>
#include <curl/curl.h>int main(int argc, char* argv[])
{
CURL* curl;
char url[] = "jazzcat.smartdesign.by";
char proxy[] = "84.17.235.10";
long port = 4241;
char error[200];
curl_global_init(CURL_GLOBAL_ALL);
curl = curl_easy_init();curl_easy_setopt(curl, CURLOPT_URL, url);
//curl_easy_setopt(curl, CURLOPT_PROXY, proxy);
curl_easy_setopt(curl, CURLOPT_PROXYPORT, port);
curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1);
curl_easy_setopt(curl, CURLOPT_HEADER, 1);printf("\nTrying proxy [%s:%d]:\n", proxy, port);
if (curl_easy_perform(curl))
printf("Cannot perform\nError:%s\n", error);return 0;
}
всё работает. подскажите, пожалуйста, что я делаю не так? или это всё-таки плохие списки проксей? спасибо
Попробуйте проксюк задать в формате http://<имя>:<порт>
На PHP я делаю просто:
curl_setopt($ch, CURLOPT_PROXY, 'ip:port');
Одной строчкой и все работает!
И ip и port прописаны сразу.
curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); // CURLPROXY_HTTP (default)
его не надо!А вообще все бесплатные прокси живут очень не долго!
Надо либо платные искать либо через tor если нужна анонимность.
Дело в том, что я старался написать в этом случае именно что-нибудь простейшее, если задавать прокси как "http://proxy_ip:proxy_port" и больше ничего (крому CURLOP_URL, конечно) - как в основном проекте, то всё не работает точно также. прокси свежие и проверенные, только-только с прокси-чекера
Проблема решилась сама собой. Прокси сервера оказались не http а socks, точнее, давались они как http, но алгоритм проверки чекера оказался не совсем правильным.Прошу прощения у всех, кто потратил своё время. =)