@rester159/blacktip 0.2.0 → 0.4.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/CHANGELOG.md +190 -0
- package/README.md +21 -0
- package/dist/behavioral/parsers.d.ts +89 -0
- package/dist/behavioral/parsers.d.ts.map +1 -0
- package/dist/behavioral/parsers.js +223 -0
- package/dist/behavioral/parsers.js.map +1 -0
- package/dist/blacktip.d.ts +34 -1
- package/dist/blacktip.d.ts.map +1 -1
- package/dist/blacktip.js +105 -1
- package/dist/blacktip.js.map +1 -1
- package/dist/diagnostics.d.ts +31 -0
- package/dist/diagnostics.d.ts.map +1 -1
- package/dist/diagnostics.js +146 -0
- package/dist/diagnostics.js.map +1 -1
- package/dist/identity-pool.d.ts +160 -0
- package/dist/identity-pool.d.ts.map +1 -0
- package/dist/identity-pool.js +288 -0
- package/dist/identity-pool.js.map +1 -0
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/tls-side-channel.d.ts +82 -0
- package/dist/tls-side-channel.d.ts.map +1 -0
- package/dist/tls-side-channel.js +241 -0
- package/dist/tls-side-channel.js.map +1 -0
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/docs/akamai-bypass.md +257 -0
- package/docs/anti-bot-validation.md +84 -0
- package/docs/calibration-validation.md +93 -0
- package/docs/identity-pool.md +176 -0
- package/docs/tls-side-channel.md +83 -0
- package/native/tls-client/go.mod +21 -0
- package/native/tls-client/go.sum +36 -0
- package/native/tls-client/main.go +216 -0
- package/package.json +8 -2
- package/scripts/fit-cmu-keystroke.mjs +186 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TLS side-channel — spawns the Go-based bogdanfinn/tls-client daemon
|
|
3
|
+
* and exposes a `fetchWithTls()` primitive that performs HTTP requests
|
|
4
|
+
* with a real Chrome TLS ClientHello, real H2 frame settings, and real
|
|
5
|
+
* H2 frame order. Used to make gating requests that the browser can't
|
|
6
|
+
* make through itself, then inject the resulting cookies into the
|
|
7
|
+
* BlackTip browser session.
|
|
8
|
+
*
|
|
9
|
+
* This is the v0.3.0 answer to "an edge gates the very first request
|
|
10
|
+
* before BlackTip's browser even has a session." Use it as follows:
|
|
11
|
+
*
|
|
12
|
+
* const channel = await TlsSideChannel.spawn();
|
|
13
|
+
* const resp = await channel.fetch('https://protected.example.com/');
|
|
14
|
+
* await bt.setCookies(resp.cookies.map(c => ({ name: c.name, value: c.value, domain: c.domain, path: c.path })));
|
|
15
|
+
* await bt.navigate('https://protected.example.com/');
|
|
16
|
+
* // ... browser session now has the cookies the gating request earned
|
|
17
|
+
* await channel.close();
|
|
18
|
+
*
|
|
19
|
+
* The daemon binary lives in `native/tls-client/blacktip-tls` (Linux/macOS)
|
|
20
|
+
* or `native/tls-client/blacktip-tls.exe` (Windows). Build it once with
|
|
21
|
+
* `cd native/tls-client && go build -o blacktip-tls .` — Go is the only
|
|
22
|
+
* build dependency, and you can grab it from https://go.dev/dl/.
|
|
23
|
+
*
|
|
24
|
+
* The daemon stays alive across many requests so we don't pay subprocess
|
|
25
|
+
* startup cost per call. It uses a newline-delimited JSON wire protocol
|
|
26
|
+
* with per-request IDs, so multiple `fetch()` calls can be in flight
|
|
27
|
+
* concurrently without interleaving issues.
|
|
28
|
+
*/
|
|
29
|
+
export interface TlsRequest {
|
|
30
|
+
url: string;
|
|
31
|
+
method?: string;
|
|
32
|
+
headers?: Record<string, string>;
|
|
33
|
+
/** Request body as a UTF-8 string (will be base64-encoded for the wire). */
|
|
34
|
+
body?: string;
|
|
35
|
+
timeoutMs?: number;
|
|
36
|
+
/** Chrome / Firefox / Safari profile name; defaults to chrome_133. */
|
|
37
|
+
profile?: string;
|
|
38
|
+
}
|
|
39
|
+
export interface TlsResponse {
|
|
40
|
+
status: number;
|
|
41
|
+
/** Headers from the upstream response, lower-cased keys. */
|
|
42
|
+
headers: Record<string, string[]>;
|
|
43
|
+
/** Response body as a UTF-8 string (decoded from the wire's base64). */
|
|
44
|
+
body: string;
|
|
45
|
+
finalUrl: string;
|
|
46
|
+
durationMs: number;
|
|
47
|
+
/** Cookies parsed from `Set-Cookie` headers, ready to inject via `bt.setCookies()`. */
|
|
48
|
+
cookies: ParsedCookie[];
|
|
49
|
+
}
|
|
50
|
+
export interface ParsedCookie {
|
|
51
|
+
name: string;
|
|
52
|
+
value: string;
|
|
53
|
+
domain: string;
|
|
54
|
+
path: string;
|
|
55
|
+
httpOnly: boolean;
|
|
56
|
+
secure: boolean;
|
|
57
|
+
sameSite?: 'Strict' | 'Lax' | 'None';
|
|
58
|
+
expires?: number;
|
|
59
|
+
}
|
|
60
|
+
export declare class TlsSideChannel {
|
|
61
|
+
private proc;
|
|
62
|
+
private rl;
|
|
63
|
+
private pending;
|
|
64
|
+
private nextId;
|
|
65
|
+
private closed;
|
|
66
|
+
private constructor();
|
|
67
|
+
/**
|
|
68
|
+
* Spawn the daemon. Throws if the binary isn't built or can't start.
|
|
69
|
+
* The daemon stays alive until you call `close()`.
|
|
70
|
+
*/
|
|
71
|
+
static spawn(): Promise<TlsSideChannel>;
|
|
72
|
+
private handleLine;
|
|
73
|
+
/**
|
|
74
|
+
* Perform a single TLS-impersonated request. Multiple `fetch()` calls
|
|
75
|
+
* can be in flight concurrently — the daemon handles each in its own
|
|
76
|
+
* goroutine and matches responses by id.
|
|
77
|
+
*/
|
|
78
|
+
fetch(req: TlsRequest): Promise<TlsResponse>;
|
|
79
|
+
/** Shut down the daemon and clean up the subprocess. */
|
|
80
|
+
close(): Promise<void>;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=tls-side-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tls-side-channel.d.ts","sourceRoot":"","sources":["../src/tls-side-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAUH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sEAAsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,wEAAwE;IACxE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAoGD,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAiC;IAC7C,OAAO,CAAC,EAAE,CAAoB;IAC9B,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAS;IAEvB,OAAO;IAYP;;;OAGG;WACU,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;IAU7C,OAAO,CAAC,UAAU;IA8ClB;;;;OAIG;IACG,KAAK,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAuBlD,wDAAwD;IAClD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAc7B"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TLS side-channel — spawns the Go-based bogdanfinn/tls-client daemon
|
|
3
|
+
* and exposes a `fetchWithTls()` primitive that performs HTTP requests
|
|
4
|
+
* with a real Chrome TLS ClientHello, real H2 frame settings, and real
|
|
5
|
+
* H2 frame order. Used to make gating requests that the browser can't
|
|
6
|
+
* make through itself, then inject the resulting cookies into the
|
|
7
|
+
* BlackTip browser session.
|
|
8
|
+
*
|
|
9
|
+
* This is the v0.3.0 answer to "an edge gates the very first request
|
|
10
|
+
* before BlackTip's browser even has a session." Use it as follows:
|
|
11
|
+
*
|
|
12
|
+
* const channel = await TlsSideChannel.spawn();
|
|
13
|
+
* const resp = await channel.fetch('https://protected.example.com/');
|
|
14
|
+
* await bt.setCookies(resp.cookies.map(c => ({ name: c.name, value: c.value, domain: c.domain, path: c.path })));
|
|
15
|
+
* await bt.navigate('https://protected.example.com/');
|
|
16
|
+
* // ... browser session now has the cookies the gating request earned
|
|
17
|
+
* await channel.close();
|
|
18
|
+
*
|
|
19
|
+
* The daemon binary lives in `native/tls-client/blacktip-tls` (Linux/macOS)
|
|
20
|
+
* or `native/tls-client/blacktip-tls.exe` (Windows). Build it once with
|
|
21
|
+
* `cd native/tls-client && go build -o blacktip-tls .` — Go is the only
|
|
22
|
+
* build dependency, and you can grab it from https://go.dev/dl/.
|
|
23
|
+
*
|
|
24
|
+
* The daemon stays alive across many requests so we don't pay subprocess
|
|
25
|
+
* startup cost per call. It uses a newline-delimited JSON wire protocol
|
|
26
|
+
* with per-request IDs, so multiple `fetch()` calls can be in flight
|
|
27
|
+
* concurrently without interleaving issues.
|
|
28
|
+
*/
|
|
29
|
+
import { spawn } from 'node:child_process';
|
|
30
|
+
import { existsSync } from 'node:fs';
|
|
31
|
+
import { join, dirname } from 'node:path';
|
|
32
|
+
import { fileURLToPath } from 'node:url';
|
|
33
|
+
import { createInterface } from 'node:readline';
|
|
34
|
+
// ── Resolution of the daemon binary ──
|
|
35
|
+
/**
|
|
36
|
+
* Resolves the path to the prebuilt blacktip-tls binary. Looks first
|
|
37
|
+
* in `native/tls-client/` next to the package source, then falls back
|
|
38
|
+
* to a process-env override (`BLACKTIP_TLS_BIN`) for users who want
|
|
39
|
+
* to ship the binary somewhere else.
|
|
40
|
+
*/
|
|
41
|
+
function resolveBinaryPath() {
|
|
42
|
+
const env = process.env.BLACKTIP_TLS_BIN;
|
|
43
|
+
if (env && existsSync(env))
|
|
44
|
+
return env;
|
|
45
|
+
// From src/tls-side-channel.ts (or its compiled equivalent in dist/)
|
|
46
|
+
// → ../native/tls-client/blacktip-tls[.exe]
|
|
47
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
48
|
+
const exe = process.platform === 'win32' ? 'blacktip-tls.exe' : 'blacktip-tls';
|
|
49
|
+
const candidates = [
|
|
50
|
+
join(here, '..', 'native', 'tls-client', exe),
|
|
51
|
+
join(here, '..', '..', 'native', 'tls-client', exe), // when running from dist/
|
|
52
|
+
];
|
|
53
|
+
for (const c of candidates) {
|
|
54
|
+
if (existsSync(c))
|
|
55
|
+
return c;
|
|
56
|
+
}
|
|
57
|
+
throw new Error(`BlackTip TLS daemon binary not found. Build it with:\n` +
|
|
58
|
+
` cd native/tls-client && go build -o ${exe} .\n` +
|
|
59
|
+
`Or set BLACKTIP_TLS_BIN to an absolute path.`);
|
|
60
|
+
}
|
|
61
|
+
// ── Cookie parsing ──
|
|
62
|
+
//
|
|
63
|
+
// Set-Cookie parsing is gnarly: commas can appear inside `Expires`
|
|
64
|
+
// values ("Sun, 06 Nov 1994 08:49:37 GMT"), so a naive split-on-comma
|
|
65
|
+
// breaks. We split on the literal `\n` boundary that bogdanfinn/fhttp
|
|
66
|
+
// uses when joining multiple Set-Cookie headers... but the Go daemon
|
|
67
|
+
// returns headers as `string[]`, so each cookie is already its own
|
|
68
|
+
// array element and we don't need to split at all.
|
|
69
|
+
function parseCookie(setCookie, defaultDomain) {
|
|
70
|
+
// First chunk before `;` is `name=value`. Subsequent chunks are attributes.
|
|
71
|
+
const parts = setCookie.split(';').map((p) => p.trim());
|
|
72
|
+
const first = parts[0];
|
|
73
|
+
if (!first)
|
|
74
|
+
return null;
|
|
75
|
+
const eq = first.indexOf('=');
|
|
76
|
+
if (eq < 0)
|
|
77
|
+
return null;
|
|
78
|
+
const name = first.slice(0, eq).trim();
|
|
79
|
+
const value = first.slice(eq + 1).trim();
|
|
80
|
+
if (!name)
|
|
81
|
+
return null;
|
|
82
|
+
let domain = defaultDomain;
|
|
83
|
+
let path = '/';
|
|
84
|
+
let httpOnly = false;
|
|
85
|
+
let secure = false;
|
|
86
|
+
let sameSite;
|
|
87
|
+
let expires;
|
|
88
|
+
for (let i = 1; i < parts.length; i++) {
|
|
89
|
+
const attr = parts[i];
|
|
90
|
+
const ai = attr.indexOf('=');
|
|
91
|
+
const key = (ai < 0 ? attr : attr.slice(0, ai)).trim().toLowerCase();
|
|
92
|
+
const val = ai < 0 ? '' : attr.slice(ai + 1).trim();
|
|
93
|
+
if (key === 'domain')
|
|
94
|
+
domain = val.replace(/^\./, '');
|
|
95
|
+
else if (key === 'path')
|
|
96
|
+
path = val;
|
|
97
|
+
else if (key === 'httponly')
|
|
98
|
+
httpOnly = true;
|
|
99
|
+
else if (key === 'secure')
|
|
100
|
+
secure = true;
|
|
101
|
+
else if (key === 'samesite') {
|
|
102
|
+
const v = val.toLowerCase();
|
|
103
|
+
if (v === 'strict')
|
|
104
|
+
sameSite = 'Strict';
|
|
105
|
+
else if (v === 'lax')
|
|
106
|
+
sameSite = 'Lax';
|
|
107
|
+
else if (v === 'none')
|
|
108
|
+
sameSite = 'None';
|
|
109
|
+
}
|
|
110
|
+
else if (key === 'expires') {
|
|
111
|
+
const t = Date.parse(val);
|
|
112
|
+
if (!Number.isNaN(t))
|
|
113
|
+
expires = t / 1000;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return { name, value, domain, path, httpOnly, secure, sameSite, expires };
|
|
117
|
+
}
|
|
118
|
+
export class TlsSideChannel {
|
|
119
|
+
proc;
|
|
120
|
+
rl;
|
|
121
|
+
pending = new Map();
|
|
122
|
+
nextId = 1;
|
|
123
|
+
closed = false;
|
|
124
|
+
constructor(proc) {
|
|
125
|
+
this.proc = proc;
|
|
126
|
+
this.rl = createInterface({ input: proc.stdout });
|
|
127
|
+
this.rl.on('line', (line) => this.handleLine(line));
|
|
128
|
+
proc.on('exit', (code) => {
|
|
129
|
+
this.closed = true;
|
|
130
|
+
const err = new Error(`TLS daemon exited with code ${code}`);
|
|
131
|
+
for (const p of this.pending.values())
|
|
132
|
+
p.reject(err);
|
|
133
|
+
this.pending.clear();
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Spawn the daemon. Throws if the binary isn't built or can't start.
|
|
138
|
+
* The daemon stays alive until you call `close()`.
|
|
139
|
+
*/
|
|
140
|
+
static async spawn() {
|
|
141
|
+
const bin = resolveBinaryPath();
|
|
142
|
+
const proc = spawn(bin, [], { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
143
|
+
// Forward daemon stderr to ours so we see crashes in dev.
|
|
144
|
+
proc.stderr.on('data', (chunk) => {
|
|
145
|
+
process.stderr.write(`[blacktip-tls] ${chunk.toString()}`);
|
|
146
|
+
});
|
|
147
|
+
return new TlsSideChannel(proc);
|
|
148
|
+
}
|
|
149
|
+
handleLine(line) {
|
|
150
|
+
if (!line.trim())
|
|
151
|
+
return;
|
|
152
|
+
let parsed;
|
|
153
|
+
try {
|
|
154
|
+
parsed = JSON.parse(line);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
process.stderr.write(`[blacktip-tls] unparseable line: ${line}\n`);
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const pending = this.pending.get(parsed.id);
|
|
161
|
+
if (!pending)
|
|
162
|
+
return;
|
|
163
|
+
this.pending.delete(parsed.id);
|
|
164
|
+
if (!parsed.ok) {
|
|
165
|
+
pending.reject(new Error(parsed.error ?? 'unknown daemon error'));
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const finalUrl = parsed.finalUrl ?? '';
|
|
169
|
+
const headers = parsed.headers ?? {};
|
|
170
|
+
const bodyB64 = parsed.body ?? '';
|
|
171
|
+
const body = Buffer.from(bodyB64, 'base64').toString('utf-8');
|
|
172
|
+
// Parse Set-Cookie headers. The header key may be `Set-Cookie`
|
|
173
|
+
// or `set-cookie` depending on the daemon's Go HTTP version.
|
|
174
|
+
const cookies = [];
|
|
175
|
+
const cookieHeaders = headers['Set-Cookie'] ?? headers['set-cookie'] ?? [];
|
|
176
|
+
let defaultDomain = '';
|
|
177
|
+
try {
|
|
178
|
+
defaultDomain = new URL(finalUrl).hostname;
|
|
179
|
+
}
|
|
180
|
+
catch { /* leave empty */ }
|
|
181
|
+
for (const sc of cookieHeaders) {
|
|
182
|
+
const c = parseCookie(sc, defaultDomain);
|
|
183
|
+
if (c)
|
|
184
|
+
cookies.push(c);
|
|
185
|
+
}
|
|
186
|
+
pending.resolve({
|
|
187
|
+
status: parsed.status ?? 0,
|
|
188
|
+
headers,
|
|
189
|
+
body,
|
|
190
|
+
finalUrl,
|
|
191
|
+
durationMs: parsed.durationMs,
|
|
192
|
+
cookies,
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Perform a single TLS-impersonated request. Multiple `fetch()` calls
|
|
197
|
+
* can be in flight concurrently — the daemon handles each in its own
|
|
198
|
+
* goroutine and matches responses by id.
|
|
199
|
+
*/
|
|
200
|
+
async fetch(req) {
|
|
201
|
+
if (this.closed)
|
|
202
|
+
throw new Error('TLS daemon is closed');
|
|
203
|
+
const id = `r${this.nextId++}`;
|
|
204
|
+
const wire = {
|
|
205
|
+
id,
|
|
206
|
+
url: req.url,
|
|
207
|
+
method: req.method ?? 'GET',
|
|
208
|
+
headers: req.headers ?? {},
|
|
209
|
+
body: req.body ? Buffer.from(req.body, 'utf-8').toString('base64') : '',
|
|
210
|
+
timeoutMs: req.timeoutMs ?? 15000,
|
|
211
|
+
profile: req.profile ?? 'chrome_133',
|
|
212
|
+
};
|
|
213
|
+
return new Promise((resolve, reject) => {
|
|
214
|
+
this.pending.set(id, { resolve, reject });
|
|
215
|
+
this.proc.stdin.write(JSON.stringify(wire) + '\n', (err) => {
|
|
216
|
+
if (err) {
|
|
217
|
+
this.pending.delete(id);
|
|
218
|
+
reject(err);
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/** Shut down the daemon and clean up the subprocess. */
|
|
224
|
+
async close() {
|
|
225
|
+
if (this.closed)
|
|
226
|
+
return;
|
|
227
|
+
this.closed = true;
|
|
228
|
+
this.rl.close();
|
|
229
|
+
return new Promise((resolve) => {
|
|
230
|
+
this.proc.once('exit', () => resolve());
|
|
231
|
+
this.proc.stdin.end();
|
|
232
|
+
// Hard-kill if it doesn't exit gracefully within a second.
|
|
233
|
+
setTimeout(() => {
|
|
234
|
+
if (!this.proc.killed)
|
|
235
|
+
this.proc.kill('SIGKILL');
|
|
236
|
+
resolve();
|
|
237
|
+
}, 1000).unref();
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=tls-side-channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tls-side-channel.js","sourceRoot":"","sources":["../src/tls-side-channel.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -25,6 +25,21 @@ export interface BlackTipConfig {
|
|
|
25
25
|
* If unset, Chrome runs with a fresh profile each launch (default).
|
|
26
26
|
*/
|
|
27
27
|
userDataDir?: string;
|
|
28
|
+
/**
|
|
29
|
+
* IP reputation gate. When set, BlackTip queries `bt.checkIpReputation()`
|
|
30
|
+
* immediately after `launch()` and acts based on the verdict:
|
|
31
|
+
*
|
|
32
|
+
* - `false` / unset (default): no check.
|
|
33
|
+
* - `'warn'`: log a warning if the egress IP is on a known datacenter
|
|
34
|
+
* ASN, but allow the launch to proceed.
|
|
35
|
+
* - `'throw'` / `true`: throw on launch if the egress IP is datacenter.
|
|
36
|
+
* This is the safest setting for high-stakes flows where a flagged
|
|
37
|
+
* IP would burn a real account.
|
|
38
|
+
*
|
|
39
|
+
* Use `'throw'` in CI / production. Use `'warn'` for local dev. Leave
|
|
40
|
+
* unset for offline / air-gapped use.
|
|
41
|
+
*/
|
|
42
|
+
requireResidentialIp?: boolean | 'warn' | 'throw';
|
|
28
43
|
}
|
|
29
44
|
export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
|
|
30
45
|
export interface ProfileConfig {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,eAAe,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC;IACzC,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;OASG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,sBAAsB;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,sBAAsB;AAqRtB,oBAAoB;AAEpB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,OAAO,EAAE,SAAS;IAClB,iBAAiB,EAAE,mBAAmB;IACtC,iBAAiB,EAAE,mBAAmB;IACtC,QAAQ,EAAE,UAAU;IACpB,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,iBAAiB;IAClC,eAAe,EAAE,iBAAiB;IAClC,WAAW,EAAE,aAAa;IAC1B,eAAe,EAAE,iBAAiB;IAClC,YAAY,EAAE,cAAc;CACpB,CAAC"}
|