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 🙏

© 2024 – Pkg Stats / Ryan Hefner

@marshallofsound/chrome-cookies-secure

v2.1.1

Published

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

Downloads

7,566

Readme

chrome-cookies-secure

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

Installation

npm install chrome-cookies-secure

API

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

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 request 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.

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

Examples

basic usage

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

jar used with request

const request = require('request');
const chrome = require('chrome-cookies-secure');

chrome.getCookies('https://www.example.com/', 'jar', function(err, jar) {
	request({url: 'https://www.example.com/', jar: jar}, function (err, response, body) {
		console.log(body);
	});
});

puppeteer with specific Chrome profile

const chrome = require('chrome-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();
});

Calling using async/await

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

const myFunction = async () => {
    const cookies = await chrome.getCookiesPromised(url, 'puppeteer', 'Profile 28')
    // ..... Use the cookies
}

Limitations

On OS X, this module requires Keychain Access to read the Google Chrome encryption key. The first time you use it, it will popup this dialog:

image

The SQLite database that Google Chrome stores its cookies is only persisted to every 30 seconds or so, so this can explain while you'll see a delay between which cookies your browser has access to and this module.

License

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