advanced-tls-client 1.0.0 → 1.0.2
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/index.d.ts +114 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1037 -0
- package/dist/index.js.map +1 -0
- package/package.json +13 -11
- package/readme.md +375 -0
- package/index.ts +0 -1319
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "advanced-tls-client",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
"author": "",
|
|
10
|
-
"license": "MIT",
|
|
11
|
-
"engines": {
|
|
12
|
-
"node": ">=16.0.0"
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"build": "tsc",
|
|
8
|
+
"prepublishOnly": "npm run build"
|
|
13
9
|
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
14
13
|
"dependencies": {
|
|
15
|
-
"
|
|
14
|
+
"typescript": "^5.9.3"
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@types/node": "^25.0.3"
|
|
16
18
|
}
|
|
17
19
|
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
# Advanced TLS Client
|
|
2
|
+
|
|
3
|
+
A powerful Node.js HTTP/2 client with advanced TLS fingerprinting capabilities that mimics real browser behavior to bypass anti-bot detection systems.
|
|
4
|
+
|
|
5
|
+
## Features
|
|
6
|
+
|
|
7
|
+
- 🔒 **Advanced TLS Fingerprinting** - Mimics Chrome, Firefox, and Safari TLS handshakes
|
|
8
|
+
- 🚀 **HTTP/2 Support** - Full HTTP/2 protocol with proper SETTINGS frames and priority
|
|
9
|
+
- 🍪 **Cookie Management** - Automatic cookie jar with domain and path matching
|
|
10
|
+
- 🔄 **Connection Pooling** - Reuses TLS sessions for better performance
|
|
11
|
+
- 🎭 **Multiple Browser Profiles** - Chrome 133/143, Firefox 117, Safari iOS 18
|
|
12
|
+
- 🌐 **Auto Redirect** - Handles 301, 302, 303, 307, 308 redirects
|
|
13
|
+
- 📦 **Auto Decompression** - Supports gzip, brotli, deflate, and zstd
|
|
14
|
+
- 🎯 **JA3 Fingerprints** - Generates JA3 and Akamai fingerprints
|
|
15
|
+
- ⚡ **GREASE Support** - Randomizes TLS extensions for better mimicry
|
|
16
|
+
|
|
17
|
+
## Installation
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npm install advanced-tls-client
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
```javascript
|
|
26
|
+
const { AdvancedTLSClient } = require('advanced-tls-client');
|
|
27
|
+
|
|
28
|
+
// Create client with default Chrome 133 profile
|
|
29
|
+
const client = new AdvancedTLSClient();
|
|
30
|
+
|
|
31
|
+
// Make a request
|
|
32
|
+
(async () => {
|
|
33
|
+
const response = await client.request('https://example.com');
|
|
34
|
+
console.log(response.statusCode); // 200
|
|
35
|
+
console.log(response.text); // HTML content
|
|
36
|
+
console.log(response.headers); // Response headers
|
|
37
|
+
})();
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Browser Profiles
|
|
41
|
+
|
|
42
|
+
### Available Profiles
|
|
43
|
+
|
|
44
|
+
```javascript
|
|
45
|
+
const { AdvancedTLSClient, ProfileRegistry } = require('advanced-tls-client');
|
|
46
|
+
|
|
47
|
+
// Chrome 133 (Windows) - Default
|
|
48
|
+
const client1 = new AdvancedTLSClient('chrome_133');
|
|
49
|
+
|
|
50
|
+
// Chrome 133 with PSK support
|
|
51
|
+
const client2 = new AdvancedTLSClient('chrome_133_psk');
|
|
52
|
+
|
|
53
|
+
// Chrome 143 (Android Mobile)
|
|
54
|
+
const client3 = new AdvancedTLSClient('chrome_mobile_143_android');
|
|
55
|
+
|
|
56
|
+
// Firefox 117 (Windows)
|
|
57
|
+
const client4 = new AdvancedTLSClient('firefox_117');
|
|
58
|
+
|
|
59
|
+
// Safari iOS 18.0
|
|
60
|
+
const client5 = new AdvancedTLSClient('safari_ios_18_0');
|
|
61
|
+
|
|
62
|
+
// Get latest desktop profile
|
|
63
|
+
const client6 = new AdvancedTLSClient(ProfileRegistry.latest.name);
|
|
64
|
+
|
|
65
|
+
// Get latest mobile profile
|
|
66
|
+
const client7 = new AdvancedTLSClient(ProfileRegistry.latestMobile.name);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Request Options
|
|
70
|
+
|
|
71
|
+
```javascript
|
|
72
|
+
const response = await client.request('https://api.example.com/data', {
|
|
73
|
+
method: 'POST',
|
|
74
|
+
headers: {
|
|
75
|
+
'Content-Type': 'application/json',
|
|
76
|
+
'Authorization': 'Bearer token123'
|
|
77
|
+
},
|
|
78
|
+
body: JSON.stringify({ key: 'value' }),
|
|
79
|
+
cookies: {
|
|
80
|
+
session: 'abc123',
|
|
81
|
+
preferences: 'dark_mode'
|
|
82
|
+
},
|
|
83
|
+
followRedirects: true,
|
|
84
|
+
maxRedirects: 5,
|
|
85
|
+
decompress: true,
|
|
86
|
+
timeout: 30000
|
|
87
|
+
});
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Request Options Interface
|
|
91
|
+
|
|
92
|
+
| Option | Type | Default | Description |
|
|
93
|
+
|--------|------|---------|-------------|
|
|
94
|
+
| `method` | string | `'GET'` | HTTP method (GET, POST, PUT, DELETE, etc.) |
|
|
95
|
+
| `headers` | object | `{}` | Custom HTTP headers |
|
|
96
|
+
| `body` | string/Buffer/Readable | - | Request body for POST/PUT requests |
|
|
97
|
+
| `cookies` | object | `{}` | Cookies to send with request |
|
|
98
|
+
| `followRedirects` | boolean | `true` | Auto-follow redirects |
|
|
99
|
+
| `maxRedirects` | number | `5` | Maximum redirect hops |
|
|
100
|
+
| `decompress` | boolean | `true` | Auto-decompress response body |
|
|
101
|
+
| `timeout` | number | `30000` | Request timeout in milliseconds |
|
|
102
|
+
| `stream` | boolean | `false` | Return response as stream |
|
|
103
|
+
|
|
104
|
+
## Response Object
|
|
105
|
+
|
|
106
|
+
```javascript
|
|
107
|
+
const response = await client.request('https://example.com');
|
|
108
|
+
|
|
109
|
+
// Status code
|
|
110
|
+
console.log(response.statusCode); // 200
|
|
111
|
+
|
|
112
|
+
// Headers
|
|
113
|
+
console.log(response.headers);
|
|
114
|
+
// { 'content-type': 'text/html', 'content-length': '1234', ... }
|
|
115
|
+
|
|
116
|
+
// Body as Buffer
|
|
117
|
+
console.log(response.body);
|
|
118
|
+
|
|
119
|
+
// Body as text
|
|
120
|
+
console.log(response.text);
|
|
121
|
+
|
|
122
|
+
// Body as JSON (if content-type is application/json)
|
|
123
|
+
console.log(response.json);
|
|
124
|
+
|
|
125
|
+
// Timing information
|
|
126
|
+
console.log(response.timing);
|
|
127
|
+
// {
|
|
128
|
+
// socket: 0,
|
|
129
|
+
// lookup: 12,
|
|
130
|
+
// connect: 45,
|
|
131
|
+
// secureConnect: 123,
|
|
132
|
+
// response: 234,
|
|
133
|
+
// end: 456,
|
|
134
|
+
// total: 456
|
|
135
|
+
// }
|
|
136
|
+
|
|
137
|
+
// TLS Fingerprints
|
|
138
|
+
console.log(response.fingerprints);
|
|
139
|
+
// {
|
|
140
|
+
// ja3: '771,4865-4866-4867-49195...',
|
|
141
|
+
// ja3Hash: 'cd08e31494f9531f560d64c695473da9',
|
|
142
|
+
// akamai: '1:65536;2:0;4:6291456;6:262144|00|0|m,a,s,p'
|
|
143
|
+
// }
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Cookie Management
|
|
147
|
+
|
|
148
|
+
The client automatically manages cookies across requests:
|
|
149
|
+
|
|
150
|
+
```javascript
|
|
151
|
+
const client = new AdvancedTLSClient();
|
|
152
|
+
|
|
153
|
+
// First request - server sets cookies
|
|
154
|
+
await client.request('https://example.com/login', {
|
|
155
|
+
method: 'POST',
|
|
156
|
+
body: 'username=user&password=pass'
|
|
157
|
+
});
|
|
158
|
+
|
|
159
|
+
// Second request - cookies automatically sent
|
|
160
|
+
const response = await client.request('https://example.com/dashboard');
|
|
161
|
+
// Cookie header is automatically added
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
### Manual Cookie Access
|
|
165
|
+
|
|
166
|
+
```javascript
|
|
167
|
+
// Get cookies for a domain
|
|
168
|
+
const cookies = client.cookieJar.getCookies('example.com', '/', true);
|
|
169
|
+
console.log(cookies); // 'session=abc123; token=xyz789'
|
|
170
|
+
|
|
171
|
+
// Set cookies manually
|
|
172
|
+
client.cookieJar.setCookie('example.com', 'custom', 'value123', {
|
|
173
|
+
path: '/',
|
|
174
|
+
expires: new Date(Date.now() + 86400000), // 1 day
|
|
175
|
+
secure: true,
|
|
176
|
+
httpOnly: true,
|
|
177
|
+
sameSite: 'Lax'
|
|
178
|
+
});
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Advanced Examples
|
|
182
|
+
|
|
183
|
+
### POST Request with JSON
|
|
184
|
+
|
|
185
|
+
```javascript
|
|
186
|
+
const response = await client.request('https://api.example.com/users', {
|
|
187
|
+
method: 'POST',
|
|
188
|
+
headers: {
|
|
189
|
+
'Content-Type': 'application/json'
|
|
190
|
+
},
|
|
191
|
+
body: JSON.stringify({
|
|
192
|
+
name: 'John Doe',
|
|
193
|
+
email: 'john@example.com'
|
|
194
|
+
})
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
console.log(response.json);
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### Form Data Submission
|
|
201
|
+
|
|
202
|
+
```javascript
|
|
203
|
+
const response = await client.request('https://example.com/submit', {
|
|
204
|
+
method: 'POST',
|
|
205
|
+
headers: {
|
|
206
|
+
'Content-Type': 'application/x-www-form-urlencoded'
|
|
207
|
+
},
|
|
208
|
+
body: 'field1=value1&field2=value2'
|
|
209
|
+
});
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Custom Headers
|
|
213
|
+
|
|
214
|
+
```javascript
|
|
215
|
+
const response = await client.request('https://api.example.com/data', {
|
|
216
|
+
headers: {
|
|
217
|
+
'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIs...',
|
|
218
|
+
'X-Custom-Header': 'custom-value',
|
|
219
|
+
'Referer': 'https://example.com/page'
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Handle Redirects Manually
|
|
225
|
+
|
|
226
|
+
```javascript
|
|
227
|
+
const response = await client.request('https://example.com/redirect', {
|
|
228
|
+
followRedirects: false
|
|
229
|
+
});
|
|
230
|
+
|
|
231
|
+
if ([301, 302, 307, 308].includes(response.statusCode)) {
|
|
232
|
+
const location = response.headers['location'];
|
|
233
|
+
console.log('Redirected to:', location);
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Multiple Requests with Session Reuse
|
|
238
|
+
|
|
239
|
+
```javascript
|
|
240
|
+
const client = new AdvancedTLSClient('chrome_133');
|
|
241
|
+
|
|
242
|
+
// Connection is automatically reused
|
|
243
|
+
const response1 = await client.request('https://example.com/page1');
|
|
244
|
+
const response2 = await client.request('https://example.com/page2');
|
|
245
|
+
const response3 = await client.request('https://example.com/page3');
|
|
246
|
+
|
|
247
|
+
// Clean up when done
|
|
248
|
+
client.destroy();
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
## Session Management
|
|
252
|
+
|
|
253
|
+
The client automatically manages TLS sessions and HTTP/2 connections:
|
|
254
|
+
|
|
255
|
+
- **Connection Pooling**: Reuses connections to the same host
|
|
256
|
+
- **Session Cache**: Maintains up to 10 cached sessions
|
|
257
|
+
- **Auto Cleanup**: Removes stale sessions after 5 minutes
|
|
258
|
+
- **Timeout Handling**: Automatic reconnection on timeout
|
|
259
|
+
|
|
260
|
+
```javascript
|
|
261
|
+
const client = new AdvancedTLSClient();
|
|
262
|
+
|
|
263
|
+
// Session is automatically cached
|
|
264
|
+
await client.request('https://example.com/page1');
|
|
265
|
+
|
|
266
|
+
// Reuses the same session
|
|
267
|
+
await client.request('https://example.com/page2');
|
|
268
|
+
|
|
269
|
+
// Manually destroy all sessions
|
|
270
|
+
client.destroy();
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## TLS Fingerprint Details
|
|
274
|
+
|
|
275
|
+
Each profile generates unique TLS and HTTP/2 fingerprints:
|
|
276
|
+
|
|
277
|
+
### Chrome 133 Fingerprint
|
|
278
|
+
- **TLS Version**: 1.3 (with 1.2 fallback)
|
|
279
|
+
- **Cipher Suites**: 16 ciphers with GREASE
|
|
280
|
+
- **Extensions**: 18 extensions including ALPS, encrypted client hello
|
|
281
|
+
- **Supported Groups**: X25519, secp256r1, secp384r1
|
|
282
|
+
- **Signature Algorithms**: 8 modern algorithms
|
|
283
|
+
- **ALPN**: h2, http/1.1
|
|
284
|
+
|
|
285
|
+
### Firefox 117 Fingerprint
|
|
286
|
+
- **TLS Version**: 1.3 (with 1.2 fallback)
|
|
287
|
+
- **Cipher Suites**: 17 ciphers (no GREASE)
|
|
288
|
+
- **Extensions**: 15 extensions
|
|
289
|
+
- **Supported Groups**: 6 groups including X25519Kyber768Draft00
|
|
290
|
+
- **Signature Algorithms**: 11 algorithms including legacy SHA1
|
|
291
|
+
|
|
292
|
+
### Safari iOS 18 Fingerprint
|
|
293
|
+
- **TLS Version**: 1.3 (with 1.2, 1.1, 1.0 fallback)
|
|
294
|
+
- **Cipher Suites**: 21 ciphers with GREASE
|
|
295
|
+
- **Extensions**: 14 extensions
|
|
296
|
+
- **HTTP/2 Settings**: Unique Safari-specific settings
|
|
297
|
+
|
|
298
|
+
## Performance Tips
|
|
299
|
+
|
|
300
|
+
1. **Reuse Client Instance**: Create one client and reuse it for multiple requests
|
|
301
|
+
```javascript
|
|
302
|
+
// ✅ Good - Connection pooling works
|
|
303
|
+
const client = new AdvancedTLSClient();
|
|
304
|
+
await client.request(url1);
|
|
305
|
+
await client.request(url2);
|
|
306
|
+
|
|
307
|
+
// ❌ Bad - Creates new connections each time
|
|
308
|
+
await new AdvancedTLSClient().request(url1);
|
|
309
|
+
await new AdvancedTLSClient().request(url2);
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
2. **Destroy When Done**: Call `destroy()` to clean up resources
|
|
313
|
+
```javascript
|
|
314
|
+
const client = new AdvancedTLSClient();
|
|
315
|
+
// ... make requests ...
|
|
316
|
+
client.destroy(); // Clean up
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
3. **Use Appropriate Profiles**: Choose profiles that match your target
|
|
320
|
+
```javascript
|
|
321
|
+
// For desktop sites
|
|
322
|
+
const desktop = new AdvancedTLSClient('chrome_133');
|
|
323
|
+
|
|
324
|
+
// For mobile sites
|
|
325
|
+
const mobile = new AdvancedTLSClient('chrome_mobile_143_android');
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
## Error Handling
|
|
329
|
+
|
|
330
|
+
```javascript
|
|
331
|
+
const client = new AdvancedTLSClient();
|
|
332
|
+
|
|
333
|
+
try {
|
|
334
|
+
const response = await client.request('https://example.com');
|
|
335
|
+
|
|
336
|
+
if (response.statusCode === 200) {
|
|
337
|
+
console.log('Success:', response.text);
|
|
338
|
+
} else {
|
|
339
|
+
console.log('HTTP Error:', response.statusCode);
|
|
340
|
+
}
|
|
341
|
+
} catch (error) {
|
|
342
|
+
if (error.message.includes('timeout')) {
|
|
343
|
+
console.error('Request timeout');
|
|
344
|
+
} else if (error.message.includes('ENOTFOUND')) {
|
|
345
|
+
console.error('Domain not found');
|
|
346
|
+
} else {
|
|
347
|
+
console.error('Request failed:', error.message);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
## Limitations
|
|
353
|
+
|
|
354
|
+
- Only supports HTTPS (port 443 or custom)
|
|
355
|
+
- Requires Node.js 14+ for HTTP/2 support
|
|
356
|
+
- Some advanced TLS 1.3 features may not work on older OpenSSL versions
|
|
357
|
+
- GREASE values are randomized on each profile creation
|
|
358
|
+
|
|
359
|
+
## Security Notes
|
|
360
|
+
|
|
361
|
+
⚠️ **Important**: This library is designed for legitimate web scraping and testing purposes. Please:
|
|
362
|
+
|
|
363
|
+
- Respect robots.txt and website terms of service
|
|
364
|
+
- Implement rate limiting to avoid overwhelming servers
|
|
365
|
+
- Use responsibly and ethically
|
|
366
|
+
- Be aware that bypassing anti-bot measures may violate terms of service
|
|
367
|
+
|
|
368
|
+
## Requirements
|
|
369
|
+
|
|
370
|
+
- Node.js >= 14.0.0
|
|
371
|
+
- OpenSSL 1.1.1+ (for TLS 1.3 support)
|
|
372
|
+
|
|
373
|
+
## License
|
|
374
|
+
|
|
375
|
+
MIT
|