Перенос кэша из другой сессии

dennsp

Client
Регистрация
19.12.2021
Сообщения
9
Благодарностей
1
Баллы
3
Прошу совета по вопросу работы с кэшем браузера

Мне нужно работать с одной и той же страницей одного сайта, там передается фиксированный набор файлов - JS, CSS, шрифты, они каждый раз одни и те же, иногда сайт обновляет версию.
Объем файлов около 10 Мб, трафик на прокси у меня дорогой, а загружать надо очень часто. Если без кэша, то набежит несколько ТБ в день.

Использование одного и того же профиля с сохранением кэша невозможно, сайт вычисляет fingerprint в браузере и банит. При генерации новой сессии, fingerprint меняется (смотрю в devtools передаваемые данные на сервер).

Задача: сохранить кэш браузера (загруженные файлы JS, шрифтов и прочего) и перенести их в новую сессию, но при этом саму сессию сделать новой, чтобы поменялся fingerprint.

Пробовал использование профиль-папки (на примере chromium). Загруженные файлы, судя по всему, лежат в папке Default\Service Worker\CacheStorage
Но перенести их в новую сессию не удается.

Запускаю новый инстанс с новой профиль-папкой, ставлю точку останова, копирую содержимое папки CacheStorage из предыдущей сессии, но браузер эти данные не подхватывает, загружает все статические файлы с сайта заново, хотя при этом в папке CacheStorage изменений не происходит.

Возможно есть какие-то методы на c# или на JS, которыми можно либо скопировать содержимое кэша из предыдущей сессии, либо скопировать полностью профиль-папку и удалить из нее все, что может влиять на вычисление fingerprint, оставив только кэш.
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 510
Благодарностей
3 365
Баллы
113

dennsp

Client
Регистрация
19.12.2021
Сообщения
9
Благодарностей
1
Баллы
3
Сайт может хранить данные по нему.
Может, но пока не хранит, выяснено на практике. И я вижу какой JS-библиотекой вычисляется fingerprint, нашел ее в исходнике их скриптов, проанализировал принцип вычисления.

С кэшем вопрос частично решил, может кому понадобится.

Работаю с Chromium. Для переноса кэша из прошлой сессии нужно скопировать папку Service Worker со всем содержимым, она в папке Default профиль-папки.

Кэш не подхватится, если браузер уже запущен. Я делаю в 4 этапа:
  1. Запускаю инстанс с новой профиль-папкой. Браузер создает папку со всем содержимым
  2. Запускаю инстанс без профиль-папки, после этого профиль-папка, созданная на этапе 1 освобождается от использования браузером и в нее дописываются некоторые файлы по завершению сессии.
  3. Копирую заранее сохраненный кэш
  4. Запускаю инстанс с той же профиль-папкой, что и на этапе 1
Не слишком быстро, но по итогу все работает, кэш подхватывается, при загрузке целевой страницы с удаленного сервера загружается минимум данных.

Пока осталось только решить вопрос с обновлением кэша, если данные изменились.
 
  • Спасибо
Реакции: Yuriy Zymlex

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 510
Благодарностей
3 365
Баллы
113

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)