Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
как залогиниться с libcurl на сайте? |

18.04.2010, 01:48
|
|
Познающий
Регистрация: 27.08.2009
Сообщений: 82
Провел на форуме: 131097
Репутация:
5
|
|
как залогиниться с 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 кода нету и вообще не понятно залогинелся я или нет)
Последний раз редактировалось eldar85; 18.04.2010 в 01:59..
|
|
|

18.04.2010, 02:17
|
|
Познающий
Регистрация: 29.05.2009
Сообщений: 55
Провел на форуме: 807573
Репутация:
7
|
|
попробуй поставить это
curl_easy_setopt(curl, CURLOPT_POST, true);
перед этим
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata);
типа сказать курлу что есть пост данные
|
|
|

18.04.2010, 02:35
|
|
Познающий
Регистрация: 27.08.2009
Сообщений: 82
Провел на форуме: 131097
Репутация:
5
|
|
попробывал так:
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:43..
|
|
|

18.04.2010, 02:42
|
|
Познающий
Регистрация: 27.08.2009
Сообщений: 82
Провел на форуме: 131097
Репутация:
5
|
|
и вообще я все правильно с куками делаю или нет?) их так находят в коде или может чего то еще не хватает?
|
|
|

18.04.2010, 02:46
|
|
Познающий
Регистрация: 29.05.2009
Сообщений: 55
Провел на форуме: 807573
Репутация:
7
|
|
а чё за язык используешь ?
попробуй сделать так /cookie.txt
или там полный путь от диска пропиши
|
|
|

18.04.2010, 03:09
|
|
Познающий
Регистрация: 27.08.2009
Сообщений: 82
Провел на форуме: 131097
Репутация:
5
|
|
на плюсах, под Qt))
|
|
|

18.04.2010, 03:09
|
|
Познающий
Регистрация: 27.08.2009
Сообщений: 82
Провел на форуме: 131097
Репутация:
5
|
|
а вообще в файле он должен какие нить записи оставить после выполнения программы?
|
|
|

18.04.2010, 03:13
|
|
Познающий
Регистрация: 27.08.2009
Сообщений: 82
Провел на форуме: 131097
Репутация:
5
|
|
блин, ну все, вывел уже не в консоль, а в GUI, теперь то точно видно что стал логиниться))) большое спасибо за помощь)))
|
|
|

18.04.2010, 03:17
|
|
Познающий
Регистрация: 27.08.2009
Сообщений: 82
Провел на форуме: 131097
Репутация:
5
|
|
прописал путь:
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "c:/cookie.txt");
но файл все равно пустой как не странно...
|
|
|

18.04.2010, 03:20
|
|
Познающий
Регистрация: 27.08.2009
Сообщений: 82
Провел на форуме: 131097
Репутация:
5
|
|
но без этих двух строчек нифига не логиниться как не странно))
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookie.txt");
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookie.txt");
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|