Borrow cookies from your browser's authenticated session for use in Python scripts.
Project description
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.
- 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+.
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.gitcd pycookiecheatpython3 -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'
# 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 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
Changelog
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.
- See https://github.com/n8henrie/pycookiecheat/issues/39 for details
- Fork by
@hraftery. - Publishing as separate package (
pycookiecheat-slack) on PyPI so it can be used as a dependency immediately.
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
Cookiesdatabase - 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
- 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
cryptographyback toPyCryptoandhashlibfor 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
cryptographyinstead 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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters