Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Как удалить или получить доступ к cookie-файлам? Добавлено: 15.12.07 19:15  

Автор вопроса:  Apache2 | ICQ: 162823477 
Смысл такой, очень понадобилась процедура, для роботы с cookie-файлами.. Internet Explorer-а.

Кто подскажет как программно можно удалять cookie, читать их, создавать :)

Ответить

  Ответы Всего ответов: 15  

Номер ответа: 1
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #1
Добавлено: 15.12.07 21:04
ну у эксплорера есть стандартная папка с кукисами для каждого юзера. там все файлы. вот и читай сколько влезет =)

Ответить

Номер ответа: 2
Автор ответа:
 Apache2



ICQ: 162823477 

Вопросов: 31
Ответов: 114
 Профиль | | #2 Добавлено: 15.12.07 23:02
Да, я заметил:

C:\Documents and Settings\UserName\Cookies

читать действительно можно, но.. как удалить?

kill "C:\Documents and Settings\UserName\Cookies\*.txt"

помогает, но несовсем :((
файлы-то сами удаляются, но некорректно.. в базе данных индекса.. всё остаётся.. точнее ссылка.
И это критически.

Как можно корректно удалить все cookie средствами VB.. Подойдут даже самые экстремальные варианты.

Равнозначно операции в настройках IE - очистить cookie :)

Ответить

Номер ответа: 3
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #3
Добавлено: 15.12.07 23:52
Дизасм =)
idag.exe "c:\program files\internet explorer\iexplore.exe"
=)
И быстренько ищем что откуда берется, как что удалить и вообще все, что угодно =)

Ответить

Номер ответа: 4
Автор ответа:
 Apache2



ICQ: 162823477 

Вопросов: 31
Ответов: 114
 Профиль | | #4 Добавлено: 16.12.07 00:56
Я не хакер, поэтому ищу официальный способ :)

и по-моему в iexplore.exe нету ничего.. всё в библиотеках, количество которых несколько тыщь..

Люди, ну неужели нету компетентных людей?

Может какой-нить жава-vbs скрипт есть?
или проникнуть в объектную модель IE и как-то добраться официальным способом до куков.. этих злосчастных.

Ответить

Номер ответа: 5
Автор ответа:
 Retupa



Вопросов: 1
Ответов: 51
 Профиль | | #5 Добавлено: 16.12.07 02:28
Куки, как и все др. файлы с которыми работает IE храняться в его кеше, если при доступе к ним не было запрета на кеширование. Ни в каких папках их нет, Executioner, не надо говорить ерунды. Для доступа к кешу нужно использовать эти функции
Declare Sub FindCloseUrlCache Lib "wininet.dll" (ByVal hEnumHandle As Long)
Declare Function DeleteUrlCacheEntry Lib "wininet.dll" Alias ";DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
Declare Function FindNextUrlCacheEntry Lib "wininet.dll" Alias "FindNextUrlCacheEntryA" (ByVal hEnumHandle As Long, ByVal lpNextCacheEntryInfo As Long, ByRef lpdwNextCacheEntryInfoBufferSize As Long) As Long
Declare Function FindFirstUrlCacheEntry Lib "wininet.dll" Alias "FindFirstUrlCacheEntryA" (ByVal lpszUrlSearchPattern As String, ByVal lpFirstCacheEntryInfo As Long, ByRef lpdwFirstCacheEntryInfoBufferSize As Long) As Long
и Type INTERNET_CACHE_ENTRY_INFO
Apache2, примеров в инете полно, поищи в гугле.. лень писать..

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 16.12.07 06:01
http://www.google.ru/search?hl=ru&q=iecv&lr=
Ну а дальше idag :)

Ответить

Номер ответа: 7
Автор ответа:
 Apache2



ICQ: 162823477 

Вопросов: 31
Ответов: 114
 Профиль | | #7 Добавлено: 16.12.07 09:46
Шутников просим не флудить! :)

Кто-нить может привести реально работающий пример?
Потому, что я с API на вы..


вот доп материалы:
http://www.vbnet.ru/faq/showtopic.asp?id=385
http://www.vbstreets.ru/VB/Articles/66050.aspx
http://support.microsoft.com/kb/311289/ru
http://www.delphilab.ru/content/view/51/31/
http://subscribe.ru/archive/inet.webbuild.javascripthome/200609/28111409.html

НА разных языках.. но ничего конкретного.

Для моей задачи необходимо очистить все куки, а кэш html файлов не трогать!


Для себя пока реальным выходом вижу:

1. с помощью VB менять дату на далёкое будущее-прошлое..

2. VB+JAva:

VB: читает специфическое имя в каждом cookie
C:\Documents and Settings\UserName\Cookies\

и котом WebBrowser1.document.write ("Java";)

Java:

var exp = new Date();
exp.setTime (exp.getTime() - 1000000000); // This cookie is history (changed -1 to make it previous time)
var cval = GetCookie ('полученное имя куки');
document.cookie ='DemoName' + "=" + cval + "; expires=" + exp.toGMTString();
alert("Cookie удалены.";);


Есть более цивильный вариант? - выкладывайте :)

Ответить

Номер ответа: 8
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #8 Добавлено: 17.12.07 20:45
:) Ну воопервых не Java, а JavaScript
Во-вторых тогда уже не document.write, а eval
В-третьих я бы советовал таки прислушаться к советам RetupЫ :)

Ответить

Номер ответа: 9
Автор ответа:
 Apache2



ICQ: 162823477 

Вопросов: 31
Ответов: 114
 Профиль | | #9 Добавлено: 18.12.07 15:24
Ну да.. Java-script не помогает.. :(
т.к. не может удалить куки созданные другими сайтами.

подскажите какой код, что ли на vb.. а то не знаю даже с чего начать.

Ответить

Номер ответа: 10
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #10 Добавлено: 20.12.07 01:19
в базе данных индекса.. всё остаётся.. точнее ссылка
А что за база данных индекса? Может и ссылку оттуда удалять и всё ок? :)

Ответить

Номер ответа: 11
Автор ответа:
 Apache2



ICQ: 162823477 

Вопросов: 31
Ответов: 114
 Профиль | | #11 Добавлено: 22.12.07 12:02
ну База данных.. типа реестра включая ссылки и на временные файлы.

Так как грамотно удалить?

Ответить

Номер ответа: 12
Автор ответа:
 Apache2



ICQ: 162823477 

Вопросов: 31
Ответов: 114
 Профиль | | #12 Добавлено: 22.12.07 13:14
Немного поразмыслив, почитав многие доки, уже близок к истине, научился удалять и проверять есть ли такой куукc в кэше:



Private Const ERROR_INSUFFICIENT_BUFFER = 122

Private Type FILETIME
dwLowDateTime As Long
dwHighDateTime As Long
End Type

Private Type INTERNET_CACHE_ENTRY_INFO
dwStructSize As Long
lpszSourceUrlName As String
lpszLocalFileName As String
CacheEntryType As String
dwUseCount As Long
dwHitRate As Long
dwSizeLow As Long
dwSizeHigh As Long
LastModifiedTime As FILETIME
ExpireTIme As FILETIME
LastAccessTime As FILETIME
LastSyncTime As FILETIME
lpHeaderInfo As Long
dwHeaderInfoSize As Long
lpszFileExtension As String
dwReserved As Long
End Type

Private Declare Function DeleteUrlCacheEntry Lib "wininet.dll" Alias ";DeleteUrlCacheEntryA" (ByVal lpszUrlName As String) As Long
Private Declare Function GetUrlCacheEntryInfo Lib "wininet.dll" Alias "GetUrlCacheEntryInfoA" (ByVal sUrlName As String, lpCacheEntryInfo As Any, lpdwCacheEntryInfoBufferSize As Long) As Long

'для поиска первого элемента кэша:
Private Declare Function FindFirstUrlCacheEntry Lib "wininet.dll" Alias "FindFirstUrlCacheEntryA" (ByVal lpszUrlSearchPattern As String, ByVal lpFirstCacheEntryInfo As Long, ByRef lpdwFirstCacheEntryInfoBufferSize As Long) As Long
'для перебора кэша:
Private Declare Function FindNextUrlCacheEntry Lib "wininet.dll" Alias "FindNextUrlCacheEntryA" (ByVal hEnumHandle As Long, ByVal lpNextCacheEntryInfo As Long, ByRef lpdwNextCacheEntryInfoBufferSize As Long) As Long


Private Sub Command1_Click()
If GetUrlCacheEntryInfo("Cookie:w@yandex.ru/", ByVal 0&, 0) = 0 Then ' проверка есть ли такой адрес в кэше?
lErr = Err.LastDllError
  If (lErr = ERROR_INSUFFICIENT_BUFFER) Then
  MsgBox "URL есть кэше! :)"
  Else
  MsgBox "URL нету кэше. :("
  End If
End If


If DeleteUrlCacheEntry("Cookie:w@yandex.ru/";) = 1 Then ' удаление из кэша адреса!
MsgBox "URL Удалена! :)"
Else
MsgBox "URL не удалена. :("
End If

End Sub



ВЫЯСНИЛ, что куки в винде находятся под таким адресом: Cookie:w@yandex.ru/ и т.п.

а в папке C:\Documents and Settings\W\Cookies\
файл выглядит так: w@yandex[2].txt


НЕ РЕШИЛ ЕЩЁ:
1.Загадкой до сих пор остаётся как перебрать все кууки(URL), чтобы их поштучно поудалять?

Вот с функциями поиска и перебора проблемы....

2. Ещё не понятно, почему при проверке есть ли такой адрес в кэше используется такая странная штука: Err.LastDllError

Дебри... дебри.. есть на форуме грамотные, чтобы готовое растолковать?

Ответить

Номер ответа: 13
Автор ответа:
 



Администратор

ICQ: 278109632 

Вопросов: 42
Ответов: 3949
 Web-сайт: domkratt.com
 Профиль | | #13
Добавлено: 22.12.07 13:33
2. Ещё не понятно, почему при проверке есть ли такой адрес в кэше используется такая странная штука: Err.LastDllError

Ну тут все должно быть понятно. Если библиотека вернула ошибку ERROR_INSUFFICIENT_BUFFER, значит такой URL есть.

По поводу поиска.... можно перебирать все файлы кукисов.

Ответить

Номер ответа: 14
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #14 Добавлено: 22.12.07 15:19
Да, я заметил:

C:\Documents and Settings\UserName\Cookies

А потом начнется
* Почему моя прогармма не работает под администратором?
* Почему моя программа не работает когда ОС установлена на диск Е?
* Почему моя программа не работает под Вистой?
* Тупые программисты ОС опять написали глючную ОС

Ответить

Номер ответа: 15
Автор ответа:
 Apache2



ICQ: 162823477 

Вопросов: 31
Ответов: 114
 Профиль | | #15 Добавлено: 22.12.07 17:27
C:\Documents and Settings\UserName\Cookies

Таким способом немного не правильно пользоватья, это понятно.



Так кто посоветует грамотный код поиска URL кууков, типа "Cookie:w@yandex.ru/", используя:

FindFirstUrlCacheEntry и FindNextUrlCacheEntry

В интернете обыскался.. работающего пока ничего не нашёл.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам