Home

Awesome

PyPi Downloads PyPi Version License

This is a python3 fork of Richard Penman's Browser Cookie

Browser Cookie

Install

pip install browser-cookie3

Python usage

Here is a dangerous hack to extract the title from a webpage:

#!python

>>> import re
>>> get_title = lambda html: re.findall('<title>(.*?)</title>', html, flags=re.DOTALL)[0].strip()

And here is the webpage title when downloaded normally:

#!python

>>> import urllib2
>>> url = 'https://bitbucket.org/'
>>> public_html = urllib2.urlopen(url).read()
>>> get_title(public_html)
'Git and Mercurial code management for teams'

Now let's try with browser_cookie3 - make sure you are logged into Bitbucket in Firefox before trying this example:

#!python

>>> import browser_cookie3
>>> cj = browser_cookie3.firefox()
>>> opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
>>> login_html = opener.open(url).read()
>>> get_title(login_html)
'richardpenman / home &mdash; Bitbucket'

You should see your own username here, meaning the module successfully loaded the cookies from Firefox.

Here is an alternative example with requests, this time loading the Chrome cookies. Again make sure you are logged into Bitbucket in Chrome before running this:

#!python

>>> import browser_cookie3
>>> import requests
>>> cj = browser_cookie3.chrome()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)
'richardpenman / home &mdash; Bitbucket'

Alternatively if you don't know/care which browser has the cookies you want then all available browser cookies can be loaded:

#!python

>>> import browser_cookie3
>>> import requests
>>> cj = browser_cookie3.load()
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)
'richardpenman / home &mdash; Bitbucket'

Alternatively if you are only interested in cookies from a specific domain, you can specify a domain filter.

#!python

>>> import browser_cookie3
>>> import requests
>>> cj = browser_cookie3.chrome(domain_name='www.bitbucket.com')
>>> r = requests.get(url, cookies=cj)
>>> get_title(r.content)
'richardpenman / home &mdash; Bitbucket'

Command-line usage

Run browser-cookie --help for all options. Brief examples:

$ browser-cookie --firefox stackoverflow.com acct
t=BASE64_STRING_DESCRIBING_YOUR_STACKOVERFLOW_ACCOUNT

$ browser-cookie --json --chrome stackoverflow.com acct
{"version": 0, "name": "acct", "value": "t=BASE64_STRING_DESCRIBING_YOUR_STACKOVERFLOW_ACCOUNT",
"port_specified": false, "domain": ".stackoverflow.com", "domain_specified": true,
"domain_initial_dot": true, "path": "/", "path_specified": true, "secure": 1,
"expires": 1657049738, "discard": false, "rfc2109": false}

$ browser-cookie nonexistent-domain.com nonexistent-cookie && echo "Cookie found" || echo "No cookie found"
No cookie found

Fresh cookie files

Creating and testing a fresh cookie file can help eliminate some possible user specific issues. It also allows you to upload a cookie file you are having issues with, since you should never upload your main cookie file!

Chrome and chromium

For linux and assumably mac:

Run google-chrome-stable --user-data-dir=browser_cookie3 #replace google-chrome-stable with your command to start chrome/chromium and when you close the browser you will have a new cookie file at browser_cookie3/Default/Cookies

If you want to share a cookie file then visit some site that will generate cookie (without logging in!), example https://www.theverge.com/ will save cookies after you accept the GDPR notice.

Planned backwards incompatible changes for 1.0

Contribute

So far the following platforms are supported:

You are welcome to contribute support for other browsers, or other platforms.

Testing Dates (dd/mm/yy)

BrowserLinuxMacOSWindows
Chrome31/01/2331/01/2331/01/23
Firefox05/06/2305/06/2305/06/23
LibreWolf05/06/2305/06/2305/06/23
Opera31/01/2331/01/2331/01/23
Opera GX-31/01/2331/01/23
Edge31/01/2331/01/2331/01/23
Chromium07/24/2115/06/2215/06/22
Brave31/01/2331/01/2331/01/23
Vivaldi31/01/2331/01/2315/06/22
Safari-31/01/23-
W3m05/07/23--
Lynx05/07/23--

However I only tested on a single version of each browser and so am not sure if the cookie sqlite format changes location or format in earlier/later versions. If you experience a problem please open an issue which includes details of the browser version and operating system. Also patches to support other browsers are very welcome, particularly for Chrome and Internet Explorer on Windows.

Acknowledgements

Special thanks to Nathan Henrie for his example of how to decode the Chrome cookies.