Coder Social home page Coder Social logo

ginkooo / browsercookie-rs Goto Github PK

View Code? Open in Web Editor NEW
12.0 3.0 14.0 30 KB

A rust crate useful for extracting cookies from browsers. Inspired from browsercookie python library

Home Page: https://docs.rs/browsercookie-rs

Rust 100.00%
rust rust-library browser-cookie hacktoberfest

browsercookie-rs's Introduction

browsercookie-rs

A rust crate useful for extracting cookies from browsers. Inspired from browsercookie python library.

Library

Usage

Using the library is quite simple

// Cargo.toml
[dependencies]
browsercookie-rs = { git="https://github.com/Ginkooo/browsercookie-rs.git", branch="main" }
use browsercookie::{CookieFinder, Browser, Attribute};
use regex::Regex;

let mut cookie_jar = CookieFinder::builder()
    .with_regexp(Regex::new("google.com").unwrap(), Attribute::Domain)
    .with_browser(Browser::Firefox)
    .build()
    .find()
    .await;

let cookie = cookie_jar.get("some_cookie_name").unwrap();

println!("Cookie header string: Cookie: {}", cookie);

You can omit the .with_ calls to get all cookies from all browsers.

A better example should be present in browsercookies.

Binary

The same crate should also give you a binary browsercookies, which should be usable from your favorite shell for crudely using frontend APIs for simple tooling.

browsercookies --domain jira

Install

cargo install -f browsercookie-rs

Feature Matrix

TargetOS Firefox Chrome
Linux
macOS
Windows

Contributions

Contributions are very welcome. The easiest way to contribute is to look at the Python library browser_cookie3, try to mimic the behavior that this library lacks, and submit a pull request. Make sure to format it, use Clippy, and include some tests.

browsercookie-rs's People

Contributors

flabbergastedbd avatar ginkooo avatar johnscience avatar playmer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

browsercookie-rs's Issues

InvalidCookieStore("Firefox invalid cookie store")

Hi there, I'm using Firefox Extended Support Release (ESR) version 102.7.0esr (64-bit) on the macOS 12.6.3 and I am running into the following failure when using the browsercookie CLI:

❯ RUST_BACKTRACE=1 RUST_BACKTRACE=full browsercookies --domain mail.google.com
thread 'main' panicked at 'Failed to get cookies from firefox: InvalidCookieStore("Firefox invalid cookie store")', /Users/aljohri/.cargo/registry/src/github.com-1ecc6299db9ec823/browsercookie-rs-0.1.1/src/bin.rs:57:62
stack backtrace:
   0:        0x102631ff8 - std::backtrace_rs::backtrace::libunwind::trace::hbe97f4303076f99a
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:        0x102631ff8 - std::backtrace_rs::backtrace::trace_unsynchronized::hb462a91ac605b16b
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:        0x102631ff8 - std::sys_common::backtrace::_print_fmt::h555c176cf2344151
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:65:5
   3:        0x102631ff8 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::he84d5e26d26c914d
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:44:22
   4:        0x102648dec - core::fmt::write::h07c7e4739f78f3b0
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/fmt/mod.rs:1209:17
   5:        0x10262fa00 - std::io::Write::write_fmt::h4a3c5f094ffc65e8
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/io/mod.rs:1682:15
   6:        0x102631e0c - std::sys_common::backtrace::_print::h03a1c9ac6001091a
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:47:5
   7:        0x102631e0c - std::sys_common::backtrace::print::h6fc2cc8be2392a8e
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:34:9
   8:        0x102633460 - std::panicking::default_hook::{{closure}}::h3bb44ba6ff437e23
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:267:22
   9:        0x1026331b8 - std::panicking::default_hook::h92c6668a1a98ae8c
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:286:9
  10:        0x102633a9c - std::panicking::rust_panic_with_hook::h9b8acc949e1fb807
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:688:13
  11:        0x1026338ac - std::panicking::begin_panic_handler::{{closure}}::hfc38b2cc56e3623c
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:579:13
  12:        0x102632460 - std::sys_common::backtrace::__rust_end_short_backtrace::hbafd151207fc448f
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/sys_common/backtrace.rs:137:18
  13:        0x102633600 - rust_begin_unwind
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:575:5
  14:        0x1026562fc - core::panicking::panic_fmt::h8c7f3d540a75578f
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/panicking.rs:65:14
  15:        0x1026564e4 - core::result::unwrap_failed::h666d2c7e0d130ea0
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/result.rs:1791:5
  16:        0x102573d70 - browsercookies::main::h8c69a1ff7e5d486b
  17:        0x1025720a0 - std::sys_common::backtrace::__rust_begin_short_backtrace::hd135af0959bfd228
  18:        0x102572048 - std::rt::lang_start::{{closure}}::h2b47ec0e2a399802
  19:        0x10262c188 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::ha4b10a239e2af884
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/core/src/ops/function.rs:286:13
  20:        0x10262c188 - std::panicking::try::do_call::h6b4bcb7d3635e86a
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:483:40
  21:        0x10262c188 - std::panicking::try::h579c8cca81ff0f69
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:447:19
  22:        0x10262c188 - std::panic::catch_unwind::h4a997c12755a6e33
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panic.rs:137:14
  23:        0x10262c188 - std::rt::lang_start_internal::{{closure}}::hf20057b44f57f87c
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/rt.rs:148:48
  24:        0x10262c188 - std::panicking::try::do_call::hdfca34da16d8863f
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:483:40
  25:        0x10262c188 - std::panicking::try::h4f4022e500de0807
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panicking.rs:447:19
  26:        0x10262c188 - std::panic::catch_unwind::h62721286166676e8
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/panic.rs:137:14
  27:        0x10262c188 - std::rt::lang_start_internal::h659a783147314d97
                               at /rustc/69f9c33d71c871fc16ac445211281c6e7a340943/library/std/src/rt.rs:148:20
  28:        0x102574250 - _main

I checked that the profiles.ini was able to be found:

https://github.com/tunnelshade/browsercookie-rs/blob/99090c02d105bfafea41ee497f6abe4b1e891a10/src/firefox.rs#L40-L49

❯ cat "$HOME/Library/Application Support/Firefox/profiles.ini"
[Profile1]
Name=default
IsRelative=1
Path=Profiles/m4favf62.default
Default=1

[Profile0]
Name=default-esr
IsRelative=1
Path=Profiles/024qjct5.default-esr

[General]
StartWithLastProfile=1
Version=2

[Install2656FF1E876E9973]
Default=Profiles/024qjct5.default-esr
Locked=1
❯ ls -lha "$HOME/Library/Application Support/Firefox/Profiles"
Permissions Size User    Date Modified Name
drwx------@    - aljohri 28 Jan 20:08  024qjct5.default-esr
drwx------@    - aljohri 19 Dec  2021  m4favf62.default

And I checked that the python version seems to work via get-browser-cookies and my Firefox installation:

❯ get-browser-cookies --browser firefox --domain mail.google.com | jq -s '. | length'
6

I'm not sure if its having trouble parsing the profiles.ini or getting the default profile location once it has parsed?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.