Я использую Завихрение (libcurl) в приложении C++ и не могу отправить cookie (я думаю).
У меня есть Скрипач, TamperData и установленные Заголовки LiveHTTP, но они только полезны для просмотра трафика браузера и (это казалось бы), неспособный из контроля общего сетевого трафика на машине, поэтому когда я выполняю свою машину, я не вижу, что информация заголовка отправляется. Однако, когда я просматриваю страницу в браузере, когда успешно зарегистрированный, я вижу, что информация о куки отправляется.
При запущении моего приложения я успешно вхожу в систему страница, когда я впоследствии, попытайтесь выбрать другую страницу, (страница) данные предполагает, что я не зарегистрирован - т.е. "состояние" имеет так или иначе быть потерянным.
Мой код C++ смотрит хорошо, таким образом, я не знаю то, что идет не так, как надо - это - то, почему я должен:
Сначала смогите просмотреть мой сетевой трафик машин (не только трафик браузера) - который (свободный) инструмент?
Принятие я использую Завихрение неправильно, что случилось с моим кодом? (cookie получаются и хранятся хорошо, кажется, что они просто не отправляются с запросами по некоторым причинам.
Вот раздел моего класса, который имеет дело со стороной cookie Запросов HTTP:
curl_easy_setopt(curl, CURLOPT_TIMEOUT, long(m_timeout));
curl_easy_setopt(curl, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 2.0.50727)");
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt");
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1L);
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CurlCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, this);
Есть ли что-то не так с вышеупомянутым кодом?
Вы можете использовать Wireshark (бывший Ethereal) для просмотра всего сетевого трафика, который машина отправляет и получает.
http
в качестве фильтра, чтобы видеть только HTTP-трафик. Если вы просто хотите видеть HTTP-запросы / ответы, отправленные / полученные Curl, установите параметр CURL_VERBOSE и посмотрите stderr: curl_easy_setopt (curl, CURLOPT_VERBOSE, 1L)
. cookies.txt
) файлы cookie отправляются на сервер. Пример кода:
#include <stdio.h>
#include <curl/curl.h>
int main()
{
CURL *curl;
CURLcode success;
char errbuf[CURL_ERROR_SIZE];
int m_timeout = 15;
if ((curl = curl_easy_init()) == NULL) {
perror("curl_easy_init");
return 1;
}
curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errbuf);
curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
curl_easy_setopt(curl, CURLOPT_TIMEOUT, long(m_timeout));
curl_easy_setopt(curl, CURLOPT_URL, "http://www.google.com/");
curl_easy_setopt(curl, CURLOPT_USERAGENT,
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; WOW64; SV1; .NET CLR 2.0.50727)");
curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "cookies.txt");
curl_easy_setopt(curl, CURLOPT_COOKIEJAR, "cookies.txt");
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1L);
if ((success = curl_easy_perform(curl)) != 0) {
fprintf(stderr, "%s: %s\n", "curl_easy_perform", errbuf);
return 1;
}
curl_easy_cleanup(curl);
return 0;
}