![]() |
как залогиниться с libcurl на сайте?
столкнулся с такой проблемой, не могу залогиниться на сайте...
хочу чтобы прога сама логинелась на моей страничке, но по моему получается полная чушь... вот код, что я делаю не так? int main(int argc, char* argv[]) { CURL* curl; char url[] = "http://love.ngs.ru/login/"; char proxy[] = "92.50.163.114"; long port = 8085; char error[200]; char referer[] = "http://love.ngs.ru/"; struct curl_httppost* post = NULL; struct curl_httppost* last = NULL; char postdata[] = "send=ok&l=8j4w4w4w@rambler.ru&p=8j4w4w4w&remember _me=1"; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_REFERER, referer); curl_easy_setopt(curl, CURLOPT_PROXY, "117.102.91.6:8080"); //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, 0); curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"); // printf("\nTrying proxy [%s:%d]:\n", proxy, port); curl_easy_setopt(curl, CURLOPT_HTTPPOST, 1); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); curl_easy_setopt(curl, CURLOPT_POSTFIELDSIZE, 54); curl_easy_setopt(curl, CURLOPT_TIMEOUT, 7); curl_easy_perform(curl); // printf("Cannot perform\nError:%s\n", error); int i; std::cin >> i; return 0; } в итоге в консоль выводиться только хедер, а html кода нету и вообще не понятно залогинелся я или нет) |
попробуй поставить это
curl_easy_setopt(curl, CURLOPT_POST, true); перед этим curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); типа сказать курлу что есть пост данные |
попробывал так:
int main(int argc, char* argv[]) { CURL* curl; char url[] = "http://love.ngs.ru/login/"; char proxy[] = "92.50.163.114"; long port = 8085; char error[200]; char referer[] = "http://love.ngs.ru/"; struct curl_httppost* post = NULL; struct curl_httppost* last = NULL; char postdata[] = "send=ok&l=8j4w4w4w%40rambler.ru&p=8j4w4w4w&rememb er_me=1"; curl_global_init(CURL_GLOBAL_ALL); curl = curl_easy_init(); //curl_formadd(&post, &last, CURLFORM_COPYNAME, "method", CURLFORM_COPYCONTENTS, "post", CURLFORM_END); // curl_formadd(&post, &last, CURLFORM_COPYNAME, "file", CURLFORM_FILE, "c:/2.jpg", CURLFORM_CONTENTTYPE, "image/jpeg", CURLFORM_END); curl_easy_setopt(curl, CURLOPT_URL, url); curl_easy_setopt(curl, CURLOPT_REFERER, referer); curl_easy_setopt(curl, CURLOPT_PROXY, "117.102.91.6:8080"); curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error); curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); curl_easy_setopt(curl, CURLOPT_HEADER, 0); curl_easy_setopt(curl, CURLOPT_NOBODY, 1); curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookie.txt"); curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookie.txt"); curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"); curl_easy_setopt(curl, CURLOPT_HTTPPOST, 1); curl_easy_setopt(curl, CURLOPT_POST, true); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); curl_easy_setopt(curl, CURLOPT_TIMEOUT, 10); curl_easy_perform(curl); int i; std::cin >> i; return 0; } и вроде все нормально))) спасибо за совет) но я не пойму как сделать так чтобы он еще и тело сайта вывел в консоль, а то так выводит только хедер и то что прокси и рефер установлены?? и еще один вопросик, куда сохраняются куки?? я прописал cookie.txt и создал текстовой файл возле экзэшника, но там пустота)) хотелось бы посмотреть куда он их сохраняет) или он после использования сразу их стерает из файла?) |
и вообще я все правильно с куками делаю или нет?) их так находят в коде или может чего то еще не хватает?
|
а чё за язык используешь ?
попробуй сделать так /cookie.txt или там полный путь от диска пропиши |
на плюсах, под Qt))
|
а вообще в файле он должен какие нить записи оставить после выполнения программы?
|
блин, ну все, вывел уже не в консоль, а в GUI, теперь то точно видно что стал логиниться))) большое спасибо за помощь)))
|
прописал путь:
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "c:/cookie.txt"); но файл все равно пустой как не странно... |
но без этих двух строчек нифига не логиниться как не странно))
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookie.txt"); curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookie.txt"); |
| Время: 01:24 |