n8n-nodes-tls-request 1.0.1
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
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# 🌐 TLS Request Node for n8n
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+

|
|
5
|
+
|
|
6
|
+
This node allows you to make HTTP requests with specific TLS Client Hello fingerprints. It allows you to simulate various browser environments (Chrome, Firefox, Safari, iOS, Android) for your requests.
|
|
7
|
+
|
|
8
|
+
It is built on top of the [node-tls-client](https://github.com/Sahil1337/node-tls-client) library, which is a wrapper around [tls-client](https://github.com/bogdanfinn/tls-client).
|
|
9
|
+
|
|
10
|
+
## ✨ Features
|
|
11
|
+
|
|
12
|
+
- **TLS Fingerprinting**: Choose from a wide range of TLS fingerprints:
|
|
13
|
+
- **Desktop**: Chrome (105-120), Firefox (102-117), Safari (macOS), Opera.
|
|
14
|
+
- **Mobile**: Safari iOS (15.5-16.0), Android (OkHttp 4.9-4.10).
|
|
15
|
+
- **Proxy Support**: Connect via HTTP/SOCKS proxies.
|
|
16
|
+
- **Familiar Interface**: Works similarly to the standard HTTP Request node with automatic JSON parsing.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 🚀 Installation
|
|
21
|
+
|
|
22
|
+
### Option 1: Install via n8n Interface (Recommended)
|
|
23
|
+
1. In your n8n instance, go to **Settings** > **Community Nodes**.
|
|
24
|
+
2. Click **Install**.
|
|
25
|
+
3. Enter the package name: `n8n-nodes-tls-request`.
|
|
26
|
+
4. Click **Install**.
|
|
27
|
+
|
|
28
|
+
### Option 2: CLI Installation
|
|
29
|
+
```bash
|
|
30
|
+
npm install n8n-nodes-tls-request
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## 🛠️ Usage
|
|
36
|
+
|
|
37
|
+
1. Search for **"TLS Request"** in your n8n workflow editor.
|
|
38
|
+
2. Add the node to your canvas.
|
|
39
|
+
3. Configure the **Browser ID**, **URL**, and **Method**.
|
|
40
|
+
4. (Optional) Add a proxy connection string.
|
|
41
|
+
|
|
42
|
+
## 🤝 Credits
|
|
43
|
+
This project relies on the excellent work of:
|
|
44
|
+
- [Sahil1337](https://github.com/Sahil1337) (node-tls-client)
|
|
45
|
+
- [Bogdanfinn](https://github.com/bogdanfinn) (tls-client)
|
|
46
|
+
|
|
47
|
+
## 📄 License
|
|
48
|
+
MIT
|
|
@@ -0,0 +1,288 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TlsRequest = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const node_tls_client_1 = require("node-tls-client");
|
|
6
|
+
class TlsRequest {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.description = {
|
|
9
|
+
displayName: 'TLS Request',
|
|
10
|
+
name: 'tlsRequest',
|
|
11
|
+
icon: 'fa:globe',
|
|
12
|
+
group: ['transform'],
|
|
13
|
+
version: 1,
|
|
14
|
+
description: 'Make HTTP requests with browser TLS fingerprints (like noble-tls)',
|
|
15
|
+
defaults: {
|
|
16
|
+
name: 'TLS Request',
|
|
17
|
+
},
|
|
18
|
+
inputs: ['main'],
|
|
19
|
+
outputs: ['main'],
|
|
20
|
+
properties: [
|
|
21
|
+
{
|
|
22
|
+
displayName: 'Method',
|
|
23
|
+
name: 'method',
|
|
24
|
+
type: 'options',
|
|
25
|
+
options: [
|
|
26
|
+
{ name: 'GET', value: 'GET' },
|
|
27
|
+
{ name: 'POST', value: 'POST' },
|
|
28
|
+
{ name: 'PUT', value: 'PUT' },
|
|
29
|
+
{ name: 'DELETE', value: 'DELETE' },
|
|
30
|
+
{ name: 'PATCH', value: 'PATCH' },
|
|
31
|
+
{ name: 'HEAD', value: 'HEAD' },
|
|
32
|
+
],
|
|
33
|
+
default: 'GET',
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
displayName: 'URL',
|
|
37
|
+
name: 'url',
|
|
38
|
+
type: 'string',
|
|
39
|
+
default: '',
|
|
40
|
+
placeholder: 'https://example.com',
|
|
41
|
+
required: true,
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
displayName: 'Browser ID',
|
|
45
|
+
name: 'browserId',
|
|
46
|
+
type: 'options',
|
|
47
|
+
options: [
|
|
48
|
+
// Chrome
|
|
49
|
+
{ name: 'Chrome 120', value: 'chrome_120' },
|
|
50
|
+
{ name: 'Chrome 119', value: 'chrome_119' },
|
|
51
|
+
{ name: 'Chrome 118', value: 'chrome_118' },
|
|
52
|
+
{ name: 'Chrome 117', value: 'chrome_117' },
|
|
53
|
+
{ name: 'Chrome 112', value: 'chrome_112' },
|
|
54
|
+
{ name: 'Chrome 105', value: 'chrome_105' },
|
|
55
|
+
// Firefox
|
|
56
|
+
{ name: 'Firefox 117', value: 'firefox_117' },
|
|
57
|
+
{ name: 'Firefox 110', value: 'firefox_110' },
|
|
58
|
+
{ name: 'Firefox 102', value: 'firefox_102' },
|
|
59
|
+
// Safari (macOS)
|
|
60
|
+
{ name: 'Safari 16.0', value: 'safari_16_0' },
|
|
61
|
+
{ name: 'Safari 15.6.1', value: 'safari_15_6_1' },
|
|
62
|
+
{ name: 'Safari 15.3', value: 'safari_15_3' },
|
|
63
|
+
// Mobile - iOS
|
|
64
|
+
{ name: 'Safari iOS 16.0', value: 'safari_ios_16_0' },
|
|
65
|
+
{ name: 'Safari iOS 15.6', value: 'safari_ios_15_6' },
|
|
66
|
+
{ name: 'Safari iOS 15.5', value: 'safari_ios_15_5' },
|
|
67
|
+
// Mobile - Android (OkHttp)
|
|
68
|
+
{ name: 'Android 13 (OkHttp 4.10)', value: 'okhttp4_android_13' },
|
|
69
|
+
{ name: 'Android 12 (OkHttp 4.9)', value: 'okhttp4_android_12' },
|
|
70
|
+
{ name: 'Android 11 (OkHttp 4.9)', value: 'okhttp4_android_11' },
|
|
71
|
+
{ name: 'Android 10 (OkHttp 4.9)', value: 'okhttp4_android_10' },
|
|
72
|
+
{ name: 'Android 9 (OkHttp 4.9)', value: 'okhttp4_android_9' },
|
|
73
|
+
{ name: 'Android 8 (OkHttp 4.9)', value: 'okhttp4_android_8' },
|
|
74
|
+
{ name: 'Android 7 (OkHttp 4.9)', value: 'okhttp4_android_7' },
|
|
75
|
+
// Opera
|
|
76
|
+
{ name: 'Opera 90', value: 'opera_90' },
|
|
77
|
+
{ name: 'Opera 89', value: 'opera_89' },
|
|
78
|
+
],
|
|
79
|
+
default: 'chrome_120',
|
|
80
|
+
description: 'The browser TLS fingerprint to impersonate',
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
displayName: 'Proxy',
|
|
84
|
+
name: 'proxy',
|
|
85
|
+
type: 'string',
|
|
86
|
+
default: '',
|
|
87
|
+
placeholder: 'http://user:pass@host:port',
|
|
88
|
+
description: 'Proxy connection string',
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
displayName: 'Headers',
|
|
92
|
+
name: 'headers',
|
|
93
|
+
type: 'fixedCollection',
|
|
94
|
+
typeOptions: {
|
|
95
|
+
multipleValues: true,
|
|
96
|
+
},
|
|
97
|
+
placeholder: 'Add Header',
|
|
98
|
+
default: {},
|
|
99
|
+
options: [
|
|
100
|
+
{
|
|
101
|
+
name: 'parameter',
|
|
102
|
+
displayName: 'Header',
|
|
103
|
+
values: [
|
|
104
|
+
{
|
|
105
|
+
displayName: 'Name',
|
|
106
|
+
name: 'name',
|
|
107
|
+
type: 'string',
|
|
108
|
+
default: '',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
displayName: 'Value',
|
|
112
|
+
name: 'value',
|
|
113
|
+
type: 'string',
|
|
114
|
+
default: '',
|
|
115
|
+
},
|
|
116
|
+
],
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
displayName: 'JSON Body',
|
|
122
|
+
name: 'jsonBody',
|
|
123
|
+
type: 'boolean',
|
|
124
|
+
default: true,
|
|
125
|
+
displayOptions: {
|
|
126
|
+
show: {
|
|
127
|
+
method: ['POST', 'PUT', 'PATCH'],
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
description: 'Whether to send the body as JSON',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
displayName: 'Body',
|
|
134
|
+
name: 'body',
|
|
135
|
+
type: 'json',
|
|
136
|
+
default: '{}',
|
|
137
|
+
displayOptions: {
|
|
138
|
+
show: {
|
|
139
|
+
method: ['POST', 'PUT', 'PATCH'],
|
|
140
|
+
jsonBody: [true],
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
description: 'The JSON body to send',
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
displayName: 'Raw Body',
|
|
147
|
+
name: 'rawBody',
|
|
148
|
+
type: 'string',
|
|
149
|
+
default: '',
|
|
150
|
+
displayOptions: {
|
|
151
|
+
show: {
|
|
152
|
+
method: ['POST', 'PUT', 'PATCH'],
|
|
153
|
+
jsonBody: [false],
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
description: 'The raw body to send',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
displayName: 'Follow Redirects',
|
|
160
|
+
name: 'followRedirects',
|
|
161
|
+
type: 'boolean',
|
|
162
|
+
default: true,
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
displayName: 'Timeout (Seconds)',
|
|
166
|
+
name: 'timeout',
|
|
167
|
+
type: 'number',
|
|
168
|
+
default: 30,
|
|
169
|
+
},
|
|
170
|
+
],
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
async execute() {
|
|
174
|
+
const items = this.getInputData();
|
|
175
|
+
const returnData = [];
|
|
176
|
+
for (let i = 0; i < items.length; i++) {
|
|
177
|
+
try {
|
|
178
|
+
const method = this.getNodeParameter('method', i);
|
|
179
|
+
const url = this.getNodeParameter('url', i);
|
|
180
|
+
const browserId = this.getNodeParameter('browserId', i);
|
|
181
|
+
const proxy = this.getNodeParameter('proxy', i);
|
|
182
|
+
const timeout = this.getNodeParameter('timeout', i);
|
|
183
|
+
const followRedirects = this.getNodeParameter('followRedirects', i);
|
|
184
|
+
// Handle Headers
|
|
185
|
+
const headerItems = this.getNodeParameter('headers.parameter', i, []);
|
|
186
|
+
const headers = {};
|
|
187
|
+
for (const item of headerItems) {
|
|
188
|
+
headers[item.name] = item.value;
|
|
189
|
+
}
|
|
190
|
+
// Handle Body
|
|
191
|
+
let body = undefined;
|
|
192
|
+
let isJsonBody = false;
|
|
193
|
+
if (['POST', 'PUT', 'PATCH'].includes(method)) {
|
|
194
|
+
isJsonBody = this.getNodeParameter('jsonBody', i);
|
|
195
|
+
if (isJsonBody) {
|
|
196
|
+
const bodyParam = this.getNodeParameter('body', i);
|
|
197
|
+
if (typeof bodyParam === 'string') {
|
|
198
|
+
try {
|
|
199
|
+
body = JSON.parse(bodyParam);
|
|
200
|
+
}
|
|
201
|
+
catch (e) {
|
|
202
|
+
body = bodyParam;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
else {
|
|
206
|
+
body = bodyParam;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
body = this.getNodeParameter('rawBody', i);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Initialize Node TLS Client Session
|
|
214
|
+
const session = new node_tls_client_1.Session({
|
|
215
|
+
sessionId: `n8n-${Math.random().toString(36).substring(7)}`,
|
|
216
|
+
clientIdentifier: browserId,
|
|
217
|
+
timeout: timeout * 1000,
|
|
218
|
+
proxy: proxy || undefined,
|
|
219
|
+
});
|
|
220
|
+
const requestOptions = {
|
|
221
|
+
headers,
|
|
222
|
+
followRedirects,
|
|
223
|
+
};
|
|
224
|
+
// node-tls-client usually expects the body string/object directly based on implementation
|
|
225
|
+
// but common usage with high-level clients suggests passing it in options
|
|
226
|
+
if (body !== undefined && ['POST', 'PUT', 'PATCH'].includes(method)) {
|
|
227
|
+
requestOptions.body = isJsonBody ? JSON.stringify(body) : body;
|
|
228
|
+
}
|
|
229
|
+
// Execute Request
|
|
230
|
+
let response;
|
|
231
|
+
if (method === 'GET') {
|
|
232
|
+
response = await session.get(url, requestOptions);
|
|
233
|
+
}
|
|
234
|
+
else if (method === 'POST') {
|
|
235
|
+
response = await session.post(url, requestOptions);
|
|
236
|
+
}
|
|
237
|
+
else if (method === 'PUT') {
|
|
238
|
+
response = await session.put(url, requestOptions);
|
|
239
|
+
}
|
|
240
|
+
else if (method === 'PATCH') {
|
|
241
|
+
response = await session.patch(url, requestOptions);
|
|
242
|
+
}
|
|
243
|
+
else if (method === 'DELETE') {
|
|
244
|
+
response = await session.delete(url, requestOptions);
|
|
245
|
+
}
|
|
246
|
+
else if (method === 'HEAD') {
|
|
247
|
+
response = await session.head(url, requestOptions);
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
throw new Error(`Method ${method} not implemented yet`);
|
|
251
|
+
}
|
|
252
|
+
const responseData = {
|
|
253
|
+
status: response.status,
|
|
254
|
+
headers: response.headers,
|
|
255
|
+
data: response.body
|
|
256
|
+
};
|
|
257
|
+
// Try to parse JSON response
|
|
258
|
+
if (typeof responseData.data === 'string') {
|
|
259
|
+
try {
|
|
260
|
+
if (responseData.data.trim().startsWith('{') || responseData.data.trim().startsWith('[')) {
|
|
261
|
+
responseData.data = JSON.parse(responseData.data);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
catch (e) {
|
|
265
|
+
// Keep as string
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
returnData.push({
|
|
269
|
+
json: responseData,
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
if (this.continueOnFail()) {
|
|
274
|
+
returnData.push({
|
|
275
|
+
json: {
|
|
276
|
+
error: error.message,
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
continue;
|
|
280
|
+
}
|
|
281
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error, { itemIndex: i });
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
return [returnData];
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
exports.TlsRequest = TlsRequest;
|
|
288
|
+
//# sourceMappingURL=TlsRequest.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TlsRequest.node.js","sourceRoot":"","sources":["../../../nodes/TlsRequest/TlsRequest.node.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "n8n-nodes-tls-request",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "n8n node for making HTTP requests with custom TLS fingerprints (Chrome, Firefox, Safari) using node-tls-client.",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"n8n-community-node-package"
|
|
7
|
+
],
|
|
8
|
+
"license": "MIT",
|
|
9
|
+
"author": {
|
|
10
|
+
"name": "Antigravity",
|
|
11
|
+
"email": "antigravity@example.com"
|
|
12
|
+
},
|
|
13
|
+
"repository": {
|
|
14
|
+
"type": "git",
|
|
15
|
+
"url": "git+https://github.com/example/n8n-nodes-tls-request.git"
|
|
16
|
+
},
|
|
17
|
+
"main": "index.js",
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"dev": "tsc --watch",
|
|
21
|
+
"lint": "tslint -p tsconfig.json -c tslint.json",
|
|
22
|
+
"prepublishOnly": "npm run build"
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist"
|
|
26
|
+
],
|
|
27
|
+
"n8n": {
|
|
28
|
+
"nodes": [
|
|
29
|
+
"dist/nodes/TlsRequest/TlsRequest.node.js"
|
|
30
|
+
]
|
|
31
|
+
},
|
|
32
|
+
"dependencies": {
|
|
33
|
+
"node-tls-client": "^2.1.0"
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"n8n-workflow": "*",
|
|
37
|
+
"typescript": "^5.0.0",
|
|
38
|
+
"@types/node": "^18.0.0"
|
|
39
|
+
}
|
|
40
|
+
}
|