pycookiecheat-slack
Borrow cookies from your browser's authenticated session for use in Python
scripts.
Note: This project is an unofficial fork of
pycookiecheat that adds support
for cookies stored by the Slack desktop app (see
#39). It has been
published as a separate package (pycookiecheat-slack
) on PyPI to allow use
as a dependency. The module name remains pycookiecheat
for simplicity,
so installing one will overwrite the other.
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+.
python3 -m pip install pycookiecheat-slack
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/python -m pip install -e .[dev]
Usage
from pycookiecheat import chrome_cookies
import requests
url = 'http://example.com/fake.html'
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 or Slack, 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?
python -m pip install git+https://github.com/n8henrie/pycookiecheat@dev
Buy Me a Coffee
☕️
v0.5.2 :: 20230129
- Include changelog forgotten in 0.5.1!
v0.5.1 :: 20230129
- Added support for Slack app installed via Mac App Store, as well as direct download.
- Turns out the App Store app just stores the cookies via a different (sandboxed) path. Otherwise, all remains the same!
v0.5.0 :: 20220428
- Forked to add support for "Slack" alongside existing "Chrome" and "Chromium" options.
v0.4.7 :: 20210826
- No noteworthy API changes, hence the bugfix version bump, but some major
infrastructure and testing updates:
- Now uses GitHub Actions instead of Travis
- Now uses Playwright for testing, to actually open a Chromium instance and
use a real
Cookies
database - PEP517
- black
- Now requires python >= 3.7
- This is largely due to requiremets of Playwright:
https://pypi.org/project/playwright/, which is only a test dependency
- Because I can't test with <=3.6, I'm not listing it as compatible,
though it probably will still work
- Migrate to pyproject.toml
v0.4.6 :: 2019111
- Try to open Chrome database in read-only mode to avoid db locked errors (#29)
v0.4.5 :: 20191007
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 to PyCrypto
and hashlib
for easier
installation.
v0.3.4 :: 20170414
- Add support for new Ubuntu keyring / libsecret
0.3.0
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
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)
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.