npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

edge-cookies-secure

v1.0.0

Published

Extract encrypted Google Chrome and Microsoft Edge cookies for a url on a Mac, Linux or Windows

Readme

edge-cookies-secure

Extract encrypted Google Chrome and Microsoft Edge cookies for a url on Mac OS X, Windows, or Linux

Installation

npm install edge-cookies-secure

Optional Dependencies

Because this package is designed to work cross-platform, two operating system specific dependencies are declared as optionalDependencies.

If you are working on these platforms you should install these manually after running npm i.

For Windows

For macOS

API

getCookies(url[,format],callback,profile,browser)

url should be a fully qualified url, e.g. https://www.example.com/path

format is optional and can be one of the following values:

format | description ------------ | ------------- curl | Netscape HTTP Cookie File contents usable by curl and wget jar | cookie jar compatible with [tough-cookie] set-cookie | Array of Set-Cookie header values header | cookie header string, similar to what a browser would send puppeteer | an array of objects that can be loaded into puppeteer using the setCookie(...) method object | (default) Object where key is the cookie name and value is the cookie value. These are written in order so it's possible that duplicate cookie names will be overriden by later values

If format is not specified, object will be used as the format by default.

browser is optional and can be either 'chrome' (default) or 'edge' to specify which browser's cookies to extract.

Cookie order tries to follow RFC 6265 - Section 5.4, step 2 as best as possible.

Examples

basic usage

const chrome = require('edge-cookies-secure');
chrome.getCookies('https://www.example.com/path/', function(err, cookies) {
	console.log(cookies);
});
const chrome = require('edge-cookies-secure');
const cookies = await chrome.getCookiesPromised('https://www.example.com/path/', 'jar')

basic usage with Microsoft Edge

const chrome = require('edge-cookies-secure');
chrome.getCookies('https://www.example.com/path/', function(err, cookies) {
	console.log(cookies);
}, 'Default', 'edge');
const chrome = require('edge-cookies-secure');
const cookies = await chrome.getCookiesPromised('https://www.example.com/path/', 'jar', 'Default', 'edge')

puppeteer with specific Chrome profile

const chrome = require('edge-cookies-secure');
const puppeteer = require('puppeteer');

const url = 'https://www.yourUrl.com/';

const getCookies = (callback) => {
    chrome.getCookies(url, 'puppeteer', function(err, cookies) {
        if (err) {
            console.log(err, 'error');
            return
        }
        console.log(cookies, 'cookies');
        callback(cookies);
    }, 'yourProfile') // e.g. 'Profile 2'
}

getCookies(async (cookies) => {
    const browser = await puppeteer.launch({
        headless: false
    });
    const page = await browser.newPage();

    await page.setCookie(...cookies);
    await page.goto(url);
    await page.waitFor(1000);
    browser.close();
});

puppeteer with Microsoft Edge profile

const chrome = require('edge-cookies-secure');
const puppeteer = require('puppeteer');

const url = 'https://www.yourUrl.com/';

const getCookies = (callback) => {
    chrome.getCookies(url, 'puppeteer', function(err, cookies) {
        if (err) {
            console.log(err, 'error');
            return
        }
        console.log(cookies, 'cookies');
        callback(cookies);
    }, 'Default', 'edge') // Extract from Microsoft Edge
}

getCookies(async (cookies) => {
    const browser = await puppeteer.launch({
        headless: false
    });
    const page = await browser.newPage();

    await page.setCookie(...cookies);
    await page.goto(url);
    await page.waitFor(1000);
    browser.close();
});

Calling using async/await

const chrome = require('edge-cookies-secure');
const url = 'https://www.yourUrl.com/';

const myFunction = async () => {
    // Get cookies from Chrome
    const chromeCookies = await chrome.getCookiesPromised(url, 'puppeteer', 'Profile 28')
    
    // Get cookies from Edge
    const edgeCookies = await chrome.getCookiesPromised(url, 'puppeteer', 'Default', 'edge')
    
    // ..... Use the cookies
}

Limitations

On OS X, this module requires Keychain Access to read the browser encryption key. The first time you use it, it will popup a dialog asking for permission:

  • For Chrome: "edge-cookies-secure wants to use your confidential information stored in 'Chrome Safe Storage' in your keychain."
  • For Edge: "edge-cookies-secure wants to use your confidential information stored in 'Microsoft Edge Safe Storage' in your keychain."

image

The SQLite database that browsers store cookies in is only persisted every 30 seconds or so, so this can explain why you'll see a delay between which cookies your browser has access to and this module.

Supported Browsers

  • Google Chrome: Fully supported on Windows, macOS, and Linux
  • Microsoft Edge (Chromium-based): Fully supported on Windows, macOS, and Linux

The module automatically detects the correct cookie storage location and encryption method for each browser.

Credits

This package is based on the excellent chrome-cookies-secure by Bertrand Fan and Reece Daniels. This version extends the original work to include full Microsoft Edge support alongside Chrome.

License

This software is free to use under the MIT license. See the LICENSE file for license text and copyright information.