Skip to content

igorank/rookie

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rookie

Load cookies from any browser on any platform

Install

cargo add rookie

Usage

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);
}

Bindings

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'])

Examples

For Python

For Rust

Docs

Docs currenly available for Rust at docs.rs/rookie
For Python you can see examples folder, it's has very simple usage.

CLI

You can use rookie as a CLI tool which will decrypt the cookies and print it as JSON
See cli folder

Contribute

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.

Support new browsers

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.

Gotchas

Password prompt with kde-wallet on linux

This library may trigger a password prompt on Linux systems when accessing browser cookies.

Session Cookies Retrieval

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.

Using on Unsupported platforms

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>

Manually import website cookies

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.

Testing Dates (dd/mm/yy)

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

About

Load cookies from your web browsers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 97.8%
  • Python 2.2%