Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   как залогиниться с libcurl на сайте? (https://forum.antichat.xyz/showthread.php?t=197092)

eldar85 18.04.2010 01:48

как залогиниться с 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 кода нету и вообще не понятно залогинелся я или нет)

Dark_cracker 18.04.2010 02:17

попробуй поставить это
curl_easy_setopt(curl, CURLOPT_POST, true);
перед этим
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata);
типа сказать курлу что есть пост данные

eldar85 18.04.2010 02:35

попробывал так:

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 и создал текстовой файл возле экзэшника, но там пустота)) хотелось бы посмотреть куда он их сохраняет) или он после использования сразу их стерает из файла?)

eldar85 18.04.2010 02:42

и вообще я все правильно с куками делаю или нет?) их так находят в коде или может чего то еще не хватает?

Dark_cracker 18.04.2010 02:46

а чё за язык используешь ?
попробуй сделать так /cookie.txt
или там полный путь от диска пропиши

eldar85 18.04.2010 03:09

на плюсах, под Qt))

eldar85 18.04.2010 03:09

а вообще в файле он должен какие нить записи оставить после выполнения программы?

eldar85 18.04.2010 03:13

блин, ну все, вывел уже не в консоль, а в GUI, теперь то точно видно что стал логиниться))) большое спасибо за помощь)))

eldar85 18.04.2010 03:17

прописал путь:
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "c:/cookie.txt");
но файл все равно пустой как не странно...

eldar85 18.04.2010 03:20

но без этих двух строчек нифига не логиниться как не странно))
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookie.txt");
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookie.txt");


Время: 01:24