jumpy-lion 0.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/dist/browser-controller.d.ts +36 -0
- package/dist/browser-controller.d.ts.map +1 -0
- package/dist/browser-controller.js +84 -0
- package/dist/browser-controller.js.map +1 -0
- package/dist/browser-plugin.d.ts +56 -0
- package/dist/browser-plugin.d.ts.map +1 -0
- package/dist/browser-plugin.js +149 -0
- package/dist/browser-plugin.js.map +1 -0
- package/dist/browser-process.d.ts +10 -0
- package/dist/browser-process.d.ts.map +1 -0
- package/dist/browser-process.js +65 -0
- package/dist/browser-process.js.map +1 -0
- package/dist/browser-profiles/chrome/create.d.ts +5 -0
- package/dist/browser-profiles/chrome/create.d.ts.map +1 -0
- package/dist/browser-profiles/chrome/create.js +22 -0
- package/dist/browser-profiles/chrome/create.js.map +1 -0
- package/dist/browser-profiles/chrome/default.d.ts +175 -0
- package/dist/browser-profiles/chrome/default.d.ts.map +1 -0
- package/dist/browser-profiles/chrome/default.js +175 -0
- package/dist/browser-profiles/chrome/default.js.map +1 -0
- package/dist/browser-profiles/index.d.ts +3 -0
- package/dist/browser-profiles/index.d.ts.map +1 -0
- package/dist/browser-profiles/index.js +3 -0
- package/dist/browser-profiles/index.js.map +1 -0
- package/dist/crawler.d.ts +22 -0
- package/dist/crawler.d.ts.map +1 -0
- package/dist/crawler.js +42 -0
- package/dist/crawler.js.map +1 -0
- package/dist/events.d.ts +3 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +3 -0
- package/dist/events.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/launcher-wrap.d.ts +10 -0
- package/dist/launcher-wrap.d.ts.map +1 -0
- package/dist/launcher-wrap.js +11 -0
- package/dist/launcher-wrap.js.map +1 -0
- package/dist/page.d.ts +79 -0
- package/dist/page.d.ts.map +1 -0
- package/dist/page.js +304 -0
- package/dist/page.js.map +1 -0
- package/dist/proxy/anonymize-proxy.d.ts +4 -0
- package/dist/proxy/anonymize-proxy.d.ts.map +1 -0
- package/dist/proxy/anonymize-proxy.js +35 -0
- package/dist/proxy/anonymize-proxy.js.map +1 -0
- package/dist/proxy/proxy-server.d.ts +2 -0
- package/dist/proxy/proxy-server.d.ts.map +1 -0
- package/dist/proxy/proxy-server.js +13 -0
- package/dist/proxy/proxy-server.js.map +1 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/utils.d.ts +3 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +7 -0
- package/dist/utils.js.map +1 -0
- package/package.json +79 -0
package/dist/page.js
ADDED
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
import { PAGE_CLOSED, PAGE_CREATED } from './events.js';
|
|
3
|
+
export default class CdpPage extends EventEmitter {
|
|
4
|
+
constructor(client) {
|
|
5
|
+
super();
|
|
6
|
+
Object.defineProperty(this, "client", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
configurable: true,
|
|
9
|
+
writable: true,
|
|
10
|
+
value: void 0
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(this, "loadedUrl", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
configurable: true,
|
|
15
|
+
writable: true,
|
|
16
|
+
value: null
|
|
17
|
+
});
|
|
18
|
+
this.client = client;
|
|
19
|
+
this.emit(PAGE_CREATED);
|
|
20
|
+
}
|
|
21
|
+
// @TODO: The enabling of API can cause blocking.
|
|
22
|
+
// We need to discover this more and add options to the crawler.
|
|
23
|
+
static async create(client) {
|
|
24
|
+
const page = new CdpPage(client);
|
|
25
|
+
await page.initialize();
|
|
26
|
+
return page;
|
|
27
|
+
}
|
|
28
|
+
async initialize() {
|
|
29
|
+
const { Page, DOM, Network, Runtime } = this.client;
|
|
30
|
+
await Promise.all([Page.enable(), DOM.enable(), Network.enable(), Runtime.enable()]);
|
|
31
|
+
}
|
|
32
|
+
async url() {
|
|
33
|
+
if (!this.loadedUrl) {
|
|
34
|
+
return await this.evaluate("window.location.href");
|
|
35
|
+
}
|
|
36
|
+
return this.loadedUrl;
|
|
37
|
+
}
|
|
38
|
+
// Navigation method
|
|
39
|
+
async goto(url, options) {
|
|
40
|
+
const { Page, Runtime } = this.client;
|
|
41
|
+
const timeout = options?.timeout ?? 30000;
|
|
42
|
+
await Page.navigate({ url });
|
|
43
|
+
const waitUntil = options?.waitUntil ?? 'load';
|
|
44
|
+
const waitEvents = Array.isArray(waitUntil) ? waitUntil : [waitUntil];
|
|
45
|
+
const eventPromises = waitEvents.map(async (event) => {
|
|
46
|
+
switch (event) {
|
|
47
|
+
case 'load':
|
|
48
|
+
return new Promise((resolve) => Page.loadEventFired(() => resolve()));
|
|
49
|
+
case 'domcontentloaded':
|
|
50
|
+
return new Promise((resolve) => Page.domContentEventFired(() => resolve()));
|
|
51
|
+
default:
|
|
52
|
+
throw new Error(`Unsupported waitUntil event: ${event}`);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
await Promise.race([
|
|
56
|
+
Promise.all(eventPromises),
|
|
57
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Navigation timeout')), timeout)),
|
|
58
|
+
]);
|
|
59
|
+
const { result } = await Runtime.evaluate({ expression: 'window.location.href' });
|
|
60
|
+
this.loadedUrl = result.value;
|
|
61
|
+
}
|
|
62
|
+
// Evaluate method
|
|
63
|
+
async evaluate(pageFunction, ...args) {
|
|
64
|
+
const { Runtime } = this.client;
|
|
65
|
+
let expression;
|
|
66
|
+
if (typeof pageFunction === 'function') {
|
|
67
|
+
const fnStr = pageFunction.toString();
|
|
68
|
+
const argsStr = args.map((a) => JSON.stringify(a)).join(',');
|
|
69
|
+
expression = `(${fnStr})(${argsStr})`;
|
|
70
|
+
}
|
|
71
|
+
else if (typeof pageFunction === 'string') {
|
|
72
|
+
expression = pageFunction;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
throw new Error('First argument to evaluate must be a function or string');
|
|
76
|
+
}
|
|
77
|
+
const { result, exceptionDetails } = await Runtime.evaluate({
|
|
78
|
+
expression,
|
|
79
|
+
awaitPromise: true,
|
|
80
|
+
returnByValue: true,
|
|
81
|
+
});
|
|
82
|
+
if (exceptionDetails) {
|
|
83
|
+
throw new Error(`Evaluation failed: ${exceptionDetails.text}`);
|
|
84
|
+
}
|
|
85
|
+
return result.value;
|
|
86
|
+
}
|
|
87
|
+
// Click method
|
|
88
|
+
async click(selector) {
|
|
89
|
+
await this.waitForSelector(selector);
|
|
90
|
+
const { DOM, Input } = this.client;
|
|
91
|
+
const { nodeId } = await this.getNodeId(selector);
|
|
92
|
+
const { model } = await DOM.getBoxModel({ nodeId });
|
|
93
|
+
if (!model) {
|
|
94
|
+
throw new Error(`Could not get box model for node: ${nodeId}`);
|
|
95
|
+
}
|
|
96
|
+
const x = (model.content[0] + model.content[4]) / 2;
|
|
97
|
+
const y = (model.content[1] + model.content[5]) / 2;
|
|
98
|
+
await Input.dispatchMouseEvent({ type: 'mouseMoved', x, y });
|
|
99
|
+
await Input.dispatchMouseEvent({ type: 'mousePressed', x, y, button: 'left', clickCount: 1 });
|
|
100
|
+
await Input.dispatchMouseEvent({ type: 'mouseReleased', x, y, button: 'left', clickCount: 1 });
|
|
101
|
+
}
|
|
102
|
+
// Type method
|
|
103
|
+
async type(selector, text, options) {
|
|
104
|
+
const { Input } = this.client;
|
|
105
|
+
await this.click(selector);
|
|
106
|
+
const delay = options?.delay ?? 0;
|
|
107
|
+
for (const char of text) {
|
|
108
|
+
await Input.dispatchKeyEvent({ type: 'keyDown', text: char });
|
|
109
|
+
await Input.dispatchKeyEvent({ type: 'keyUp', text: char });
|
|
110
|
+
if (delay > 0) {
|
|
111
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Set viewport
|
|
116
|
+
async setViewport(viewport) {
|
|
117
|
+
const { Emulation } = this.client;
|
|
118
|
+
await Emulation.setDeviceMetricsOverride({
|
|
119
|
+
width: viewport.width,
|
|
120
|
+
height: viewport.height,
|
|
121
|
+
deviceScaleFactor: 1,
|
|
122
|
+
mobile: false,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
// Set User-Agent
|
|
126
|
+
async setUserAgent(userAgent) {
|
|
127
|
+
const { Network } = this.client;
|
|
128
|
+
await Network.setUserAgentOverride({ userAgent });
|
|
129
|
+
}
|
|
130
|
+
// Set extra HTTP headers
|
|
131
|
+
async setExtraHTTPHeaders(headers) {
|
|
132
|
+
const { Network } = this.client;
|
|
133
|
+
await Network.setExtraHTTPHeaders({ headers });
|
|
134
|
+
}
|
|
135
|
+
// Wait for selector
|
|
136
|
+
async waitForSelector(selector, options) {
|
|
137
|
+
const timeout = options?.timeout ?? 30000;
|
|
138
|
+
const pollingInterval = 100;
|
|
139
|
+
const maxAttempts = Math.ceil(timeout / pollingInterval);
|
|
140
|
+
let attempts = 0;
|
|
141
|
+
while (attempts < maxAttempts) {
|
|
142
|
+
const exists = await this.elementExists(selector);
|
|
143
|
+
if (exists) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
await new Promise((resolve) => setTimeout(resolve, pollingInterval));
|
|
147
|
+
attempts++;
|
|
148
|
+
}
|
|
149
|
+
throw new Error(`Timeout waiting for selector: ${selector}`);
|
|
150
|
+
}
|
|
151
|
+
// Wait for response
|
|
152
|
+
async waitForResponse(urlPart, statusCode = 200, timeout = 180000) {
|
|
153
|
+
await this.client.Network.enable(); // Ensure Network monitoring is enabled
|
|
154
|
+
return new Promise((resolve, reject) => {
|
|
155
|
+
let timer;
|
|
156
|
+
const onResponseReceived = async ({ requestId, response }) => {
|
|
157
|
+
if (response.url.includes(urlPart) && response.status === statusCode) {
|
|
158
|
+
clearTimeout(timer);
|
|
159
|
+
try {
|
|
160
|
+
const { body } = await this.client.Network.getResponseBody({ requestId });
|
|
161
|
+
resolve({
|
|
162
|
+
...response,
|
|
163
|
+
body: JSON.parse(body),
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
// Retry logic with exponential backoff
|
|
168
|
+
for (let attempt = 1; attempt <= 3; attempt++) {
|
|
169
|
+
try {
|
|
170
|
+
await this.client.Network.enable();
|
|
171
|
+
await new Promise((resolveTimeout) => setTimeout(resolveTimeout, 1000 * 2 ** attempt)); // Exponential backoff
|
|
172
|
+
const { body } = await this.client.Network.getResponseBody({ requestId });
|
|
173
|
+
resolve({
|
|
174
|
+
...response,
|
|
175
|
+
body: JSON.parse(body),
|
|
176
|
+
});
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
catch (retryErr) {
|
|
180
|
+
if (attempt === 3)
|
|
181
|
+
reject(new Error(`Failed to get response body after ${attempt} attempts`));
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
};
|
|
187
|
+
// @ts-expect-error it exists
|
|
188
|
+
this.client.Network.on('responseReceived', onResponseReceived);
|
|
189
|
+
timer = setTimeout(() => {
|
|
190
|
+
reject(new Error(`Timeout after ${timeout / 1000} seconds`));
|
|
191
|
+
}, timeout);
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
// Screenshot method
|
|
195
|
+
async screenshot(options) {
|
|
196
|
+
const { Page } = this.client;
|
|
197
|
+
if (options?.fullPage) {
|
|
198
|
+
const { contentSize } = await Page.getLayoutMetrics();
|
|
199
|
+
await this.setViewport({ width: contentSize.width, height: contentSize.height });
|
|
200
|
+
}
|
|
201
|
+
const { data } = await Page.captureScreenshot({ format: 'png' });
|
|
202
|
+
const buffer = Buffer.from(data, 'base64');
|
|
203
|
+
if (options?.path) {
|
|
204
|
+
const fs = await import('fs');
|
|
205
|
+
await fs.promises.writeFile(options.path, buffer);
|
|
206
|
+
}
|
|
207
|
+
return buffer;
|
|
208
|
+
}
|
|
209
|
+
// Get page content
|
|
210
|
+
async content() {
|
|
211
|
+
return await this.evaluate(() => document.documentElement.outerHTML);
|
|
212
|
+
}
|
|
213
|
+
// Close method
|
|
214
|
+
async close() {
|
|
215
|
+
const { Page } = this.client;
|
|
216
|
+
await Page.close();
|
|
217
|
+
this.emit(PAGE_CLOSED);
|
|
218
|
+
}
|
|
219
|
+
// Check if element exists
|
|
220
|
+
async elementExists(selector) {
|
|
221
|
+
return await this.evaluate((sel) => !!document.querySelector(sel), selector);
|
|
222
|
+
}
|
|
223
|
+
// Get text content of an element
|
|
224
|
+
async getTextContent(selector) {
|
|
225
|
+
await this.waitForSelector(selector);
|
|
226
|
+
return await this.evaluate((sel) => {
|
|
227
|
+
const element = document.querySelector(sel);
|
|
228
|
+
return element ? element.textContent || '' : '';
|
|
229
|
+
}, selector);
|
|
230
|
+
}
|
|
231
|
+
// Get href attribute of an element
|
|
232
|
+
async getHref(selector) {
|
|
233
|
+
await this.waitForSelector(selector);
|
|
234
|
+
return await this.evaluate((sel) => {
|
|
235
|
+
const element = document.querySelector(sel);
|
|
236
|
+
return element ? element.href : '';
|
|
237
|
+
}, selector);
|
|
238
|
+
}
|
|
239
|
+
// Scroll an element into view
|
|
240
|
+
async scrollIntoView(selector) {
|
|
241
|
+
await this.evaluate((sel) => {
|
|
242
|
+
const element = document.querySelector(sel);
|
|
243
|
+
if (element) {
|
|
244
|
+
element.scrollIntoView({ behavior: 'smooth', block: 'center' });
|
|
245
|
+
}
|
|
246
|
+
}, selector);
|
|
247
|
+
}
|
|
248
|
+
// Block requests matching URL patterns
|
|
249
|
+
async blockRequests(urlPatterns) {
|
|
250
|
+
const { Network } = this.client;
|
|
251
|
+
await Network.enable();
|
|
252
|
+
await Network.setRequestInterception({ patterns: [{ urlPattern: '*' }] });
|
|
253
|
+
Network.on('requestIntercepted', async (params) => {
|
|
254
|
+
const shouldBlock = urlPatterns.some((pattern) => {
|
|
255
|
+
const regex = new RegExp(pattern.replace(/\*/g, '.*'));
|
|
256
|
+
return regex.test(params.request.url);
|
|
257
|
+
});
|
|
258
|
+
if (shouldBlock) {
|
|
259
|
+
await Network.continueInterceptedRequest({
|
|
260
|
+
interceptionId: params.interceptionId,
|
|
261
|
+
errorReason: 'Aborted',
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
await Network.continueInterceptedRequest({ interceptionId: params.interceptionId });
|
|
266
|
+
}
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
// Helper method to get node ID from selector
|
|
270
|
+
async getNodeId(selector) {
|
|
271
|
+
const { DOM } = this.client;
|
|
272
|
+
const { root: { nodeId: documentNodeId } } = await DOM.getDocument();
|
|
273
|
+
const { nodeId } = await DOM.querySelector({ selector, nodeId: documentNodeId });
|
|
274
|
+
if (!nodeId) {
|
|
275
|
+
throw new Error(`No node found for selector: ${selector}`);
|
|
276
|
+
}
|
|
277
|
+
return { nodeId };
|
|
278
|
+
}
|
|
279
|
+
async setCookies(cookies) {
|
|
280
|
+
if (cookies.length === 0) {
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
for (const cookie of cookies) {
|
|
284
|
+
await this.client.Network.setCookie(cookie);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Retrieves all cookies associated with the given URLs or all cookies for the current page if no URLs are provided.
|
|
289
|
+
*
|
|
290
|
+
* @param {string[]} [urls] - An optional array of URLs for which to retrieve cookies.
|
|
291
|
+
* If no URLs are provided, the method will return all cookies associated with the current page.
|
|
292
|
+
*
|
|
293
|
+
* @returns {Promise<Cookie[]>} - A promise that resolves to an array of cookies.
|
|
294
|
+
* Each cookie contains information such as name, value, domain, path, expiration, and flags like httpOnly, secure, etc.
|
|
295
|
+
*
|
|
296
|
+
*
|
|
297
|
+
*/
|
|
298
|
+
async getCookies(urls) {
|
|
299
|
+
const { Network } = this.client;
|
|
300
|
+
const cookiesResult = await Network.getCookies({ urls });
|
|
301
|
+
return cookiesResult.cookies;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=page.js.map
|
package/dist/page.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anonymize-proxy.d.ts","sourceRoot":"","sources":["../../src/proxy/anonymize-proxy.ts"],"names":[],"mappings":"AAEA,KAAK,WAAW,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAIvC,wBAAsB,mBAAmB,CACrC,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,MAAM,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC,CAmC5C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { anonymizeProxy, closeAnonymizedProxy } from 'proxy-chain';
|
|
2
|
+
const noopAsyncFunction = async () => { };
|
|
3
|
+
export async function anonymizeProxySugar(proxyUrl, username, password) {
|
|
4
|
+
// Early return if no proxy URL is provided
|
|
5
|
+
if (!proxyUrl) {
|
|
6
|
+
return [undefined, noopAsyncFunction];
|
|
7
|
+
}
|
|
8
|
+
try {
|
|
9
|
+
const url = new URL(proxyUrl);
|
|
10
|
+
// Set username and password if provided and non-empty
|
|
11
|
+
if (username) {
|
|
12
|
+
url.username = username;
|
|
13
|
+
}
|
|
14
|
+
if (password) {
|
|
15
|
+
url.password = password;
|
|
16
|
+
}
|
|
17
|
+
// Proceed to anonymize if credentials are present
|
|
18
|
+
if (url.username || url.password) {
|
|
19
|
+
const anonymizedUrl = await anonymizeProxy(url.toString());
|
|
20
|
+
return [
|
|
21
|
+
anonymizedUrl,
|
|
22
|
+
async () => {
|
|
23
|
+
await closeAnonymizedProxy(anonymizedUrl, true);
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
// No credentials to anonymize
|
|
28
|
+
return [undefined, noopAsyncFunction];
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
// Handle invalid proxy URL
|
|
32
|
+
return [undefined, noopAsyncFunction];
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=anonymize-proxy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anonymize-proxy.js","sourceRoot":"","sources":["../../src/proxy/anonymize-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAInE,MAAM,iBAAiB,GAAgB,KAAK,IAAI,EAAE,GAAG,CAAC,CAAC;AAEvD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACrC,QAAiB,EACjB,QAAiB,EACjB,QAAiB;IAEjB,2CAA2C;IAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACZ,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE9B,sDAAsD;QACtD,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACX,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC5B,CAAC;QAED,kDAAkD;QAClD,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC/B,MAAM,aAAa,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAE3D,OAAO;gBACH,aAAa;gBACb,KAAK,IAAI,EAAE;oBACP,MAAM,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBACpD,CAAC;aACJ,CAAC;QACN,CAAC;QAED,8BAA8B;QAC9B,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACL,2BAA2B;QAC3B,OAAO,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC1C,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-server.d.ts","sourceRoot":"","sources":["../../src/proxy/proxy-server.ts"],"names":[],"mappings":"AAYA,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,CAG5D"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Server as ProxyChainServer } from 'proxy-chain';
|
|
2
|
+
const server = new ProxyChainServer({
|
|
3
|
+
port: 0,
|
|
4
|
+
});
|
|
5
|
+
server.server.unref();
|
|
6
|
+
const listenPromise = server.listen();
|
|
7
|
+
listenPromise.catch(() => { });
|
|
8
|
+
// https://github.com/microsoft/playwright/blob/2e4722d460b5142267e0e506ca7ea9a259556b5f/packages/playwright-core/src/server/browserContext.ts#L423-L427
|
|
9
|
+
export async function getLocalProxyAddress() {
|
|
10
|
+
await listenPromise;
|
|
11
|
+
return `http://127.0.0.1:${server.port}`;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=proxy-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-server.js","sourceRoot":"","sources":["../../src/proxy/proxy-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC;IAChC,IAAI,EAAE,CAAC;CACV,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AAEtB,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;AACtC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAE/B,wJAAwJ;AACxJ,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACtC,MAAM,aAAa,CAAC;IACpB,OAAO,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC;AAC7C,CAAC"}
|