puppeteer-extra-plugin-session-persistence
v1.0.2
Published
A puppeteer-extra plugin to persist sessions.
Downloads
194
Maintainers
Readme
Puppeteer Extra Plugin Session Persistence
This TypeScript library provides a Puppeteer Extra plugin for persisting sessions in Puppeteer. It saves and loads cookies and localStorage data from different storage engines.
Features
- Save and load cookies and localStorage data
- Supports different storage engines (default: filesystem)
- Merge cookies and localStorage data from constructor and storage
- Automatically set cookies and localStorage data when a new page is created
Installation
npm install puppeteer-extra-plugin-session-persistence
Strategies
The plugin supports different strategies for persisting session data, all activated by default:
- A polling strategy, update very X seconds the cookies from every page (default 1000 ms), very useful for XHR requests that sets cookies by JS
- On HTTP response, update the cookies from the response thanks to the 'set-cookie' header
- Using onFrameNavigated event, update the cookies and localStorage data from every frame
Usage
const puppeteer = require('puppeteer-extra')
puppeteer.use(require('puppeteer-extra-plugin-session-persistence')())
// or
puppeteer.use(require('puppeteer-extra-plugin-session-persistence')({
persistCookies: true,
persistLocalStorage: true,
storage: {
name: 'filesystem',
options: {
localStorageDataFile: './localStorageData.json',
cookiesFile: './cookies.json'
}
}
}))
const browser = await puppeteer.launch()
Options
persistCookies
(boolean, default: true): Allow or disallow cookies persistence.persistLocalStorage
(boolean, default: true): Allow or disallow local storage persistence.storage
(StorageConfig, default: filesystem storage): Storage options.localStorageData
(LocalStorageData, default: {}): Local storage data to load.cookies
(Cookie[], default: []): Cookies to load.
Storage Engines
The plugin supports different storage engines for persisting session data:
- File System Storage (default)
- Redis Storage
- In-Memory Storage
To use a specific storage engine, pass the corresponding configuration object to the plugin constructor. For example, to use Redis storage:
puppeteer.use(require('puppeteer-extra-plugin-session-persistence')({
storage: {
name: 'redis',
options: {
host: 'localhost',
port: 6379
}
}
}))
License
This library is released under the MIT License.