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

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   работа с куками (C++) (https://forum.antichat.xyz/showthread.php?t=44026)

Satell 08.07.2007 19:21

работа с куками (C++)
 
1. Как сделать, чтобы код на vc++ ниже, скачивающий страницу, добавлял в заголовок запроса такую куку из джава скрипта? т.е. чтобы сервер опряделял, что у меня есть поддержка кук и читал эту куку...
и ещё есть ли в с++ библиотека на подобии как в perl LWP::UserAgentLWP cookie_jar, чтобы когда я запрашиваю страницу у меня определялось, что куки включены и также сохранялись там куки с запрашиваемой страницы.
Если это нельзя сделать с помощью WinInet, то буду благодарен за код на сокетах
2. как сделать чтобы тянуть не всю страницу, а только http заголовок?

<script language="javascript" type="text/javascript">
<!--
document.cookie='roton=MnwwfDExODM4ODExMDR8MTE4Mzg 4MTEwNHwwO2Jvb2ttYXJrfG5vcmVmX2lu; expires=Mon, 09 Jul 2007 07:51:44 GMT; path=/;';
document.cookie='fav=1183881104; expires=Mon, 07 Jul 2008 07:51:44 GMT; path=/;';
//-->
</script>

Код:

#include "stdafx.h"

#include <windows.h>
#include <wininet.h>
#pragma comment(lib,"wininet")

#include <stdlib.h>
#include <fstream.h>

int main(int argc, char* argv[])
{
        bool ok = false;

       
        HINTERNET hInternet =
                ::InternetOpen(
                        TEXT("WinInet Test"),
                        INTERNET_OPEN_TYPE_PRECONFIG,
                        NULL,NULL,                       
                        0);

        if (hInternet != NULL) {
                HINTERNET hConnect =
                        ::InternetConnect(
                                hInternet,
                                TEXT("www.site.com"),
                                INTERNET_DEFAULT_HTTP_PORT,
                                NULL,NULL,
                                INTERNET_SERVICE_HTTP,
                                0,
                                1u);

                if (hConnect != NULL) {
                        HINTERNET hRequest =
                                ::HttpOpenRequest(
                                        hConnect,
                                        TEXT("GET"),
                                        TEXT("cgi-bin/infomy.cgi"),
                                        NULL,
                                        NULL,
                                        0,
                                        INTERNET_FLAG_KEEP_CONNECTION,
                                        1);

                        if (hRequest != NULL) {
                                BOOL bSend = ::HttpSendRequest(hRequest, NULL,0, NULL,0);
                                if (bSend) {
                                        ofstream fnews("mp3.htm",ios::out|ios::binary);
                                        if (fnews.is_open()) for (;;) {
                                                char  szData[1024];
                                                DWORD dwBytesRead;
                                                BOOL bRead =
                                                        ::InternetReadFile(
                                                                hRequest,
                                                                szData,sizeof(szData)-1,
                                                                &dwBytesRead);

                                                if (bRead == FALSE  ||  dwBytesRead == 0)
                                                        break;

                                                szData[dwBytesRead] = 0;
                                                fnews << szData;

                                                ok = true;
                                        }
                                }

                                ::InternetCloseHandle(hRequest);
                        }

                        ::InternetCloseHandle(hConnect);
                }
               
                ::InternetCloseHandle(hInternet);
        }

        if (ok)
                system("start mp3.htm");

        return 0;
}


Satell 09.07.2007 13:55

кука не читается, добавляю в ф-и httpsendrequest дополнительные заголовки и читаю на сервере $env{HTTP_COOKIE}, так вот она пустая, Accept-language читается нормально.

char* header ="Cookie: test=12345\r\nAccept-language: en-us\r\n";
BOOL bSend = ::HttpSendRequest(hRequest, header,44, NULL,0);


да кстате как прочитать куки из страницы, которую я загружаю?

Satell 09.07.2007 16:19

roton=MnwwfDExODM4ODExMDR8MTE4Mzg4MTEwNHwwO2Jvb2tt YXJrfG5vcmVmX2lu; expires=Mon, 09 Jul 2007 07:51:44 GMT; path=/;
fav=1183881104; expires=Mon, 07 Jul 2008 07:51:44 GMT; path=/;
Как вытащить этот текст из страницы без регулярных выражений?

document.cookie='текст1';
document.cookie='текст2';
текст1=roton=MnwwfDExODM4ODExMDR8MTE4Mzg4MTEw NHwwO2Jvb2ttYXJrfG5vcmVmX2lu; expires=Mon, 09 Jul 2007 07:51:44 GMT; path=/;
текст2=fav=1183881104; expires=Mon, 07 Jul 2008 07:51:44 GMT; path=/;


Время: 06:00