Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / curllib, запрос на авторизацию в онлайн-чате / 1 сообщений из 1, страница 1 из 1
10.05.2016, 16:02
    #39232562
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
curllib, запрос на авторизацию в онлайн-чате
Возьмём для примера онлайн чат http:// kolhozanet.ru/chat-onlain.html.
Посещение фактическин а нуле, но не в этом суть.
Хочу научиться составлять http-запросы с помощью curllib.

Нажимаем кнопку "Войти в чат", данные, которые передаются, видим на скриншоте.
msg - это наш логин
csrf - строка, в которой меняются некоторые символы

Составил такую программу:
Код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
#include <cstring>
#include <random>
#include "curl.h"
#pragma comment(lib,"curllib_static.lib") 
#pragma comment(lib,"libcurl_imp.lib")
#pragma warning(disable: 4996)
using namespace std;

static size_t write_head(char *ptr, size_t size, size_t nmemb, std::ostream* stream)
{
    (*stream)<< std::string(ptr, size*nmemb);
    return size*nmemb;
}

int main()
{
	string act = "login"; // Запрос залогиниться
	string chat = "31229"; // Id чата
	string msg = "MrMrMr"; // Логин
	string pv = "0";
	string c = "";
	string bind = "0";
	string csrf = "7a8d10aa41f973915411475467e0effc"; // Для разных логинов разнится

	string post_data;
	post_data = "act=" + act + "&chat=" + chat + "&msg=" + msg + "&pv=" + pv + "&c=" + c + "&bind=" + bind + "&csrf=" + csrf;

	CURL *curl_handle;
    CURLcode res;
    curl_handle = curl_easy_init();
    if(curl_handle)
        {
             curl_easy_setopt(curl_handle, CURLOPT_URL, "http://kolhozanet.ru/chat-onlain.html");
			 curl_easy_setopt(curl_handle, CURLOPT_FOLLOWLOCATION, 1);
			 curl_easy_setopt(curl_handle, CURLOPT_COOKIEFILE,"");
                         curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36");
			 curl_easy_setopt(curl_handle, CURLOPT_REDIR_PROTOCOLS, "http://kolhozanet.chatovod.ru/");
			 curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDS, post_data.c_str() );
            curl_easy_setopt(curl_handle, CURLOPT_POSTFIELDSIZE, post_data.length() );

             res = curl_easy_perform(curl_handle);
			 if (res == CURLE_OK)
			 {
				 cout << endl << "OK!" << endl;
			 }

			

             curl_easy_cleanup(curl_handle);
        }

	cin.get();
	cin.get();
	return 0;
}



Почти уверен, что не так как нужно, составил заголовок запроса.
Либо ещё что-то не учёл.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / curllib, запрос на авторизацию в онлайн-чате / 1 сообщений из 1, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]