Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IE Мастер импорта-экспорта Cookie, Как получить все Cookie из IE 
:(
    Опции темы
omihaz
  Дата 15.12.2007, 22:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.7.2007
Где: Украина

Репутация: нет
Всего: нет



Здравствуйте.

Появилась задача узнать какие Cookie установлены на определенном сайте. Есть список сайтов, надо пройтись по нему и узнать существования тех или иных Cookie значений. По началу все кажется придельно простым, можно использовать функцию из библеотеки WinINet -  InternetGetCookie.
НО с таким подходом, на некоторых сайтах оно находит значения Cookie, а на некоторых - нет, такое впечатление что Cookie нет вообще. Что Cookie существует это точно и они почему то в папке Temp.
То есть из 10 сайтов различий между Cookie почти нет, они просто разным сайтам принадлежат, но вот InternetGetCookie для одних нормально возвращает значение для других - нет. :(

Как альтернатива, можно получить все куки из браузера стандартной функцией IE мастер импорта экспорта. На выходе мы получаем файл со всеми значениями Cookie и можем дальше его обрабатывать. Но проблема в том, как реализовать такую функцию программно, т.е. не каждый раз вручную запускать данных мастер, а написать функцию типа: GetCookieFile(CookieFile: String): Boolean; Которая создает файл с этим списком Cookie или не обязательно файл, можно и TStrings обойтись.

Так вот вопрос в том как это сделать. Может есть какие то другие пути получить все зарегистрированные Cookie. Или можно как то вызвать через SendMessage() этот мастер в скрытом виде и выполнить эти задачи? Или может функции которые использует этот мастер хранятся где то в dll и ими можно воспользоваться?

Помогите пожалуйста. Вопрос вроде не сложный, просто мало знаний в этом направлении. Да и в Интернете и у Вас на форуме ничего толком и не нашел. :( Буду признателен за любую помощь.

С уважением, Владислав.
PM WWW ICQ Skype Jabber   Вверх
MetalFan
Дата 16.12.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



посмотри в этой теме
там в состав классов компонента входит менеджер печенек системных.
в приложении есть пример использования


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
omihaz
  Дата 16.12.2007, 01:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.7.2007
Где: Украина

Репутация: нет
Всего: нет



Спасибо за ответ.

Посмотрел, полезный компонент. Хорошая работа.  smile 

Из него единственное что можно взять это получение списка файлов Cookie и можно потом брать содержимое каждого файла и парсить на предмет нужного значения Cookie. Т.е. хоть и немного не ровно, но можно добиться ожидаемого результата. Завтра буду пробовать. Так же понравилась реализация CrackUrl прямо как в PHP функция parse_url().

Если будут какие то еще идеи или предложения, буду рад услышать. Еще раз спасибо за помощь и удачи. О результатах напишу чуть позже.
PM WWW ICQ Skype Jabber   Вверх
omihaz
Дата 16.12.2007, 03:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 15.7.2007
Где: Украина

Репутация: нет
Всего: нет



Все, задача выполнена. Большое тебе спасибо, MetalFan. Очень помог.

Итак, основываясь на классах компонента MFWIHTTP, была написана функция получения Cookie. Для себя я вырезал только необходимый мне клас получения списка Cookie файлов, так что названия классов у нас немного разные. Вот сама функция. Входящие параметры: домен к которому принадлежит Cookie, и имя самой Cookie, которой необходимо получить значение.

Код

uses WinInet_WrapperClasses;

function GetCookie(Domain, Name: String): String;
  // Функция получает имя домена, т.е. часть строки в имени файла Cookie
  function SubStr(Text: String): String;
    begin
      Result := '';
      if Pos('@', Text) <> 0 then
        Result := Copy(Text, Pos('@', Text) + 1, Length(Text) - Pos('@', Text) - 1);
    end;
var
  CacheList: TInetCacheList;
  Item: TInetCacheEntry;
  Cookies: TStrings;
  i, j: Integer;
begin
  Result    := '';
  Cookies   := TStringList.Create;
  CacheList := TInetCacheList.Create;
  try
  for i := 0 to CacheList.BuildList(cetCookie) - 1 do
    begin
      Item := TInetCacheEntry(CacheList[i]);
      if SubStr(Item.SourceUrl) = Domain then
        begin
        Cookies.LoadFromFile(Item.LocalFilename);
        for j := 0 to Cookies.Count - 1 do
          if Cookies.Strings[j] = Name then
            begin
              Result := Cookies.Strings[j+1];
              Break;
            end;
        end;
    end;
  finally
    Cookies.Free;
    CacheList.Free;
  end;
end;


Пример использования:
Код

GetCookie('www.microsoft.com', 'username');

PM WWW ICQ Skype Jabber   Вверх
MetalFan
Дата 16.12.2007, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



на здоровье) хоть кому-то пригодилось)


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0690 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.