Load cookies from any browser on any platform
cargo add rookie
use rookie::{self, Cookie};
fn main() {
let domains = Some(vec!["google.com"]); // set to None to get all
let cookies: Vec<Cookie> = rookie::chrome(domains).unwrap();
println!("{:?}", cookies);
}
There's Python bindings to rookie
pip install rookiepy
And the usage it similar to original
import rookiepy
cookies = rookiepy.firefox(["google.com"])
for cookie in cookies:
print(cookie['domain'], cookie['value'])
For Python
For Rust
Docs currenly available for Rust
at docs.rs/rookie
For Python
you can see examples folder, it's has very simple usage.
You can use rookie as a CLI
tool which will decrypt the cookies and print it as JSON
See cli folder
So far the following platforms are supported:
- Chrome:
Linux
,MacOS
,Windows
- Firefox:
Linux
,MacOS
,Windows
- LibreWolf:
Linux
,MacOS
,Windows
- Opera:
Linux
,MacOS
,Windows
- Opera GX:
MacOS
,Windows
- Edge: Linux,
MacOS
,Windows
- Internet Explorer:
Windows
- Chromium:
Linux
,MacOS
,Windows
- Brave:
Linux
,MacOS
,Windows
- Vivaldi:
Linux
,MacOS
,Windows
- Safari:
MacOS
You are welcome to contribute support for other browsers, or other platforms.
If you have a browser with which the library isn't working with, it may not have been added to the list of supported browsers configs. You can create a pull request (PR) or an issue with the path to the cookies file on your computer, and I will add it.
look at config.rs to see what configurations is needed.
This library may trigger a password prompt on Linux systems when accessing browser cookies.
Chrome-based browsers have a security feature that prevents external access to their cookies file. To bypass this security measure, we restart the browser seamlessly. As a result, session cookies are retrieved and can be used, but they will expire once the browser is closed again.
To use rookie on other platforms for instance on Android
,
Copy the Cookies file from the mobile phone, you can search using
find /data/data -type f -name Cookies
And pull the Cookies file you want and then execute CLI
on that file
./cli --path <Cookies path>
To import cookies from rookiepy into the browser,
you can execute short javascript code in the browser console
and construct the cookies manually,
but you must execute it while the specific domain it opened.
import rookiepy
from datetime import datetime, timezone, timedelta
def create_js_code(cookies):
expires = datetime.now(timezone.utc)
expires += timedelta(days=365) # one year expires
expires = expires.strftime('%a, %d %b %Y %H:%M:%S %Z')
js_code = ''
for cookie in cookies:
name = cookie.get("name", "")
value = cookie.get("value", "")
if name and value:
js_code += f'document.cookie = "{name}={value};expires={expires};"\n'
js_code += 'location.reload()\n'
return js_code
cookies = rookiepy.brave(["github.com"])
print(create_js_code(cookies))
In this example, I extracted the cookies from the Brave
browser from the domain 'github.com.'
I cleared all of my browser cookies, executed the code, copied the output.
Then, I opened github.com
in the browser and pasted it into the console. As a result, I was logged in into my account.
Browser | Linux | MacOS | Windows |
---|---|---|---|
Chrome | 1/10/23 | - | 1/10/23 |
Firefox | 1/10/23 | - | 1/10/23 |
LibreWolf | 1/10/23 | - | 1/10/23 |
Opera | 1/10/23 | - | 1/10/23 |
Opera GX | N/A | - | 1/10/23 |
Edge | 1/10/23 | - | 1/10/23 |
IE | N/A | N/A | 1/10/23 |
Chromium | 1/10/23 | - | 1/10/23 |
Brave | 1/10/23 | - | 1/10/23 |
Vivaldi | 1/10/23 | - | 1/10/23 |
Safari | N/A | 2/10/23 | N/A |