Що відбувається в кеші IE під час виконання


1

Я пишу сценарій в Excel VBA, щоб отримати ескізи від пошуку зображень Google. Намагаючись з'ясувати, як очистити тимчасові файли, зроблені в цьому автоматичному пошуку, я натрапив на INetCache каталог.

Подальше копання показує, що ця папка (зокрема Low\IE підкаталог) містить величезну завантаженість зображень - деякі з них є ескізами зображень, самі файли яких я завантажував трудомістко через vba і вже присутні. Тому я вирішив розслідувати далі, налагоджуючи коди крок за кроком і бачачи, що вискочило в моєму InetCache\Low\IE і коли. Я збираюся пройти через мої результати і сподіваюся отримати відповіді

  • Що означають результати
  • Чи можу я скористатися цими файлами, а не завантажувати їх двічі (один раз в кеш, один раз з програмою VBA)
  • Як я повинен очистити цей безлад від VBA

NB Інтернет говорить мені, що ця папка знаходиться в різних місцях залежно від вашої системи; моя є %localAppData%\Microsoft\Windows\INetCache\Low\IE з Win10 IE11, але досить надійний спосіб дістатися до нього є тип

?CreateObject("Shell.Application").Namespace(32).self.path

у безпосереднє вікно vba. Всі файли захищені системними файлами так повинні бути видимими

Мої результати


Ось що я знайшов з'явився в INetCache\Low\IE папки, як я запустив мій VBA код. Я розпочав перейменування існуючої папки на oldIE

Запустіть браузер

Set objIE = New InternetExplorer 'requires referencing Microsoft Internet Controls
  • Новий IE створена порожня папка

Зробити браузер видимим

objIE.Visible = True
  • Новий container.dat файл, створений усередині IE

Перейдіть до веб-сторінки & amp; чекати навантаження

objIE.Navigate "https://www.google.com/search?q=cookies&safe=off&tbs=isz:ex,iszw:1366,iszh:768&tbm=isch&source=lnt"
'google images search for "cookies"
Do While objIE.Busy = True Or objIE.readyState <> 4: DoEvents: Loop 'wait for load
  • 4 Нові вкладені папки, створені за допомогою 8-ти буквено-цифрових імен
  • Вони містять кілька загальних іконок (Chrome, FB, twitter), хоча в одному міститься ескіз першого результату зображення (назва images[1].jpg )

Page Scroll

Google запускає деякі Ajax скрипт для завантаження більшої кількості зображень під час прокручування вниз. Мій метод полягає в тому, щоб прокрутити вниз, поки не з'явиться кнопка "отримати більше результатів"; це має означати, що завантажена вся сторінка об'єктів зображення (хоча їхні ескізи / рядки ще не присутні).

Set currpage = objIE.Document
Set myDiv = currpage.getElementById("fbar") 'this is the load more images button
Do Until elemRect.bottom > 0 'scroll until myDiv is in view
    currpage.parentWindow.scrollBy 0, 10000 'scroll by a big amount to trigger next part to load
    Set elemRect = myDiv.getBoundingClientRect
Loop
  • Всі 4 папки заповнюються зображеннями
    • Ці образи або є images[1-10].ext іменування або images слідом за алфавітно-цифровим рядком на 8 символів
    • Мені хотілося б дізнатися, чи існує шаблон, що стосується назви файлу / іншого властивості до його розташування на веб-сторінці, оскільки це дозволить мені використовувати ці зображення в програмі VBA
    • До кінця сторінки повністю завантажується 375 jpgs & amp; Всього в кеші 390 зображень, порівняно з 400 зображеннями на всій веб-сторінці
  • Випадкові перевірки, які я робив на цих зображеннях у кеші, показали, що вони знаходяться в результатах пошуку в IE (тобто я можу їх знайти, прокрутивши результати зображення, тому я припускаю, що всі зображення в кеші робити приходять безпосередньо з результатів пошуку в IE. Але мої чеки не були вичерпними)

Протягом цього часу я також прокручував сторінку вручну

  • Це створило нове навантаження .txt файли та інші файли. Він також завантажив більше зображень в кеш.
  • Для того, щоб це було корисним, мені знадобиться більш систематичний спосіб отримати їх у vba.

Підрахунок зображень

imgCount = currpage.getElementById("rg_s").getElementsByTagName("IMG").Length
  • Це повернуло 400 для вказаної URL-адреси пошуку. Кеш містив 375 зображень, які виглядали як ескізи пошуку, а також декілька інших логотипів та зображень піктограм
  • Можливою причиною невідповідності є те, що деякі (зазвичай перші 10 або більше) ескізи є базовими кодованими рядками, інші мають URL-адреси, можливо, лише ті, з URL-адресами кешуються (хоча це не виглядає так завжди)

Вихід з IE

objIE.Quit
  • Це нічого не помітне для файлів в кеші

Нарешті, завантаження ескізів зображень

Public Declare Function URLDownloadToFile Lib "urlmon" _
    Alias "URLDownloadToFileA" _
    (ByVal pCaller As Long, _
    ByVal szURL As String, _
    ByVal szFileName As String, _
    ByVal dwReserved As Long, _
    ByVal lpfnCB As Long) As Long

слідом за ними

fileurl = currpage.getElementById("rg_s").getElementsByTagName("IMG")(0).src
'returns thumbnail url of first image result
strFile = Environ("Temp") & "\Temp.jpg" 'place file in temp folder
ret = URLDownloadToFile(0, fileURL, strFile, 0, 0) 'fileurl is the web url, strfile is the save location
  • Також нічого не робить для зображень в кеші

Що я хочу знати (TL; DR)

Це все добре і денді, але що я насправді просять?

Добре:

  • Чи існує логіка іменування файлу зображення в кеші IE - або іншої властивості, яку я можу використовувати для відображення ескізів зображень в тому ж порядку, що і в пошуку в IE, використовуючи ці файли кешу?
  • Якщо я дійсно не можу використовувати їх взагалі, тому що їх розташування / найменування є абсолютно непередбачуваним; Як я можу очистити їх від VBA / зупинити їх коли-небудь створюється
    • Ця відповідь не доторкається до них, ні Підхід Siddharth Rout . Я не можу їх видалити CreateObject("Scripting.FileSystemObject") через проблеми із захистом, і всі інші методи, які я знайшов, є ручними і вимагають переходу за допомогою меню IE
    • Чи безпечно це робити? Reddit каже, що це так, але вони насправді не є Супер користувачі, як ви, хлопці. І я планую запустити це програмне забезпечення на машинах інших людей, тому я хочу перевірити, чи це те, від чого я повинен позбутися, щоб звільнити інших людей.
    • Я відчуваю, що це непотрібно, щоб все це завантажувалося в першу чергу
  • І, нарешті, чисто інтересно, які файли все-таки завантажені / створені?
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.