sqlite-cookie-parser 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +164 -0
- package/dist/bravoLinuxCookie.d.ts +5 -0
- package/dist/bravoLinuxCookie.js +12 -0
- package/dist/bravoLinuxCookie.js.map +1 -0
- package/dist/bravoMacCookie.d.ts +5 -0
- package/dist/bravoMacCookie.js +12 -0
- package/dist/bravoMacCookie.js.map +1 -0
- package/dist/bravoWindowsCookie.d.ts +5 -0
- package/dist/bravoWindowsCookie.js +12 -0
- package/dist/bravoWindowsCookie.js.map +1 -0
- package/dist/browsers/bravo.d.ts +5 -0
- package/dist/browsers/bravo.js +17 -0
- package/dist/browsers/bravo.js.map +1 -0
- package/dist/browsers/chrome.d.ts +5 -0
- package/dist/browsers/chrome.js +17 -0
- package/dist/browsers/chrome.js.map +1 -0
- package/dist/browsers/edge.d.ts +5 -0
- package/dist/browsers/edge.js +17 -0
- package/dist/browsers/edge.js.map +1 -0
- package/dist/browsers/firefoxCookie.d.ts +12 -0
- package/dist/browsers/firefoxCookie.js +8 -0
- package/dist/browsers/firefoxCookie.js.map +1 -0
- package/dist/browsers/opera.d.ts +5 -0
- package/dist/browsers/opera.js +17 -0
- package/dist/browsers/opera.js.map +1 -0
- package/dist/browsers/safariCookie.d.ts +12 -0
- package/dist/browsers/safariCookie.js +8 -0
- package/dist/browsers/safariCookie.js.map +1 -0
- package/dist/browsers/vivaldi.d.ts +5 -0
- package/dist/browsers/vivaldi.js +17 -0
- package/dist/browsers/vivaldi.js.map +1 -0
- package/dist/chromeLinuxCookie.d.ts +5 -0
- package/dist/chromeLinuxCookie.js +12 -0
- package/dist/chromeLinuxCookie.js.map +1 -0
- package/dist/chromeMacCookie.d.ts +5 -0
- package/dist/chromeMacCookie.js +12 -0
- package/dist/chromeMacCookie.js.map +1 -0
- package/dist/chromeWindowsCookie.d.ts +5 -0
- package/dist/chromeWindowsCookie.js +12 -0
- package/dist/chromeWindowsCookie.js.map +1 -0
- package/dist/chunk-2ILP4UJD.js +69 -0
- package/dist/chunk-2ILP4UJD.js.map +1 -0
- package/dist/chunk-4G6NLIPV.js +98 -0
- package/dist/chunk-4G6NLIPV.js.map +1 -0
- package/dist/chunk-5AEUDMIX.js +68 -0
- package/dist/chunk-5AEUDMIX.js.map +1 -0
- package/dist/chunk-5AJFPLWB.js +98 -0
- package/dist/chunk-5AJFPLWB.js.map +1 -0
- package/dist/chunk-6OYYWSIJ.js +58 -0
- package/dist/chunk-6OYYWSIJ.js.map +1 -0
- package/dist/chunk-A3YGBITD.js +221 -0
- package/dist/chunk-A3YGBITD.js.map +1 -0
- package/dist/chunk-AR5Q6KM4.js +37 -0
- package/dist/chunk-AR5Q6KM4.js.map +1 -0
- package/dist/chunk-D23AYBOE.js +35 -0
- package/dist/chunk-D23AYBOE.js.map +1 -0
- package/dist/chunk-E6CQFEXM.js +98 -0
- package/dist/chunk-E6CQFEXM.js.map +1 -0
- package/dist/chunk-EPL3V4O3.js +41 -0
- package/dist/chunk-EPL3V4O3.js.map +1 -0
- package/dist/chunk-EZBYP7NP.js +58 -0
- package/dist/chunk-EZBYP7NP.js.map +1 -0
- package/dist/chunk-GRIZYEBN.js +58 -0
- package/dist/chunk-GRIZYEBN.js.map +1 -0
- package/dist/chunk-HOGGS6QP.js +35 -0
- package/dist/chunk-HOGGS6QP.js.map +1 -0
- package/dist/chunk-IXZPT56H.js +35 -0
- package/dist/chunk-IXZPT56H.js.map +1 -0
- package/dist/chunk-J2UYSXFG.js +69 -0
- package/dist/chunk-J2UYSXFG.js.map +1 -0
- package/dist/chunk-JTBFDYPY.js +244 -0
- package/dist/chunk-JTBFDYPY.js.map +1 -0
- package/dist/chunk-LTLRZZW3.js +41 -0
- package/dist/chunk-LTLRZZW3.js.map +1 -0
- package/dist/chunk-MLKERL3L.js +98 -0
- package/dist/chunk-MLKERL3L.js.map +1 -0
- package/dist/chunk-NGBAATI3.js +35 -0
- package/dist/chunk-NGBAATI3.js.map +1 -0
- package/dist/chunk-PT5JK5UI.js +98 -0
- package/dist/chunk-PT5JK5UI.js.map +1 -0
- package/dist/chunk-Q2LDNBEA.js +35 -0
- package/dist/chunk-Q2LDNBEA.js.map +1 -0
- package/dist/chunk-QCW7AUP6.js +62 -0
- package/dist/chunk-QCW7AUP6.js.map +1 -0
- package/dist/chunk-SRZIPU62.js +69 -0
- package/dist/chunk-SRZIPU62.js.map +1 -0
- package/dist/chunk-SSXWHBKV.js +69 -0
- package/dist/chunk-SSXWHBKV.js.map +1 -0
- package/dist/chunk-TWA6YYS5.js +58 -0
- package/dist/chunk-TWA6YYS5.js.map +1 -0
- package/dist/chunk-TYLH6G3Z.js +52 -0
- package/dist/chunk-TYLH6G3Z.js.map +1 -0
- package/dist/chunk-U4G74MHA.js +69 -0
- package/dist/chunk-U4G74MHA.js.map +1 -0
- package/dist/chunk-UR6BPQ2T.js +103 -0
- package/dist/chunk-UR6BPQ2T.js.map +1 -0
- package/dist/chunk-XDL34EPI.js +35 -0
- package/dist/chunk-XDL34EPI.js.map +1 -0
- package/dist/chunk-YD3PNZMV.js +447 -0
- package/dist/chunk-YD3PNZMV.js.map +1 -0
- package/dist/common.d.ts +15 -0
- package/dist/common.js +9 -0
- package/dist/common.js.map +1 -0
- package/dist/edgeLinuxCookie.d.ts +5 -0
- package/dist/edgeLinuxCookie.js +12 -0
- package/dist/edgeLinuxCookie.js.map +1 -0
- package/dist/edgeMacCookie.d.ts +5 -0
- package/dist/edgeMacCookie.js +12 -0
- package/dist/edgeMacCookie.js.map +1 -0
- package/dist/edgeWindowsCookie.d.ts +5 -0
- package/dist/edgeWindowsCookie.js +12 -0
- package/dist/edgeWindowsCookie.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/operaLinuxCookie.d.ts +5 -0
- package/dist/operaLinuxCookie.js +12 -0
- package/dist/operaLinuxCookie.js.map +1 -0
- package/dist/operaMacCookie.d.ts +5 -0
- package/dist/operaMacCookie.js +12 -0
- package/dist/operaMacCookie.js.map +1 -0
- package/dist/operaWindowsCookie.d.ts +5 -0
- package/dist/operaWindowsCookie.js +12 -0
- package/dist/operaWindowsCookie.js.map +1 -0
- package/dist/publicApi.d.ts +20 -0
- package/dist/publicApi.js +38 -0
- package/dist/publicApi.js.map +1 -0
- package/dist/types.d.ts +98 -0
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -0
- package/dist/util/crypto.d.ts +9 -0
- package/dist/util/crypto.js +11 -0
- package/dist/util/crypto.js.map +1 -0
- package/dist/util/fileHelper.d.ts +4 -0
- package/dist/util/fileHelper.js +9 -0
- package/dist/util/fileHelper.js.map +1 -0
- package/dist/util/linuxKeyring.d.ts +11 -0
- package/dist/util/linuxKeyring.js +8 -0
- package/dist/util/linuxKeyring.js.map +1 -0
- package/dist/util/macKeyChain.d.ts +16 -0
- package/dist/util/macKeyChain.js +10 -0
- package/dist/util/macKeyChain.js.map +1 -0
- package/dist/util/processExecutor.d.ts +7 -0
- package/dist/util/processExecutor.js +7 -0
- package/dist/util/processExecutor.js.map +1 -0
- package/dist/util/windowsDpapi.d.ts +9 -0
- package/dist/util/windowsDpapi.js +8 -0
- package/dist/util/windowsDpapi.js.map +1 -0
- package/dist/vivaldiLinuxCookie.d.ts +5 -0
- package/dist/vivaldiLinuxCookie.js +12 -0
- package/dist/vivaldiLinuxCookie.js.map +1 -0
- package/dist/vivaldiMacCookie.d.ts +5 -0
- package/dist/vivaldiMacCookie.js +12 -0
- package/dist/vivaldiMacCookie.js.map +1 -0
- package/dist/vivaldiWindowsCookie.d.ts +5 -0
- package/dist/vivaldiWindowsCookie.js +12 -0
- package/dist/vivaldiWindowsCookie.js.map +1 -0
- package/package.json +56 -0
package/README.md
ADDED
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# sqlite-cookie-parser
|
|
2
|
+
|
|
3
|
+
Extract cookies from browser local storage and convert them to HTTP Cookie header format.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- Support for 7 browsers: Chrome, Edge, Firefox, Safari, Opera, Brave, Vivaldi
|
|
8
|
+
- Cross-platform: macOS, Windows, Linux
|
|
9
|
+
- Automatic cookie decryption (Chromium-based browsers)
|
|
10
|
+
- Filter by origin, cookie name, expiration, and partition key (CHIPS)
|
|
11
|
+
- Convert cookies to HTTP `Cookie` header string
|
|
12
|
+
- Full TypeScript support
|
|
13
|
+
|
|
14
|
+
## Installation
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm install sqlite-cookie-parser
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Quick Start
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
import { getCookiesFromBrowser, toCookieHeader } from 'sqlite-cookie-parser';
|
|
24
|
+
|
|
25
|
+
// Extract cookies from Chrome for specific origins
|
|
26
|
+
const { cookies, warnings } = await getCookiesFromBrowser({
|
|
27
|
+
browserName: 'chrome',
|
|
28
|
+
origins: ['https://github.com'],
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
// Convert to Cookie header string
|
|
32
|
+
const header = toCookieHeader(cookies, { removeDuplicates: true });
|
|
33
|
+
|
|
34
|
+
// Use in HTTP request
|
|
35
|
+
const response = await fetch('https://github.com/api/user', {
|
|
36
|
+
headers: { Cookie: header },
|
|
37
|
+
});
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## API
|
|
41
|
+
|
|
42
|
+
### `getCookiesFromBrowser(params)`
|
|
43
|
+
|
|
44
|
+
Extract cookies from a browser's local storage.
|
|
45
|
+
|
|
46
|
+
**Parameters** (`GetCookiesFromBrowserParams`):
|
|
47
|
+
|
|
48
|
+
| Field | Type | Required | Default | Description |
|
|
49
|
+
|-------|------|----------|---------|-------------|
|
|
50
|
+
| `browserName` | `BrowserName` | Yes | - | `'chrome'` \| `'edge'` \| `'firefox'` \| `'safari'` \| `'opera'` \| `'brave'` \| `'vivaldi'` |
|
|
51
|
+
| `origins` | `string[]` | Yes | - | Origins to extract cookies for (e.g. `['https://example.com']`) |
|
|
52
|
+
| `cookieNames` | `string[]` | No | all | Filter by cookie names |
|
|
53
|
+
| `profile` | `string` | No | `'Default'` | Browser profile name |
|
|
54
|
+
| `includeExpired` | `boolean` | No | `false` | Include expired cookies |
|
|
55
|
+
| `includePartitioned` | `boolean` | No | `false` | Include partitioned cookies (CHIPS) |
|
|
56
|
+
|
|
57
|
+
**Returns:** `Promise<GetCookiesResult>`
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
interface GetCookiesResult {
|
|
61
|
+
cookies: Cookie[];
|
|
62
|
+
warnings: string[];
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**Examples:**
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
// Get all cookies for a domain
|
|
70
|
+
const { cookies } = await getCookiesFromBrowser({
|
|
71
|
+
browserName: 'chrome',
|
|
72
|
+
origins: ['https://github.com'],
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
// Filter specific cookies from Firefox
|
|
76
|
+
const { cookies } = await getCookiesFromBrowser({
|
|
77
|
+
browserName: 'firefox',
|
|
78
|
+
origins: ['https://example.com'],
|
|
79
|
+
cookieNames: ['session_id', 'csrf_token'],
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
// Use a specific profile and include expired cookies
|
|
83
|
+
const { cookies } = await getCookiesFromBrowser({
|
|
84
|
+
browserName: 'edge',
|
|
85
|
+
origins: ['https://example.com'],
|
|
86
|
+
profile: 'Profile 1',
|
|
87
|
+
includeExpired: true,
|
|
88
|
+
});
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### `toCookieHeader(cookies, options)`
|
|
92
|
+
|
|
93
|
+
Convert a cookie array to an HTTP `Cookie` header string.
|
|
94
|
+
|
|
95
|
+
**Parameters:**
|
|
96
|
+
|
|
97
|
+
| Field | Type | Description |
|
|
98
|
+
|-------|------|-------------|
|
|
99
|
+
| `cookies` | `Cookie[]` | Array of cookie objects |
|
|
100
|
+
| `options.removeDuplicates` | `boolean` | Keep only the first occurrence of each cookie name |
|
|
101
|
+
| `options.sortByName` | `boolean` | Sort cookies alphabetically by name |
|
|
102
|
+
|
|
103
|
+
**Returns:** `string` (e.g. `"name1=value1; name2=value2"`)
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
const header = toCookieHeader(cookies, {
|
|
107
|
+
removeDuplicates: true,
|
|
108
|
+
sortByName: true,
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Cookie Object
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
interface Cookie {
|
|
116
|
+
name: string;
|
|
117
|
+
value: string | null; // null if decryption failed
|
|
118
|
+
domain: string;
|
|
119
|
+
path: string;
|
|
120
|
+
expires?: number; // ms since epoch, undefined for session cookies
|
|
121
|
+
secure: boolean;
|
|
122
|
+
httpOnly: boolean;
|
|
123
|
+
sameSite?: 'none' | 'lax' | 'strict';
|
|
124
|
+
partitionKey?: string; // CHIPS partition key
|
|
125
|
+
source: {
|
|
126
|
+
browser: BrowserName;
|
|
127
|
+
cookieFilePath: string;
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Supported Browsers & Platforms
|
|
133
|
+
|
|
134
|
+
| Browser | macOS | Windows | Linux |
|
|
135
|
+
|---------|-------|---------|-------|
|
|
136
|
+
| Chrome | Yes | Yes | Yes |
|
|
137
|
+
| Edge | Yes | Yes | Yes |
|
|
138
|
+
| Firefox | Yes | Yes | Yes |
|
|
139
|
+
| Safari | Yes | - | - |
|
|
140
|
+
| Opera | Yes | Yes | Yes |
|
|
141
|
+
| Brave | Yes | Yes | Yes |
|
|
142
|
+
| Vivaldi | Yes | Yes | Yes |
|
|
143
|
+
|
|
144
|
+
## Cookie Decryption
|
|
145
|
+
|
|
146
|
+
Chromium-based browsers (Chrome, Edge, Opera, Brave, Vivaldi) encrypt cookie values. This library handles decryption automatically:
|
|
147
|
+
|
|
148
|
+
- **macOS**: Retrieves encryption keys from the macOS Keychain
|
|
149
|
+
- **Windows**: Decrypts using DPAPI via the browser's Local State file
|
|
150
|
+
- **Linux**: Retrieves keys from the system keyring (`secret-tool`)
|
|
151
|
+
|
|
152
|
+
Firefox and Safari do not encrypt cookie values.
|
|
153
|
+
|
|
154
|
+
If decryption fails, the cookie's `value` will be `null`.
|
|
155
|
+
|
|
156
|
+
## Notes
|
|
157
|
+
|
|
158
|
+
- The browser should be closed while reading cookies, otherwise the database may be locked
|
|
159
|
+
- Requires read permission to browser profile directories
|
|
160
|
+
- Firefox session cookies are read from the session recovery file (`recovery.jsonlz4`)
|
|
161
|
+
|
|
162
|
+
## License
|
|
163
|
+
|
|
164
|
+
MIT
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { GetCookiesOptions, GetCookiesResult } from './types.js';
|
|
2
|
+
|
|
3
|
+
declare function getCookiesFromBraveLinuxSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
|
|
4
|
+
|
|
5
|
+
export { getCookiesFromBraveLinuxSqlite };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromBraveLinuxSqlite
|
|
3
|
+
} from "./chunk-EZBYP7NP.js";
|
|
4
|
+
import "./chunk-EPL3V4O3.js";
|
|
5
|
+
import "./chunk-UR6BPQ2T.js";
|
|
6
|
+
import "./chunk-TYLH6G3Z.js";
|
|
7
|
+
import "./chunk-LTLRZZW3.js";
|
|
8
|
+
import "./chunk-JTBFDYPY.js";
|
|
9
|
+
export {
|
|
10
|
+
getCookiesFromBraveLinuxSqlite
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=bravoLinuxCookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromBraveMacSqlite
|
|
3
|
+
} from "./chunk-SSXWHBKV.js";
|
|
4
|
+
import "./chunk-Q2LDNBEA.js";
|
|
5
|
+
import "./chunk-UR6BPQ2T.js";
|
|
6
|
+
import "./chunk-TYLH6G3Z.js";
|
|
7
|
+
import "./chunk-LTLRZZW3.js";
|
|
8
|
+
import "./chunk-JTBFDYPY.js";
|
|
9
|
+
export {
|
|
10
|
+
getCookiesFromBraveMacSqlite
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=bravoMacCookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { GetCookiesOptions, GetCookiesResult } from './types.js';
|
|
2
|
+
|
|
3
|
+
declare function getCookiesFromBraveWindowsSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
|
|
4
|
+
|
|
5
|
+
export { getCookiesFromBraveWindowsSqlite };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromBraveWindowsSqlite
|
|
3
|
+
} from "./chunk-PT5JK5UI.js";
|
|
4
|
+
import "./chunk-AR5Q6KM4.js";
|
|
5
|
+
import "./chunk-UR6BPQ2T.js";
|
|
6
|
+
import "./chunk-TYLH6G3Z.js";
|
|
7
|
+
import "./chunk-LTLRZZW3.js";
|
|
8
|
+
import "./chunk-JTBFDYPY.js";
|
|
9
|
+
export {
|
|
10
|
+
getCookiesFromBraveWindowsSqlite
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=bravoWindowsCookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromBrave
|
|
3
|
+
} from "../chunk-XDL34EPI.js";
|
|
4
|
+
import "../chunk-EZBYP7NP.js";
|
|
5
|
+
import "../chunk-SSXWHBKV.js";
|
|
6
|
+
import "../chunk-PT5JK5UI.js";
|
|
7
|
+
import "../chunk-Q2LDNBEA.js";
|
|
8
|
+
import "../chunk-AR5Q6KM4.js";
|
|
9
|
+
import "../chunk-EPL3V4O3.js";
|
|
10
|
+
import "../chunk-UR6BPQ2T.js";
|
|
11
|
+
import "../chunk-TYLH6G3Z.js";
|
|
12
|
+
import "../chunk-LTLRZZW3.js";
|
|
13
|
+
import "../chunk-JTBFDYPY.js";
|
|
14
|
+
export {
|
|
15
|
+
getCookiesFromBrave
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=bravo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromChrome
|
|
3
|
+
} from "../chunk-NGBAATI3.js";
|
|
4
|
+
import "../chunk-6OYYWSIJ.js";
|
|
5
|
+
import "../chunk-U4G74MHA.js";
|
|
6
|
+
import "../chunk-Q2LDNBEA.js";
|
|
7
|
+
import "../chunk-MLKERL3L.js";
|
|
8
|
+
import "../chunk-AR5Q6KM4.js";
|
|
9
|
+
import "../chunk-EPL3V4O3.js";
|
|
10
|
+
import "../chunk-UR6BPQ2T.js";
|
|
11
|
+
import "../chunk-TYLH6G3Z.js";
|
|
12
|
+
import "../chunk-LTLRZZW3.js";
|
|
13
|
+
import "../chunk-JTBFDYPY.js";
|
|
14
|
+
export {
|
|
15
|
+
getCookiesFromChrome
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=chrome.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromEdge
|
|
3
|
+
} from "../chunk-D23AYBOE.js";
|
|
4
|
+
import "../chunk-SRZIPU62.js";
|
|
5
|
+
import "../chunk-E6CQFEXM.js";
|
|
6
|
+
import "../chunk-Q2LDNBEA.js";
|
|
7
|
+
import "../chunk-AR5Q6KM4.js";
|
|
8
|
+
import "../chunk-QCW7AUP6.js";
|
|
9
|
+
import "../chunk-EPL3V4O3.js";
|
|
10
|
+
import "../chunk-UR6BPQ2T.js";
|
|
11
|
+
import "../chunk-TYLH6G3Z.js";
|
|
12
|
+
import "../chunk-LTLRZZW3.js";
|
|
13
|
+
import "../chunk-JTBFDYPY.js";
|
|
14
|
+
export {
|
|
15
|
+
getCookiesFromEdge
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=edge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GetCookiesOptions, GetCookiesResult } from '../types.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Get cookies from Firefox (both persistent cookies from SQLite and session cookies from sessionstore)
|
|
5
|
+
* @param options - Options for getting cookies
|
|
6
|
+
* @param origins - List of origins to filter cookies by
|
|
7
|
+
* @param cookieNames - Set of cookie names to filter (null for all)
|
|
8
|
+
* @returns Promise resolving to cookies and warnings
|
|
9
|
+
*/
|
|
10
|
+
declare function getCookiesFromFirefoxSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
|
|
11
|
+
|
|
12
|
+
export { getCookiesFromFirefoxSqlite };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromOpera
|
|
3
|
+
} from "../chunk-HOGGS6QP.js";
|
|
4
|
+
import "../chunk-TWA6YYS5.js";
|
|
5
|
+
import "../chunk-2ILP4UJD.js";
|
|
6
|
+
import "../chunk-5AJFPLWB.js";
|
|
7
|
+
import "../chunk-Q2LDNBEA.js";
|
|
8
|
+
import "../chunk-AR5Q6KM4.js";
|
|
9
|
+
import "../chunk-EPL3V4O3.js";
|
|
10
|
+
import "../chunk-UR6BPQ2T.js";
|
|
11
|
+
import "../chunk-TYLH6G3Z.js";
|
|
12
|
+
import "../chunk-LTLRZZW3.js";
|
|
13
|
+
import "../chunk-JTBFDYPY.js";
|
|
14
|
+
export {
|
|
15
|
+
getCookiesFromOpera
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=opera.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { GetCookiesOptions, GetCookiesResult } from '../types.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Get cookies from Safari's Cookies.binarycookies file
|
|
5
|
+
* @param options - Options for getting cookies
|
|
6
|
+
* @param origins - List of origins to filter cookies by
|
|
7
|
+
* @param cookieNames - Set of cookie names to filter (null for all)
|
|
8
|
+
* @returns Promise resolving to cookies and warnings
|
|
9
|
+
*/
|
|
10
|
+
declare function getCookiesFromSafari(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
|
|
11
|
+
|
|
12
|
+
export { getCookiesFromSafari };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromVivaldi
|
|
3
|
+
} from "../chunk-IXZPT56H.js";
|
|
4
|
+
import "../chunk-GRIZYEBN.js";
|
|
5
|
+
import "../chunk-J2UYSXFG.js";
|
|
6
|
+
import "../chunk-4G6NLIPV.js";
|
|
7
|
+
import "../chunk-Q2LDNBEA.js";
|
|
8
|
+
import "../chunk-AR5Q6KM4.js";
|
|
9
|
+
import "../chunk-EPL3V4O3.js";
|
|
10
|
+
import "../chunk-UR6BPQ2T.js";
|
|
11
|
+
import "../chunk-TYLH6G3Z.js";
|
|
12
|
+
import "../chunk-LTLRZZW3.js";
|
|
13
|
+
import "../chunk-JTBFDYPY.js";
|
|
14
|
+
export {
|
|
15
|
+
getCookiesFromVivaldi
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=vivaldi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { GetCookiesOptions, GetCookiesResult } from './types.js';
|
|
2
|
+
|
|
3
|
+
declare function getCookiesFromChromeLinuxSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
|
|
4
|
+
|
|
5
|
+
export { getCookiesFromChromeLinuxSqlite };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromChromeLinuxSqlite
|
|
3
|
+
} from "./chunk-6OYYWSIJ.js";
|
|
4
|
+
import "./chunk-EPL3V4O3.js";
|
|
5
|
+
import "./chunk-UR6BPQ2T.js";
|
|
6
|
+
import "./chunk-TYLH6G3Z.js";
|
|
7
|
+
import "./chunk-LTLRZZW3.js";
|
|
8
|
+
import "./chunk-JTBFDYPY.js";
|
|
9
|
+
export {
|
|
10
|
+
getCookiesFromChromeLinuxSqlite
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=chromeLinuxCookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromChromeSqlite
|
|
3
|
+
} from "./chunk-U4G74MHA.js";
|
|
4
|
+
import "./chunk-Q2LDNBEA.js";
|
|
5
|
+
import "./chunk-UR6BPQ2T.js";
|
|
6
|
+
import "./chunk-TYLH6G3Z.js";
|
|
7
|
+
import "./chunk-LTLRZZW3.js";
|
|
8
|
+
import "./chunk-JTBFDYPY.js";
|
|
9
|
+
export {
|
|
10
|
+
getCookiesFromChromeSqlite
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=chromeMacCookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { GetCookiesOptions, GetCookiesResult } from './types.js';
|
|
2
|
+
|
|
3
|
+
declare function getCookiesFromChromeWindowsSqlite(options: GetCookiesOptions, origins: string[], cookieNames: Set<string> | null): Promise<GetCookiesResult>;
|
|
4
|
+
|
|
5
|
+
export { getCookiesFromChromeWindowsSqlite };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCookiesFromChromeWindowsSqlite
|
|
3
|
+
} from "./chunk-MLKERL3L.js";
|
|
4
|
+
import "./chunk-AR5Q6KM4.js";
|
|
5
|
+
import "./chunk-UR6BPQ2T.js";
|
|
6
|
+
import "./chunk-TYLH6G3Z.js";
|
|
7
|
+
import "./chunk-LTLRZZW3.js";
|
|
8
|
+
import "./chunk-JTBFDYPY.js";
|
|
9
|
+
export {
|
|
10
|
+
getCookiesFromChromeWindowsSqlite
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=chromeWindowsCookie.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import {
|
|
2
|
+
findFirstMacKeyChainPassword
|
|
3
|
+
} from "./chunk-Q2LDNBEA.js";
|
|
4
|
+
import {
|
|
5
|
+
decryptChomiumAES128CBCCookieValue,
|
|
6
|
+
getAES128CBCKey
|
|
7
|
+
} from "./chunk-UR6BPQ2T.js";
|
|
8
|
+
import {
|
|
9
|
+
resolveBrowserDefaultorSpecificDBPath
|
|
10
|
+
} from "./chunk-TYLH6G3Z.js";
|
|
11
|
+
import {
|
|
12
|
+
getCookiesFromChromiumSqliteDB
|
|
13
|
+
} from "./chunk-JTBFDYPY.js";
|
|
14
|
+
|
|
15
|
+
// src/operaMacCookie.ts
|
|
16
|
+
import { homedir } from "os";
|
|
17
|
+
async function getCookiesFromOperaMacSqlite(options, origins, cookieNames) {
|
|
18
|
+
const sqlDBPath = resolveOperaMacDBPath(options.profile);
|
|
19
|
+
if (!sqlDBPath) {
|
|
20
|
+
return {
|
|
21
|
+
cookies: [],
|
|
22
|
+
warnings: ["Could not resolve Opera cookie database path."]
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const warnings = [];
|
|
26
|
+
const passwordResult = await findFirstMacKeyChainPassword(
|
|
27
|
+
["Opera Safe Storage"],
|
|
28
|
+
"Opera",
|
|
29
|
+
5e3,
|
|
30
|
+
"Opera Safe Storage"
|
|
31
|
+
);
|
|
32
|
+
if (!passwordResult.success) {
|
|
33
|
+
warnings.push(`Failed to get Opera decryption key: ${passwordResult.error}`);
|
|
34
|
+
return { cookies: [], warnings };
|
|
35
|
+
}
|
|
36
|
+
const operaPassword = passwordResult.password.trim();
|
|
37
|
+
if (!operaPassword) {
|
|
38
|
+
warnings.push("Opera decryption key is empty.");
|
|
39
|
+
return { cookies: [], warnings };
|
|
40
|
+
}
|
|
41
|
+
const key = getAES128CBCKey(operaPassword, 1003);
|
|
42
|
+
const decryptFn = (encryptedValue) => {
|
|
43
|
+
return decryptChomiumAES128CBCCookieValue(encryptedValue, [key]);
|
|
44
|
+
};
|
|
45
|
+
const fileOptions = {
|
|
46
|
+
cookieFilePath: sqlDBPath
|
|
47
|
+
};
|
|
48
|
+
fileOptions.profile = options.profile;
|
|
49
|
+
fileOptions.includeExpired = options.includeExpired;
|
|
50
|
+
const { cookies, warnings: dbWarnings } = await getCookiesFromChromiumSqliteDB(
|
|
51
|
+
fileOptions,
|
|
52
|
+
origins,
|
|
53
|
+
cookieNames,
|
|
54
|
+
"opera",
|
|
55
|
+
decryptFn
|
|
56
|
+
);
|
|
57
|
+
warnings.push(...dbWarnings);
|
|
58
|
+
return { cookies, warnings };
|
|
59
|
+
}
|
|
60
|
+
function resolveOperaMacDBPath(profile) {
|
|
61
|
+
const homeDir = homedir();
|
|
62
|
+
const rootPath = `${homeDir}/Library/Application Support/com.operasoftware.Opera`;
|
|
63
|
+
return resolveBrowserDefaultorSpecificDBPath([rootPath], profile);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export {
|
|
67
|
+
getCookiesFromOperaMacSqlite
|
|
68
|
+
};
|
|
69
|
+
//# sourceMappingURL=chunk-2ILP4UJD.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/operaMacCookie.ts"],"sourcesContent":["import { homedir } from 'os';\nimport { resolveBrowserDefaultorSpecificDBPath } from './util/fileHelper';\nimport { GetCookiesOptions, GetCookiesResult, GetCookiesFromFileOptions } from './types';\nimport { findFirstMacKeyChainPassword } from './util/macKeyChain';\nimport { getAES128CBCKey, decryptChomiumAES128CBCCookieValue } from './util/crypto';\nimport { getCookiesFromChromiumSqliteDB } from './common';\n\nexport async function getCookiesFromOperaMacSqlite(\n options: GetCookiesOptions,\n origins: string[],\n cookieNames: Set<string> | null\n): Promise<GetCookiesResult> {\n const sqlDBPath = resolveOperaMacDBPath(options.profile);\n if (!sqlDBPath) {\n return {\n cookies: [],\n warnings: ['Could not resolve Opera cookie database path.'],\n };\n }\n\n const warnings: string[] = [];\n\n const passwordResult = await findFirstMacKeyChainPassword(\n ['Opera Safe Storage'],\n 'Opera',\n 5000,\n 'Opera Safe Storage'\n );\n if (!passwordResult.success) {\n warnings.push(`Failed to get Opera decryption key: ${passwordResult.error}`);\n return { cookies: [], warnings };\n }\n\n const operaPassword = passwordResult.password.trim();\n if (!operaPassword) {\n warnings.push('Opera decryption key is empty.');\n return { cookies: [], warnings };\n }\n\n // iterations is 1003 for macOS Opera (same as Chrome)\n const key = getAES128CBCKey(operaPassword, 1003);\n const decryptFn = (encryptedValue: Uint8Array): string | null => {\n return decryptChomiumAES128CBCCookieValue(encryptedValue, [key]);\n };\n\n const fileOptions: GetCookiesFromFileOptions = {\n cookieFilePath: sqlDBPath,\n };\n fileOptions.profile = options.profile;\n fileOptions.includeExpired = options.includeExpired;\n\n const { cookies, warnings: dbWarnings } = await getCookiesFromChromiumSqliteDB(\n fileOptions,\n origins,\n cookieNames,\n 'opera',\n decryptFn\n );\n warnings.push(...dbWarnings);\n\n return { cookies, warnings };\n}\n\nfunction resolveOperaMacDBPath(profile?: string): string | null {\n const homeDir = homedir();\n const rootPath = `${homeDir}/Library/Application Support/com.operasoftware.Opera`;\n return resolveBrowserDefaultorSpecificDBPath([rootPath], profile);\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA,SAAS,eAAe;AAOxB,eAAsB,6BACpB,SACA,SACA,aAC2B;AAC3B,QAAM,YAAY,sBAAsB,QAAQ,OAAO;AACvD,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,MACL,SAAS,CAAC;AAAA,MACV,UAAU,CAAC,+CAA+C;AAAA,IAC5D;AAAA,EACF;AAEA,QAAM,WAAqB,CAAC;AAE5B,QAAM,iBAAiB,MAAM;AAAA,IAC3B,CAAC,oBAAoB;AAAA,IACrB;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,MAAI,CAAC,eAAe,SAAS;AAC3B,aAAS,KAAK,uCAAuC,eAAe,KAAK,EAAE;AAC3E,WAAO,EAAE,SAAS,CAAC,GAAG,SAAS;AAAA,EACjC;AAEA,QAAM,gBAAgB,eAAe,SAAS,KAAK;AACnD,MAAI,CAAC,eAAe;AAClB,aAAS,KAAK,gCAAgC;AAC9C,WAAO,EAAE,SAAS,CAAC,GAAG,SAAS;AAAA,EACjC;AAGA,QAAM,MAAM,gBAAgB,eAAe,IAAI;AAC/C,QAAM,YAAY,CAAC,mBAA8C;AAC/D,WAAO,mCAAmC,gBAAgB,CAAC,GAAG,CAAC;AAAA,EACjE;AAEA,QAAM,cAAyC;AAAA,IAC7C,gBAAgB;AAAA,EAClB;AACA,cAAY,UAAU,QAAQ;AAC9B,cAAY,iBAAiB,QAAQ;AAErC,QAAM,EAAE,SAAS,UAAU,WAAW,IAAI,MAAM;AAAA,IAC9C;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACA,WAAS,KAAK,GAAG,UAAU;AAE3B,SAAO,EAAE,SAAS,SAAS;AAC7B;AAEA,SAAS,sBAAsB,SAAiC;AAC9D,QAAM,UAAU,QAAQ;AACxB,QAAM,WAAW,GAAG,OAAO;AAC3B,SAAO,sCAAsC,CAAC,QAAQ,GAAG,OAAO;AAClE;","names":[]}
|