Удаление cookies на WinInet [DELPHI]

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by GlooK, 23 Sep 2009.

  1. GlooK

    GlooK Elder - Старейшина

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Столкнулся с проблемкой - не могу почистить куки, когда использую wininet.
    Поиск гугла и ачата ничего вразумительного не дал.

    Делаю запрос используя код:
    Code:
    function fSendRequest(chHost, chPath: PChar):string;
      var
        hInternet: Pointer;
        hConnect: Pointer;
        hRequest: Pointer;
        BuffData: Char;
        ReadData: Cardinal;
        FullData: String;
      begin
        hInternet := InternetOpen('Approove', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
        hConnect := InternetConnect(hInternet, chHost, INTERNET_DEFAULT_HTTP_PORT, nil, nil, INTERNET_SERVICE_HTTP, 0, 0);
        hRequest := HttpOpenRequest(hConnect, 'GET', chPath, nil, nil, nil, INTERNET_FLAG_KEEP_CONNECTION, 0);
        HttpSendRequest(hRequest, nil, 0, nil, 0);
        while (TRUE) do
        begin
          InternetReadFile(hRequest, @BuffData, SizeOf(BuffData), ReadData);
          if ReadData = 0 then break;
          FullData := FullData + BuffData;
        end;
        InternetCloseHandle(hRequest);
        InternetCloseHandle(hConnect);
        InternetCloseHandle(hInternet);
        result := FullData;
      end;
    
    Проснифав трафик, запрос получается такой:
    Code:
    GET /index HTTP/1.1
    User-Agent: Approove 
    Host: pda.vkontakte.ru 
    Connection: Keep-Alive 
    Cookie: remixlang=0; remixchk=5; remixmid=XXX; remixemail=XXX; remixpass=XXX; remixsid=XXX; remixcookiecheck=1
    
    Все что находится в хэдре Cookie, он видимо берет из IE, если в нем есть сохраненные эти куки.

    Вопрос: Как удалить все куки этого сайта?

    P.S. Пока не охота переходить с WinInet на WinSock - много кода лишнего каждый раз писать придется.
     
  2. StopSpam

    StopSpam Banned

    Joined:
    5 Jul 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    присоединяюсь к вопросу, уперся в эту же проблему, куки всегда одни, должен же быть способ

    а сам прикол что если куки из HTTPS то имя файла у них рандомное =( даже не удалить толком
    а повторная установка или вызов глобальной очистки нечего не дают :confused:
     
  3. enigma

    enigma Member

    Joined:
    10 Jul 2011
    Messages:
    80
    Likes Received:
    15
    Reputations:
    7
    Code:
    hRequest := HttpOpenRequest(hConnect, 'GET', chPath, nil, nil, nil, INTERNET_FLAG_KEEP_CONNECTION, INTERNET_FLAG_NO_COOKIES | INTERNET_FLAG_NO_AUTO_REDIRECT, 1);
     
  4. StopSpam

    StopSpam Banned

    Joined:
    5 Jul 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    без редиректа и совсем без кукисов =/
    это не то

    нужно чтобы запрос был с редиректом и с кукисами но кукисы не сохранил

    сейчас копаю в сторону InternetSetOption INTERNET_OPTION_SUPPRESS_BEHAVIOR INTERNET_SUPPRESS_COOKIE_POLICY
     
    #4 StopSpam, 27 Sep 2011
    Last edited: 27 Sep 2011
  5. enigma

    enigma Member

    Joined:
    10 Jul 2011
    Messages:
    80
    Likes Received:
    15
    Reputations:
    7
    Ну так добавь их сам. Прежде спарсь их (без редиректа)

    Code:
    HttpAddRequestHeaders(hRequest, "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", strlen("Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"), HTTP_ADDREQ_FLAG_ADD);
    				
    HttpAddRequestHeaders(hRequest, "КУКИСЫ",strlen("КУКИСЫ"), HTTP_ADDREQ_FLAG_ADD);
     
  6. StopSpam

    StopSpam Banned

    Joined:
    5 Jul 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    я поспорил что IE сделает это сам =(
    если бы я думал как спарсить заголовки то заюзал бы CURL и не ебал бы вам мозги.
    короче мне нужно wininet.dll заставить забыть куки после запроса и записать новые при новом запросе :(