Borrow cookies from your browser's authenticated session foruse in Python scripts.
Project description
pycookiecheat
Borrow cookies from your browser's authenticated session for use in Python scripts.
- Free software: MIT
- Documentation: http://n8h.me/HufI1w
Installation
NB: Use pip
and python
instead of pip3
and python3
if you're still
on Python 2 and using pycookiecheat < v0.4.0. pycookiecheat >= v0.4.0 requires
Python 3.5+, and may soon go to 3.6+.
pip3 install pycookiecheat
Installation notes regarding alternative keyrings on Linux
See #12. Chrome is now
using a few different keyrings to store your Chrome Safe Storage
password,
instead of a hard-coded password. Pycookiecheat doesn't work with most of these
so far, and to be honest my enthusiasm for adding support for ones I don't use
is limited. However, users have contributed code that seems to work with some
of the recent Ubuntu desktops. To get it working, you may have to sudo apt-get install libsecret-1-dev python-gi python3-gi
, and if you're installing into a
virtualenv (highly recommended), you need to use the --system-site-packages
flag to get access to the necessary libraries.
Alternatively, some users have suggested running Chrome with the
--password-store=basic
or --use-mock-keychain
flags.
Development Setup
git clone https://github.com/n8henrie/pycookiecheat.git
cd pycookiecheat
python3 -m venv venv
venv/bin/pip install -e .[dev]
Usage
from pycookiecheat import chrome_cookies
import requests
url = 'http://example.com/fake.html'
# Uses Chrome's default cookies filepath by default
cookies = chrome_cookies(url)
r = requests.get(url, cookies=cookies)
Use the cookie_file
keyword-argument to specify a different filepath for the
cookies-file: chrome_cookies(url, cookie_file='/abspath/to/cookies')
Keep in mind that pycookiecheat defaults to looking for cookies for
Chromium, not Google Chrome, so if you're using the latter, you'll need to
manually specify something like
"/home/username/.config/google-chrome/Default/Cookies"
as your cookie_file
.
Features
- Returns decrypted cookies from Google Chrome on OSX or Linux.
- Optionally outputs cookies to file (thanks to Muntashir Al-Islam!)
FAQ / Troubleshooting
How about Windows?
I don't use Windows or have a PC, so I won't be adding support myself. Feel free to make a PR :)
I get an installation error with the cryptography
module on OS X
(pycookiecheat <v0.4.0)
If you're getting this
error
and using Homebrew, then you need to follow the instructions for Building
cryptography on OS
X
and export LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include"
and try again.
I get an installation error with the cryptography
module on Linux
Please check the official cryptography docs. On some systems (e.g. Ubuntu), you
may need to do something like sudo apt-get install build-essential libssl-dev libffi-dev python-dev
prior to installing with pip
.
How can I use pycookiecheat on KDE-based Linux distros?
On KDE, Chrome defaults to using KDE's own keyring, KWallet. For pycookiecheat to support KWallet the dbus-python
package must be installed.
How do I install the dev branch with pip?
pip install git+https://github.com/n8henrie/pycookiecheat@dev
Buy Me a Coffee
Changelog
v0.4.5 :: 20191007
- db6ac6d Go back to using cryptography due to https://www.cvedetails.com/cve/CVE-2013-7459/
- c70ad51 Allow users to override password (thanks @alairock)
v0.4.4 :: 20180706
- Optionally outputs cookies to a file compatible with cURL (thanks to Muntashir Al-Islam!)
v0.4.3 :: 20170627
- Consistently use Chrome as default across platforms, allow user to specify Chromium as desired (thanks @jtbraun)
v0.4.0 :: 20170504
- Remove compatibility for Python <3.5
- Add type hints
- Refactor for smaller functions
- Expand docstrings
- Revert from
cryptography
back toPyCrypto
andhashlib
for easier installation.
v0.3.4 :: 20170414
- Add support for new Ubuntu keyring / libsecret
- See https://github.com/n8henrie/pycookiecheat/issues/12 for details
- Many thanks to @stat1c1c3au and @trideceth12 for contributions
0.3.0
- Use
cryptography
instead ofpycrypto
(thanks to Taik!)- Seems to be significantly faster
- Works with PyPy >= 2.6.0 (no support for PyPy3 yet)
0.2.0
- Fix domain and subdomain matching
- Make SQL query more secure by avoiding string formatting
- Many thanks to Brandon Rhodes for 24c4234 !
0.1.10
- Read version to separate file so it can be imported in setup.py
- Bugfix for python2 on linux
0.1.9
- Bugfix for python2 on linux
0.1.8
- Python2 support (thanks dani14-96)
0.1.7
- Configurable cookies file (thanks ankostis)
0.1.6
- OSError instead of Exception for wrong OS.
- Moved testing requirements to tox and travis-ci files.
0.1.5
- Updated to work better with PyPI's lack of markdown support
- Working on tox and travis-ci integration
- Added a few basic tests that should pass if one has Chrome installed and has visited my site (n8henrie.com)
- Added sys.exit(0) if cookie_file not found so tests pass on travis-ci.
0.1.0 (2015-02-25)
- First release on PyPI.
Prior changelog from Gist
- 20150221 v2.0.1: Now should find cookies for base domain and all subs.
- 20140518 v2.0: Now works with Chrome's new encrypted cookies.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pycookiecheat-0.4.5-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1627b520158a8f5298476aa3fa8c79d0872141dd658cd236b7b83981090a681 |
|
MD5 | cc34731504ff6b0e65c1fb0d415bd762 |
|
BLAKE2b-256 | 12c7e2a056cb48132fffadce87c6a8718b3fa7de9c6715e855c424fefaec9272 |