nlcurl 0.3.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/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +84 -90
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/index.js +25 -25
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts +2 -2
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +55 -55
- package/dist/cli/output.js.map +1 -1
- package/dist/cookies/jar.d.ts +1 -1
- package/dist/cookies/jar.d.ts.map +1 -1
- package/dist/cookies/jar.js +20 -22
- package/dist/cookies/jar.js.map +1 -1
- package/dist/cookies/parser.d.ts +1 -1
- package/dist/cookies/parser.d.ts.map +1 -1
- package/dist/cookies/parser.js +20 -22
- package/dist/cookies/parser.js.map +1 -1
- package/dist/core/client.d.ts +3 -3
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +9 -8
- package/dist/core/client.js.map +1 -1
- package/dist/core/errors.d.ts +64 -21
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +112 -36
- package/dist/core/errors.js.map +1 -1
- package/dist/core/request.d.ts +10 -5
- package/dist/core/request.d.ts.map +1 -1
- package/dist/core/response.d.ts +2 -2
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +6 -8
- package/dist/core/response.js.map +1 -1
- package/dist/core/session.d.ts +7 -6
- package/dist/core/session.d.ts.map +1 -1
- package/dist/core/session.js +58 -43
- package/dist/core/session.js.map +1 -1
- package/dist/core/validation.d.ts +96 -0
- package/dist/core/validation.d.ts.map +1 -0
- package/dist/core/validation.js +246 -0
- package/dist/core/validation.js.map +1 -0
- package/dist/fingerprints/akamai.d.ts +1 -1
- package/dist/fingerprints/akamai.d.ts.map +1 -1
- package/dist/fingerprints/akamai.js +3 -7
- package/dist/fingerprints/akamai.js.map +1 -1
- package/dist/fingerprints/database.d.ts +7 -7
- package/dist/fingerprints/database.d.ts.map +1 -1
- package/dist/fingerprints/database.js +12 -18
- package/dist/fingerprints/database.js.map +1 -1
- package/dist/fingerprints/extensions.d.ts.map +1 -1
- package/dist/fingerprints/extensions.js +4 -4
- package/dist/fingerprints/extensions.js.map +1 -1
- package/dist/fingerprints/ja3.d.ts +1 -1
- package/dist/fingerprints/ja3.d.ts.map +1 -1
- package/dist/fingerprints/ja3.js +12 -12
- package/dist/fingerprints/ja3.js.map +1 -1
- package/dist/fingerprints/profiles/chrome.d.ts +1 -1
- package/dist/fingerprints/profiles/chrome.d.ts.map +1 -1
- package/dist/fingerprints/profiles/chrome.js +59 -100
- package/dist/fingerprints/profiles/chrome.js.map +1 -1
- package/dist/fingerprints/profiles/edge.d.ts +1 -1
- package/dist/fingerprints/profiles/edge.d.ts.map +1 -1
- package/dist/fingerprints/profiles/edge.js +26 -26
- package/dist/fingerprints/profiles/edge.js.map +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts +1 -1
- package/dist/fingerprints/profiles/firefox.d.ts.map +1 -1
- package/dist/fingerprints/profiles/firefox.js +35 -85
- package/dist/fingerprints/profiles/firefox.js.map +1 -1
- package/dist/fingerprints/profiles/safari.d.ts +1 -1
- package/dist/fingerprints/profiles/safari.d.ts.map +1 -1
- package/dist/fingerprints/profiles/safari.js +35 -68
- package/dist/fingerprints/profiles/safari.js.map +1 -1
- package/dist/fingerprints/profiles/tor.d.ts +1 -1
- package/dist/fingerprints/profiles/tor.d.ts.map +1 -1
- package/dist/fingerprints/profiles/tor.js +24 -57
- package/dist/fingerprints/profiles/tor.js.map +1 -1
- package/dist/fingerprints/types.d.ts +1 -1
- package/dist/fingerprints/types.d.ts.map +1 -1
- package/dist/http/h1/client.d.ts +4 -4
- package/dist/http/h1/client.d.ts.map +1 -1
- package/dist/http/h1/client.js +31 -31
- package/dist/http/h1/client.js.map +1 -1
- package/dist/http/h1/encoder.d.ts +1 -1
- package/dist/http/h1/encoder.d.ts.map +1 -1
- package/dist/http/h1/encoder.js +17 -19
- package/dist/http/h1/encoder.js.map +1 -1
- package/dist/http/h1/parser.d.ts +1 -1
- package/dist/http/h1/parser.d.ts.map +1 -1
- package/dist/http/h1/parser.js +29 -33
- package/dist/http/h1/parser.js.map +1 -1
- package/dist/http/h2/client.d.ts +5 -4
- package/dist/http/h2/client.d.ts.map +1 -1
- package/dist/http/h2/client.js +59 -71
- package/dist/http/h2/client.js.map +1 -1
- package/dist/http/h2/frames.d.ts +7 -3
- package/dist/http/h2/frames.d.ts.map +1 -1
- package/dist/http/h2/frames.js +16 -12
- package/dist/http/h2/frames.js.map +1 -1
- package/dist/http/h2/hpack.d.ts.map +1 -1
- package/dist/http/h2/hpack.js +328 -130
- package/dist/http/h2/hpack.js.map +1 -1
- package/dist/http/negotiator.d.ts +4 -4
- package/dist/http/negotiator.d.ts.map +1 -1
- package/dist/http/negotiator.js +27 -33
- package/dist/http/negotiator.js.map +1 -1
- package/dist/http/pool.d.ts +5 -5
- package/dist/http/pool.d.ts.map +1 -1
- package/dist/http/pool.js +5 -5
- package/dist/http/pool.js.map +1 -1
- package/dist/index.d.ts +16 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/middleware/interceptor.d.ts +2 -2
- package/dist/middleware/interceptor.d.ts.map +1 -1
- package/dist/middleware/interceptor.js.map +1 -1
- package/dist/middleware/rate-limiter.d.ts.map +1 -1
- package/dist/middleware/rate-limiter.js +2 -0
- package/dist/middleware/rate-limiter.js.map +1 -1
- package/dist/middleware/retry.d.ts +6 -4
- package/dist/middleware/retry.d.ts.map +1 -1
- package/dist/middleware/retry.js +10 -8
- package/dist/middleware/retry.js.map +1 -1
- package/dist/proxy/http-proxy.d.ts +1 -1
- package/dist/proxy/http-proxy.d.ts.map +1 -1
- package/dist/proxy/http-proxy.js +14 -14
- package/dist/proxy/http-proxy.js.map +1 -1
- package/dist/proxy/socks.d.ts +1 -1
- package/dist/proxy/socks.d.ts.map +1 -1
- package/dist/proxy/socks.js +31 -27
- package/dist/proxy/socks.js.map +1 -1
- package/dist/tls/constants.d.ts.map +1 -1
- package/dist/tls/constants.js +1 -4
- package/dist/tls/constants.js.map +1 -1
- package/dist/tls/node-engine.d.ts +2 -2
- package/dist/tls/node-engine.d.ts.map +1 -1
- package/dist/tls/node-engine.js +60 -58
- package/dist/tls/node-engine.js.map +1 -1
- package/dist/tls/stealth/client-hello.d.ts +1 -1
- package/dist/tls/stealth/client-hello.d.ts.map +1 -1
- package/dist/tls/stealth/client-hello.js +8 -14
- package/dist/tls/stealth/client-hello.js.map +1 -1
- package/dist/tls/stealth/engine.d.ts +2 -2
- package/dist/tls/stealth/engine.d.ts.map +1 -1
- package/dist/tls/stealth/engine.js +27 -26
- package/dist/tls/stealth/engine.js.map +1 -1
- package/dist/tls/stealth/handshake.d.ts +3 -3
- package/dist/tls/stealth/handshake.d.ts.map +1 -1
- package/dist/tls/stealth/handshake.js +62 -74
- package/dist/tls/stealth/handshake.js.map +1 -1
- package/dist/tls/stealth/key-schedule.d.ts +2 -2
- package/dist/tls/stealth/key-schedule.d.ts.map +1 -1
- package/dist/tls/stealth/key-schedule.js +20 -20
- package/dist/tls/stealth/key-schedule.js.map +1 -1
- package/dist/tls/stealth/record-layer.d.ts +1 -1
- package/dist/tls/stealth/record-layer.d.ts.map +1 -1
- package/dist/tls/stealth/record-layer.js +13 -13
- package/dist/tls/stealth/record-layer.js.map +1 -1
- package/dist/tls/types.d.ts +4 -4
- package/dist/tls/types.d.ts.map +1 -1
- package/dist/utils/buffer-reader.d.ts.map +1 -1
- package/dist/utils/buffer-reader.js.map +1 -1
- package/dist/utils/buffer-writer.d.ts.map +1 -1
- package/dist/utils/buffer-writer.js +6 -0
- package/dist/utils/buffer-writer.js.map +1 -1
- package/dist/utils/encoding.d.ts +1 -1
- package/dist/utils/encoding.d.ts.map +1 -1
- package/dist/utils/encoding.js +23 -25
- package/dist/utils/encoding.js.map +1 -1
- package/dist/utils/logger.d.ts +48 -7
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +61 -13
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/url.d.ts.map +1 -1
- package/dist/utils/url.js +2 -2
- package/dist/utils/url.js.map +1 -1
- package/dist/ws/client.d.ts +2 -2
- package/dist/ws/client.d.ts.map +1 -1
- package/dist/ws/client.js +67 -71
- package/dist/ws/client.js.map +1 -1
- package/dist/ws/frame.d.ts.map +1 -1
- package/dist/ws/frame.js +8 -8
- package/dist/ws/frame.js.map +1 -1
- package/package.json +60 -57
package/dist/cli/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAiCD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA4KpD"}
|
package/dist/cli/args.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const DEFAULTS = {
|
|
2
|
-
url:
|
|
3
|
-
method:
|
|
2
|
+
url: "",
|
|
3
|
+
method: "GET",
|
|
4
4
|
headers: [],
|
|
5
5
|
data: null,
|
|
6
6
|
dataRaw: null,
|
|
@@ -41,8 +41,8 @@ export function parseArgs(argv) {
|
|
|
41
41
|
let i = 0;
|
|
42
42
|
while (i < args.length) {
|
|
43
43
|
const arg = args[i];
|
|
44
|
-
if (arg.startsWith(
|
|
45
|
-
const eqIdx = arg.indexOf(
|
|
44
|
+
if (arg.startsWith("--") && arg.includes("=")) {
|
|
45
|
+
const eqIdx = arg.indexOf("=");
|
|
46
46
|
const flag = arg.substring(0, eqIdx);
|
|
47
47
|
const value = arg.substring(eqIdx + 1);
|
|
48
48
|
processLongFlag(flag, value, result);
|
|
@@ -50,127 +50,124 @@ export function parseArgs(argv) {
|
|
|
50
50
|
continue;
|
|
51
51
|
}
|
|
52
52
|
switch (arg) {
|
|
53
|
-
case
|
|
54
|
-
case
|
|
53
|
+
case "-X":
|
|
54
|
+
case "--request":
|
|
55
55
|
result.method = requireNext(args, ++i, arg).toUpperCase();
|
|
56
56
|
break;
|
|
57
|
-
case
|
|
58
|
-
case
|
|
57
|
+
case "-H":
|
|
58
|
+
case "--header": {
|
|
59
59
|
const raw = requireNext(args, ++i, arg);
|
|
60
|
-
const colonIdx = raw.indexOf(
|
|
60
|
+
const colonIdx = raw.indexOf(":");
|
|
61
61
|
if (colonIdx > 0) {
|
|
62
|
-
result.headers.push([
|
|
63
|
-
raw.substring(0, colonIdx).trim(),
|
|
64
|
-
raw.substring(colonIdx + 1).trim(),
|
|
65
|
-
]);
|
|
62
|
+
result.headers.push([raw.substring(0, colonIdx).trim(), raw.substring(colonIdx + 1).trim()]);
|
|
66
63
|
}
|
|
67
64
|
break;
|
|
68
65
|
}
|
|
69
|
-
case
|
|
70
|
-
case
|
|
71
|
-
case
|
|
66
|
+
case "-d":
|
|
67
|
+
case "--data":
|
|
68
|
+
case "--data-ascii":
|
|
72
69
|
result.data = requireNext(args, ++i, arg);
|
|
73
|
-
if (result.method ===
|
|
74
|
-
result.method =
|
|
70
|
+
if (result.method === "GET")
|
|
71
|
+
result.method = "POST";
|
|
75
72
|
break;
|
|
76
|
-
case
|
|
73
|
+
case "--data-raw":
|
|
77
74
|
result.dataRaw = requireNext(args, ++i, arg);
|
|
78
|
-
if (result.method ===
|
|
79
|
-
result.method =
|
|
75
|
+
if (result.method === "GET")
|
|
76
|
+
result.method = "POST";
|
|
80
77
|
break;
|
|
81
|
-
case
|
|
82
|
-
case
|
|
78
|
+
case "-A":
|
|
79
|
+
case "--user-agent":
|
|
83
80
|
result.userAgent = requireNext(args, ++i, arg);
|
|
84
81
|
break;
|
|
85
|
-
case
|
|
86
|
-
case
|
|
82
|
+
case "-o":
|
|
83
|
+
case "--output":
|
|
87
84
|
result.output = requireNext(args, ++i, arg);
|
|
88
85
|
break;
|
|
89
|
-
case
|
|
90
|
-
case
|
|
86
|
+
case "-I":
|
|
87
|
+
case "--head":
|
|
91
88
|
result.head = true;
|
|
92
|
-
result.method =
|
|
89
|
+
result.method = "HEAD";
|
|
93
90
|
break;
|
|
94
|
-
case
|
|
95
|
-
case
|
|
91
|
+
case "-i":
|
|
92
|
+
case "--include":
|
|
96
93
|
result.include = true;
|
|
97
94
|
break;
|
|
98
|
-
case
|
|
99
|
-
case
|
|
95
|
+
case "-v":
|
|
96
|
+
case "--verbose":
|
|
100
97
|
result.verbose = true;
|
|
101
98
|
break;
|
|
102
|
-
case
|
|
103
|
-
case
|
|
99
|
+
case "-s":
|
|
100
|
+
case "--silent":
|
|
104
101
|
result.silent = true;
|
|
105
102
|
break;
|
|
106
|
-
case
|
|
103
|
+
case "--compressed":
|
|
107
104
|
result.compressed = true;
|
|
108
105
|
break;
|
|
109
|
-
case
|
|
106
|
+
case "--impersonate":
|
|
110
107
|
result.impersonate = requireNext(args, ++i, arg);
|
|
111
108
|
break;
|
|
112
|
-
case
|
|
109
|
+
case "--ja3":
|
|
113
110
|
result.ja3 = requireNext(args, ++i, arg);
|
|
114
111
|
break;
|
|
115
|
-
case
|
|
112
|
+
case "--akamai":
|
|
116
113
|
result.akamai = requireNext(args, ++i, arg);
|
|
117
114
|
break;
|
|
118
|
-
case
|
|
115
|
+
case "--stealth":
|
|
119
116
|
result.stealth = true;
|
|
120
117
|
break;
|
|
121
|
-
case
|
|
118
|
+
case "--list-profiles":
|
|
122
119
|
result.listProfiles = true;
|
|
123
120
|
break;
|
|
124
|
-
case
|
|
125
|
-
case
|
|
121
|
+
case "-x":
|
|
122
|
+
case "--proxy":
|
|
126
123
|
result.proxy = requireNext(args, ++i, arg);
|
|
127
124
|
break;
|
|
128
|
-
case
|
|
129
|
-
case
|
|
125
|
+
case "-U":
|
|
126
|
+
case "--proxy-user":
|
|
130
127
|
result.proxyAuth = requireNext(args, ++i, arg);
|
|
131
128
|
break;
|
|
132
|
-
case
|
|
133
|
-
case
|
|
129
|
+
case "-k":
|
|
130
|
+
case "--insecure":
|
|
134
131
|
result.insecure = true;
|
|
135
132
|
break;
|
|
136
|
-
case
|
|
137
|
-
case
|
|
133
|
+
case "-L":
|
|
134
|
+
case "--location":
|
|
138
135
|
result.followRedirects = true;
|
|
139
136
|
break;
|
|
140
|
-
case
|
|
137
|
+
case "--no-location":
|
|
141
138
|
result.followRedirects = false;
|
|
142
139
|
break;
|
|
143
|
-
case
|
|
140
|
+
case "--max-redirs":
|
|
144
141
|
result.maxRedirects = parseInt(requireNext(args, ++i, arg), 10);
|
|
145
142
|
break;
|
|
146
|
-
case
|
|
147
|
-
case
|
|
143
|
+
case "-m":
|
|
144
|
+
case "--max-time":
|
|
148
145
|
result.timeout = Math.round(parseFloat(requireNext(args, ++i, arg)) * 1000);
|
|
149
146
|
break;
|
|
150
|
-
case
|
|
151
|
-
result.httpVersion =
|
|
147
|
+
case "--http1.1":
|
|
148
|
+
result.httpVersion = "1.1";
|
|
152
149
|
break;
|
|
153
|
-
case
|
|
154
|
-
result.httpVersion =
|
|
150
|
+
case "--http2":
|
|
151
|
+
result.httpVersion = "2";
|
|
155
152
|
break;
|
|
156
|
-
case
|
|
157
|
-
case
|
|
153
|
+
case "-b":
|
|
154
|
+
case "--cookie":
|
|
158
155
|
result.cookies = requireNext(args, ++i, arg);
|
|
159
156
|
break;
|
|
160
|
-
case
|
|
161
|
-
case
|
|
157
|
+
case "-c":
|
|
158
|
+
case "--cookie-jar":
|
|
162
159
|
result.cookieJar = requireNext(args, ++i, arg);
|
|
163
160
|
break;
|
|
164
|
-
case
|
|
165
|
-
case
|
|
161
|
+
case "-h":
|
|
162
|
+
case "--help":
|
|
166
163
|
result.help = true;
|
|
167
164
|
break;
|
|
168
|
-
case
|
|
169
|
-
case
|
|
165
|
+
case "-V":
|
|
166
|
+
case "--version":
|
|
170
167
|
result.version = true;
|
|
171
168
|
break;
|
|
172
169
|
default:
|
|
173
|
-
if (!arg.startsWith(
|
|
170
|
+
if (!arg.startsWith("-") && !result.url) {
|
|
174
171
|
result.url = arg;
|
|
175
172
|
}
|
|
176
173
|
break;
|
|
@@ -187,62 +184,59 @@ function requireNext(args, idx, flag) {
|
|
|
187
184
|
}
|
|
188
185
|
function processLongFlag(flag, value, result) {
|
|
189
186
|
switch (flag) {
|
|
190
|
-
case
|
|
187
|
+
case "--impersonate":
|
|
191
188
|
result.impersonate = value;
|
|
192
189
|
break;
|
|
193
|
-
case
|
|
190
|
+
case "--ja3":
|
|
194
191
|
result.ja3 = value;
|
|
195
192
|
break;
|
|
196
|
-
case
|
|
193
|
+
case "--akamai":
|
|
197
194
|
result.akamai = value;
|
|
198
195
|
break;
|
|
199
|
-
case
|
|
196
|
+
case "--proxy":
|
|
200
197
|
result.proxy = value;
|
|
201
198
|
break;
|
|
202
|
-
case
|
|
199
|
+
case "--proxy-user":
|
|
203
200
|
result.proxyAuth = value;
|
|
204
201
|
break;
|
|
205
|
-
case
|
|
202
|
+
case "--max-redirs":
|
|
206
203
|
result.maxRedirects = parseInt(value, 10);
|
|
207
204
|
break;
|
|
208
|
-
case
|
|
205
|
+
case "--max-time":
|
|
209
206
|
result.timeout = Math.round(parseFloat(value) * 1000);
|
|
210
207
|
break;
|
|
211
|
-
case
|
|
208
|
+
case "--output":
|
|
212
209
|
result.output = value;
|
|
213
210
|
break;
|
|
214
|
-
case
|
|
211
|
+
case "--request":
|
|
215
212
|
result.method = value.toUpperCase();
|
|
216
213
|
break;
|
|
217
|
-
case
|
|
214
|
+
case "--user-agent":
|
|
218
215
|
result.userAgent = value;
|
|
219
216
|
break;
|
|
220
|
-
case
|
|
217
|
+
case "--cookie":
|
|
221
218
|
result.cookies = value;
|
|
222
219
|
break;
|
|
223
|
-
case
|
|
220
|
+
case "--cookie-jar":
|
|
224
221
|
result.cookieJar = value;
|
|
225
222
|
break;
|
|
226
|
-
case
|
|
227
|
-
const colonIdx = value.indexOf(
|
|
223
|
+
case "--header": {
|
|
224
|
+
const colonIdx = value.indexOf(":");
|
|
228
225
|
if (colonIdx > 0) {
|
|
229
|
-
result.headers.push([
|
|
230
|
-
value.substring(0, colonIdx).trim(),
|
|
231
|
-
value.substring(colonIdx + 1).trim(),
|
|
232
|
-
]);
|
|
226
|
+
result.headers.push([value.substring(0, colonIdx).trim(), value.substring(colonIdx + 1).trim()]);
|
|
233
227
|
}
|
|
234
228
|
break;
|
|
235
229
|
}
|
|
236
|
-
case
|
|
237
|
-
case
|
|
230
|
+
case "--data":
|
|
231
|
+
case "--data-ascii":
|
|
238
232
|
result.data = value;
|
|
239
|
-
if (result.method ===
|
|
240
|
-
result.method =
|
|
233
|
+
if (result.method === "GET")
|
|
234
|
+
result.method = "POST";
|
|
241
235
|
break;
|
|
242
|
-
case
|
|
236
|
+
case "--data-raw":
|
|
243
237
|
result.dataRaw = value;
|
|
244
|
-
if (result.method ===
|
|
245
|
-
result.method =
|
|
238
|
+
if (result.method === "GET")
|
|
239
|
+
result.method = "POST";
|
|
246
240
|
break;
|
|
247
241
|
default:
|
|
248
242
|
break;
|
package/dist/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/index.js
CHANGED
|
@@ -4,51 +4,51 @@
|
|
|
4
4
|
* {@link parseArgs}, executes the requested HTTP operation using
|
|
5
5
|
* {@link NLcURLSession}, and writes the response to stdout or a file.
|
|
6
6
|
*/
|
|
7
|
-
import * as fs from
|
|
8
|
-
import * as process from
|
|
9
|
-
import { parseArgs } from
|
|
10
|
-
import { formatOutput, formatVerboseRequest, printHelp } from
|
|
11
|
-
import { request } from
|
|
12
|
-
import { CookieJar } from
|
|
13
|
-
import { listProfiles } from
|
|
7
|
+
import * as fs from "node:fs";
|
|
8
|
+
import * as process from "node:process";
|
|
9
|
+
import { parseArgs } from "./args.js";
|
|
10
|
+
import { formatOutput, formatVerboseRequest, printHelp } from "./output.js";
|
|
11
|
+
import { request } from "../core/client.js";
|
|
12
|
+
import { CookieJar } from "../cookies/jar.js";
|
|
13
|
+
import { listProfiles } from "../fingerprints/database.js";
|
|
14
14
|
async function main() {
|
|
15
15
|
const args = parseArgs(process.argv);
|
|
16
16
|
if (args.help) {
|
|
17
|
-
process.stdout.write(printHelp() +
|
|
17
|
+
process.stdout.write(printHelp() + "\n");
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
20
|
if (args.version) {
|
|
21
|
-
const pkg = JSON.parse(fs.readFileSync(new URL(
|
|
21
|
+
const pkg = JSON.parse(fs.readFileSync(new URL("../../package.json", import.meta.url), "utf8"));
|
|
22
22
|
process.stdout.write(`nlcurl ${pkg.version}\n`);
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
if (args.listProfiles) {
|
|
26
26
|
const profiles = listProfiles();
|
|
27
27
|
for (const name of profiles) {
|
|
28
|
-
process.stdout.write(name +
|
|
28
|
+
process.stdout.write(name + "\n");
|
|
29
29
|
}
|
|
30
30
|
return;
|
|
31
31
|
}
|
|
32
32
|
if (!args.url) {
|
|
33
|
-
process.stderr.write(
|
|
33
|
+
process.stderr.write("Error: No URL specified. Use --help for usage.\n");
|
|
34
34
|
process.exit(1);
|
|
35
35
|
}
|
|
36
36
|
let url = args.url;
|
|
37
|
-
if (!url.startsWith(
|
|
38
|
-
url =
|
|
37
|
+
if (!url.startsWith("http://") && !url.startsWith("https://")) {
|
|
38
|
+
url = "https://" + url;
|
|
39
39
|
}
|
|
40
40
|
const headers = {};
|
|
41
41
|
for (const [key, value] of args.headers) {
|
|
42
42
|
headers[key] = value;
|
|
43
43
|
}
|
|
44
44
|
if (args.userAgent) {
|
|
45
|
-
headers[
|
|
45
|
+
headers["user-agent"] = args.userAgent;
|
|
46
46
|
}
|
|
47
|
-
if (args.compressed && !headers[
|
|
48
|
-
headers[
|
|
47
|
+
if (args.compressed && !headers["accept-encoding"]) {
|
|
48
|
+
headers["accept-encoding"] = "gzip, deflate, br";
|
|
49
49
|
}
|
|
50
50
|
if (args.cookies) {
|
|
51
|
-
headers[
|
|
51
|
+
headers["cookie"] = args.cookies;
|
|
52
52
|
}
|
|
53
53
|
const body = args.data ?? args.dataRaw ?? undefined;
|
|
54
54
|
const req = {
|
|
@@ -68,21 +68,21 @@ async function main() {
|
|
|
68
68
|
httpVersion: args.httpVersion ?? undefined,
|
|
69
69
|
};
|
|
70
70
|
if (args.proxyAuth) {
|
|
71
|
-
const [user, pass] = args.proxyAuth.split(
|
|
71
|
+
const [user, pass] = args.proxyAuth.split(":");
|
|
72
72
|
if (user && pass) {
|
|
73
73
|
req.proxyAuth = [user, pass];
|
|
74
74
|
}
|
|
75
75
|
}
|
|
76
76
|
if (args.verbose) {
|
|
77
|
-
const verboseReq = formatVerboseRequest(req.method ??
|
|
78
|
-
process.stderr.write(verboseReq +
|
|
77
|
+
const verboseReq = formatVerboseRequest(req.method ?? "GET", url, headers);
|
|
78
|
+
process.stderr.write(verboseReq + "\n");
|
|
79
79
|
}
|
|
80
80
|
try {
|
|
81
81
|
let cookieJar;
|
|
82
82
|
if (args.cookieJar) {
|
|
83
83
|
cookieJar = new CookieJar();
|
|
84
84
|
if (fs.existsSync(args.cookieJar)) {
|
|
85
|
-
const content = fs.readFileSync(args.cookieJar,
|
|
85
|
+
const content = fs.readFileSync(args.cookieJar, "utf8");
|
|
86
86
|
cookieJar.loadNetscapeString(content);
|
|
87
87
|
}
|
|
88
88
|
}
|
|
@@ -90,8 +90,8 @@ async function main() {
|
|
|
90
90
|
const jarCookies = cookieJar.getCookieHeader(new URL(url));
|
|
91
91
|
if (jarCookies) {
|
|
92
92
|
req.headers = req.headers ?? {};
|
|
93
|
-
const existing = req.headers[
|
|
94
|
-
req.headers[
|
|
93
|
+
const existing = req.headers["cookie"];
|
|
94
|
+
req.headers["cookie"] = existing ? `${existing}; ${jarCookies}` : jarCookies;
|
|
95
95
|
}
|
|
96
96
|
}
|
|
97
97
|
const response = await request(req);
|
|
@@ -109,8 +109,8 @@ async function main() {
|
|
|
109
109
|
}
|
|
110
110
|
else {
|
|
111
111
|
process.stdout.write(output);
|
|
112
|
-
if (output.length > 0 && !output.endsWith(
|
|
113
|
-
process.stdout.write(
|
|
112
|
+
if (output.length > 0 && !output.endsWith("\n")) {
|
|
113
|
+
process.stdout.write("\n");
|
|
114
114
|
}
|
|
115
115
|
}
|
|
116
116
|
if (!response.ok && !args.silent) {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAG3D,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,CAAC;QACzC,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/output.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { NLcURLResponse } from
|
|
2
|
-
import type { ParsedArgs } from
|
|
1
|
+
import { NLcURLResponse } from "../core/response.js";
|
|
2
|
+
import type { ParsedArgs } from "./args.js";
|
|
3
3
|
/**
|
|
4
4
|
* Formats the response body (and optionally headers) as a string for CLI output.
|
|
5
5
|
* Includes headers when `args.include` or `args.verbose` is `true`. Returns
|
package/dist/cli/output.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/cli/output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,EAAE,UAAU,GAAG,MAAM,CAgB/E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAUtE;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAazG;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAmDlC"}
|
package/dist/cli/output.js
CHANGED
|
@@ -11,14 +11,14 @@ export function formatOutput(response, args) {
|
|
|
11
11
|
const parts = [];
|
|
12
12
|
if (args.include || args.verbose) {
|
|
13
13
|
parts.push(formatResponseHeaders(response));
|
|
14
|
-
parts.push(
|
|
14
|
+
parts.push("");
|
|
15
15
|
}
|
|
16
16
|
if (args.head) {
|
|
17
|
-
return parts.join(
|
|
17
|
+
return parts.join("\n");
|
|
18
18
|
}
|
|
19
19
|
const body = response.text();
|
|
20
20
|
parts.push(body);
|
|
21
|
-
return parts.join(
|
|
21
|
+
return parts.join("\n");
|
|
22
22
|
}
|
|
23
23
|
/**
|
|
24
24
|
* Formats the response status line and headers in the style used by curl's
|
|
@@ -33,7 +33,7 @@ export function formatResponseHeaders(response) {
|
|
|
33
33
|
for (const [key, value] of Object.entries(response.headers)) {
|
|
34
34
|
lines.push(`${key}: ${value}`);
|
|
35
35
|
}
|
|
36
|
-
return lines.join(
|
|
36
|
+
return lines.join("\n");
|
|
37
37
|
}
|
|
38
38
|
/**
|
|
39
39
|
* Formats a verbose outgoing request summary in the style used by curl's `-v`
|
|
@@ -53,8 +53,8 @@ export function formatVerboseRequest(method, url, headers) {
|
|
|
53
53
|
for (const [key, value] of Object.entries(headers)) {
|
|
54
54
|
lines.push(`> ${key}: ${value}`);
|
|
55
55
|
}
|
|
56
|
-
lines.push(
|
|
57
|
-
return lines.join(
|
|
56
|
+
lines.push(">");
|
|
57
|
+
return lines.join("\n");
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Returns the complete help text describing all supported CLI flags and
|
|
@@ -63,55 +63,55 @@ export function formatVerboseRequest(method, url, headers) {
|
|
|
63
63
|
* @returns {string} Help text suitable for printing to stdout.
|
|
64
64
|
*/
|
|
65
65
|
export function printHelp() {
|
|
66
|
-
return `nlcurl -- HTTP client with browser fingerprint impersonation
|
|
67
|
-
|
|
68
|
-
USAGE:
|
|
69
|
-
nlcurl [OPTIONS] <URL>
|
|
70
|
-
|
|
71
|
-
OPTIONS:
|
|
72
|
-
-X, --request <METHOD> HTTP method (GET, POST, PUT, DELETE, etc.)
|
|
73
|
-
-H, --header <HEADER> Add a request header (Name: Value)
|
|
74
|
-
-d, --data <DATA> Request body (sets method to POST if not specified)
|
|
75
|
-
--data-raw <DATA> Request body without special character processing
|
|
76
|
-
-A, --user-agent <AGENT> Set the User-Agent header
|
|
77
|
-
-o, --output <FILE> Write response body to file
|
|
78
|
-
-I, --head Send HEAD request, show headers only
|
|
79
|
-
-i, --include Include response headers in output
|
|
80
|
-
-v, --verbose Verbose output (request and response details)
|
|
81
|
-
-s, --silent Suppress progress and error messages
|
|
82
|
-
--compressed Request compressed response
|
|
83
|
-
|
|
84
|
-
IMPERSONATION:
|
|
85
|
-
--impersonate <PROFILE> Browser profile (e.g. chrome136, firefox138)
|
|
86
|
-
--stealth Use stealth TLS engine for full fingerprint control
|
|
87
|
-
--ja3 <FINGERPRINT> Custom JA3 fingerprint string
|
|
88
|
-
--akamai <FINGERPRINT> Custom Akamai HTTP/2 fingerprint string
|
|
89
|
-
--list-profiles List all available browser profiles
|
|
90
|
-
|
|
91
|
-
CONNECTION:
|
|
92
|
-
-x, --proxy <URL> Proxy URL (http, socks4, socks5)
|
|
93
|
-
-U, --proxy-user <USER:PASS> Proxy authentication
|
|
94
|
-
-k, --insecure Skip TLS certificate verification
|
|
95
|
-
-L, --location Follow redirects (default)
|
|
96
|
-
--no-location Do not follow redirects
|
|
97
|
-
--max-redirs <NUM> Maximum number of redirects (default: 20)
|
|
98
|
-
-m, --max-time <SECONDS> Maximum request time in seconds
|
|
99
|
-
--http1.1 Force HTTP/1.1
|
|
100
|
-
--http2 Force HTTP/2
|
|
101
|
-
|
|
102
|
-
COOKIES:
|
|
103
|
-
-b, --cookie <DATA> Send cookies (name=value pairs)
|
|
104
|
-
-c, --cookie-jar <FILE> Write received cookies to file
|
|
105
|
-
|
|
106
|
-
META:
|
|
107
|
-
-h, --help Show this help message
|
|
108
|
-
-V, --version Show version
|
|
109
|
-
|
|
110
|
-
EXAMPLES:
|
|
111
|
-
nlcurl https://httpbin.org/get
|
|
112
|
-
nlcurl --impersonate chrome136 https://tls.browserleaks.com/json
|
|
113
|
-
nlcurl --stealth --impersonate firefox138 https://example.com
|
|
114
|
-
nlcurl -X POST -d '{"key":"value"}' -H "Content-Type: application/json" https://api.example.com
|
|
66
|
+
return `nlcurl -- HTTP client with browser fingerprint impersonation
|
|
67
|
+
|
|
68
|
+
USAGE:
|
|
69
|
+
nlcurl [OPTIONS] <URL>
|
|
70
|
+
|
|
71
|
+
OPTIONS:
|
|
72
|
+
-X, --request <METHOD> HTTP method (GET, POST, PUT, DELETE, etc.)
|
|
73
|
+
-H, --header <HEADER> Add a request header (Name: Value)
|
|
74
|
+
-d, --data <DATA> Request body (sets method to POST if not specified)
|
|
75
|
+
--data-raw <DATA> Request body without special character processing
|
|
76
|
+
-A, --user-agent <AGENT> Set the User-Agent header
|
|
77
|
+
-o, --output <FILE> Write response body to file
|
|
78
|
+
-I, --head Send HEAD request, show headers only
|
|
79
|
+
-i, --include Include response headers in output
|
|
80
|
+
-v, --verbose Verbose output (request and response details)
|
|
81
|
+
-s, --silent Suppress progress and error messages
|
|
82
|
+
--compressed Request compressed response
|
|
83
|
+
|
|
84
|
+
IMPERSONATION:
|
|
85
|
+
--impersonate <PROFILE> Browser profile (e.g. chrome136, firefox138)
|
|
86
|
+
--stealth Use stealth TLS engine for full fingerprint control
|
|
87
|
+
--ja3 <FINGERPRINT> Custom JA3 fingerprint string
|
|
88
|
+
--akamai <FINGERPRINT> Custom Akamai HTTP/2 fingerprint string
|
|
89
|
+
--list-profiles List all available browser profiles
|
|
90
|
+
|
|
91
|
+
CONNECTION:
|
|
92
|
+
-x, --proxy <URL> Proxy URL (http, socks4, socks5)
|
|
93
|
+
-U, --proxy-user <USER:PASS> Proxy authentication
|
|
94
|
+
-k, --insecure Skip TLS certificate verification
|
|
95
|
+
-L, --location Follow redirects (default)
|
|
96
|
+
--no-location Do not follow redirects
|
|
97
|
+
--max-redirs <NUM> Maximum number of redirects (default: 20)
|
|
98
|
+
-m, --max-time <SECONDS> Maximum request time in seconds
|
|
99
|
+
--http1.1 Force HTTP/1.1
|
|
100
|
+
--http2 Force HTTP/2
|
|
101
|
+
|
|
102
|
+
COOKIES:
|
|
103
|
+
-b, --cookie <DATA> Send cookies (name=value pairs)
|
|
104
|
+
-c, --cookie-jar <FILE> Write received cookies to file
|
|
105
|
+
|
|
106
|
+
META:
|
|
107
|
+
-h, --help Show this help message
|
|
108
|
+
-V, --version Show version
|
|
109
|
+
|
|
110
|
+
EXAMPLES:
|
|
111
|
+
nlcurl https://httpbin.org/get
|
|
112
|
+
nlcurl --impersonate chrome136 https://tls.browserleaks.com/json
|
|
113
|
+
nlcurl --stealth --impersonate firefox138 https://example.com
|
|
114
|
+
nlcurl -X POST -d '{"key":"value"}' -H "Content-Type: application/json" https://api.example.com
|
|
115
115
|
nlcurl -x socks5://127.0.0.1:1080 --impersonate chrome https://ifconfig.me`;
|
|
116
116
|
}
|
|
117
117
|
//# sourceMappingURL=output.js.map
|