@roxybrowser/openapi 1.0.5-beta.1 → 1.0.7

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.
Files changed (47) hide show
  1. package/README.md +228 -228
  2. package/lib/index.js +93 -1670
  3. package/lib/index.js.map +1 -1
  4. package/lib/modules/account.d.ts +491 -0
  5. package/lib/modules/account.d.ts.map +1 -0
  6. package/lib/modules/account.js +442 -0
  7. package/lib/modules/account.js.map +1 -0
  8. package/lib/modules/browser.d.ts +3011 -0
  9. package/lib/modules/browser.d.ts.map +1 -0
  10. package/lib/modules/browser.js +1076 -0
  11. package/lib/modules/browser.js.map +1 -0
  12. package/lib/modules/other.d.ts +102 -0
  13. package/lib/modules/other.d.ts.map +1 -0
  14. package/lib/modules/other.js +194 -0
  15. package/lib/modules/other.js.map +1 -0
  16. package/lib/modules/proxy.d.ts +576 -0
  17. package/lib/modules/proxy.d.ts.map +1 -0
  18. package/lib/modules/proxy.js +713 -0
  19. package/lib/modules/proxy.js.map +1 -0
  20. package/lib/types.d.ts +860 -155
  21. package/lib/types.d.ts.map +1 -1
  22. package/lib/types.js +4 -4
  23. package/lib/types.js.map +1 -1
  24. package/lib/utils/error-analyzer.d.ts.map +1 -1
  25. package/lib/utils/error-analyzer.js +17 -15
  26. package/lib/utils/error-analyzer.js.map +1 -1
  27. package/lib/utils/index.d.ts +24 -0
  28. package/lib/utils/index.d.ts.map +1 -0
  29. package/lib/utils/index.js +45 -0
  30. package/lib/utils/index.js.map +1 -0
  31. package/package.json +50 -50
  32. package/lib/browser/browser-creator.d.ts +0 -54
  33. package/lib/browser/browser-creator.d.ts.map +0 -1
  34. package/lib/browser/browser-creator.js +0 -263
  35. package/lib/browser/browser-creator.js.map +0 -1
  36. package/lib/proxy/proxy-manager.d.ts +0 -67
  37. package/lib/proxy/proxy-manager.d.ts.map +0 -1
  38. package/lib/proxy/proxy-manager.js +0 -278
  39. package/lib/proxy/proxy-manager.js.map +0 -1
  40. package/lib/proxy/proxy-validator.d.ts +0 -66
  41. package/lib/proxy/proxy-validator.d.ts.map +0 -1
  42. package/lib/proxy/proxy-validator.js +0 -273
  43. package/lib/proxy/proxy-validator.js.map +0 -1
  44. package/lib/roxy-client.d.ts +0 -117
  45. package/lib/roxy-client.d.ts.map +0 -1
  46. package/lib/roxy-client.js +0 -467
  47. package/lib/roxy-client.js.map +0 -1
@@ -1,263 +0,0 @@
1
- /**
2
- * Browser Creator Service
3
- *
4
- * Handles browser creation with different complexity levels and configuration building
5
- */
6
- import { LATEST_CORE_VERSION, } from '../types.js';
7
- export class BrowserCreator {
8
- /**
9
- * Convert simple parameters to full browser configuration
10
- */
11
- static buildSimpleConfig(params) {
12
- const config = {
13
- workspaceId: params.workspaceId,
14
- };
15
- // Add optional basic fields
16
- if (params.windowName)
17
- config.windowName = params.windowName;
18
- if (params.projectId)
19
- config.projectId = params.projectId;
20
- if (params.windowRemark)
21
- config.windowRemark = params.windowRemark;
22
- // Convert simple proxy parameters to ProxyInfo
23
- if (params.proxyHost || params.proxyPort) {
24
- config.proxyInfo = {
25
- proxyMethod: 'custom',
26
- proxyCategory: params.proxyType || 'HTTP',
27
- protocol: params.proxyType || 'HTTP',
28
- host: params.proxyHost,
29
- port: params.proxyPort,
30
- proxyUserName: params.proxyUserName,
31
- proxyPassword: params.proxyPassword,
32
- ipType: 'IPV4',
33
- };
34
- }
35
- return config;
36
- }
37
- /**
38
- * Convert standard parameters to full browser configuration
39
- */
40
- static buildStandardConfig(params) {
41
- const config = {
42
- workspaceId: params.workspaceId,
43
- };
44
- // Add all standard fields
45
- if (params.windowName)
46
- config.windowName = params.windowName;
47
- if (params.projectId)
48
- config.projectId = params.projectId;
49
- if (params.windowRemark)
50
- config.windowRemark = params.windowRemark;
51
- if (params.os)
52
- config.os = params.os;
53
- if (params.osVersion)
54
- config.osVersion = params.osVersion;
55
- if (params.coreVersion)
56
- config.coreVersion = params.coreVersion;
57
- if (params.defaultOpenUrl)
58
- config.defaultOpenUrl = params.defaultOpenUrl;
59
- // Add proxy configuration
60
- if (params.proxyInfo) {
61
- config.proxyInfo = params.proxyInfo;
62
- }
63
- // Build fingerprint configuration for common settings
64
- if (params.openWidth || params.openHeight || params.language || params.timeZone) {
65
- config.fingerInfo = {};
66
- if (params.openWidth)
67
- config.fingerInfo.openWidth = params.openWidth;
68
- if (params.openHeight)
69
- config.fingerInfo.openHeight = params.openHeight;
70
- if (params.language) {
71
- config.fingerInfo.isLanguageBaseIp = false;
72
- config.fingerInfo.language = params.language;
73
- }
74
- if (params.timeZone) {
75
- config.fingerInfo.isTimeZone = false;
76
- config.fingerInfo.timeZone = params.timeZone;
77
- }
78
- }
79
- return config;
80
- }
81
- /**
82
- * Advanced configuration - pass through as-is
83
- */
84
- static buildAdvancedConfig(params) {
85
- return params;
86
- }
87
- /**
88
- * Generate unique browser name
89
- */
90
- static generateBrowserName(prefix, index) {
91
- const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, -5);
92
- const randomSuffix = Math.random().toString(36).substring(2, 8);
93
- if (prefix && index !== undefined) {
94
- return `${prefix}-${index + 1}-${timestamp}`;
95
- }
96
- else if (prefix) {
97
- return `${prefix}-${timestamp}-${randomSuffix}`;
98
- }
99
- else {
100
- return `Browser-${timestamp}-${randomSuffix}`;
101
- }
102
- }
103
- /**
104
- * Assign proxies from a list to multiple browser configurations
105
- */
106
- static assignProxiesToConfigs(configs, proxyList) {
107
- if (!proxyList.length) {
108
- return configs;
109
- }
110
- return configs.map((config, index) => ({
111
- ...config,
112
- proxyInfo: proxyList[index % proxyList.length], // Round-robin proxy assignment
113
- }));
114
- }
115
- /**
116
- * Validate browser configuration
117
- */
118
- static validateConfig(config) {
119
- const errors = [];
120
- // Required fields
121
- if (!config.workspaceId) {
122
- errors.push('workspaceId is required');
123
- }
124
- // Proxy validation
125
- if (config.proxyInfo) {
126
- const proxy = config.proxyInfo;
127
- if (proxy.proxyCategory !== 'noproxy') {
128
- if (!proxy.host)
129
- errors.push('Proxy host is required when proxy is enabled');
130
- if (!proxy.port)
131
- errors.push('Proxy port is required when proxy is enabled');
132
- }
133
- }
134
- // OS version compatibility
135
- if (config.os && config.osVersion) {
136
- const validVersions = this.getValidOSVersions(config.os);
137
- if (validVersions && !validVersions.includes(config.osVersion)) {
138
- errors.push(`Invalid OS version '${config.osVersion}' for OS '${config.os}'`);
139
- }
140
- }
141
- return {
142
- valid: errors.length === 0,
143
- errors,
144
- };
145
- }
146
- /**
147
- * Get valid OS versions for a given operating system
148
- */
149
- static getValidOSVersions(os) {
150
- const osVersionMap = {
151
- Windows: ['11', '10', '8', '7'],
152
- macOS: [
153
- '15.3.2', '15.3.1', '15.3', '15.2', '15.1', '15.0.1', '15.0',
154
- '14.7.4', '14.7.3', '14.7.2', '14.7.1', '14.7', '14.6.1', '14.6',
155
- '14.5', '14.4.1', '14.4', '14.3.1', '14.3', '14.2.1', '14.2', '14.1',
156
- '13.7.4', '13.7.3', '13.7.2', '13.7.1', '13.7'
157
- ],
158
- Android: ['14', '13', '12', '11', '10', '9'],
159
- IOS: [
160
- '18.2', '18.1', '18.0', '17.0', '16.6', '16.5', '16.4', '16.3', '16.2',
161
- '16.1', '16.0', '15.7', '15.6', '15.5', '15.4', '15.3', '15.2', '15.1',
162
- '15.0', '14.7', '14.6', '14.5', '14.4', '14.3', '14.2', '14.1', '14.0'
163
- ],
164
- Linux: [], // Linux versions are more flexible, skip validation
165
- };
166
- return osVersionMap[os] || null;
167
- }
168
- /**
169
- * Apply smart defaults to configuration
170
- */
171
- static applyDefaults(config) {
172
- const defaultConfig = {
173
- os: 'Windows',
174
- osVersion: '11',
175
- coreVersion: LATEST_CORE_VERSION,
176
- searchEngine: 'Google',
177
- // Default fingerprint settings
178
- fingerInfo: {
179
- isLanguageBaseIp: true,
180
- isDisplayLanguageBaseIp: true,
181
- isTimeZone: true,
182
- position: 1,
183
- isPositionBaseIp: true,
184
- forbidAudio: true,
185
- forbidImage: true,
186
- forbidMedia: true,
187
- openWidth: '1000',
188
- openHeight: '1000',
189
- openBookmarks: false,
190
- positionSwitch: true,
191
- isDisplayName: false,
192
- syncBookmark: false,
193
- syncHistory: false,
194
- syncTab: true,
195
- syncCookie: true,
196
- syncExtensions: false,
197
- syncPassword: true,
198
- syncIndexedDb: false,
199
- syncLocalStorage: false,
200
- clearCacheFile: false,
201
- clearCookie: false,
202
- clearLocalStorage: false,
203
- randomFingerprint: false,
204
- forbidSavePassword: true,
205
- stopOpenNet: false,
206
- stopOpenIP: false,
207
- stopOpenPosition: false,
208
- openWorkbench: 1,
209
- resolutionType: false,
210
- fontType: false,
211
- webRTC: 2,
212
- webGL: true,
213
- webGLInfo: true,
214
- webGpu: 'webgl',
215
- canvas: true,
216
- audioContext: true,
217
- speechVoices: true,
218
- doNotTrack: true,
219
- clientRects: true,
220
- deviceInfo: true,
221
- deviceNameSwitch: true,
222
- macInfo: true,
223
- disableSsl: false,
224
- portScanProtect: true,
225
- useGpu: true,
226
- sandboxPermission: false,
227
- },
228
- // Default proxy settings
229
- proxyInfo: {
230
- proxyMethod: 'custom',
231
- proxyCategory: 'noproxy',
232
- ipType: 'IPV4',
233
- },
234
- };
235
- // Deep merge configuration with defaults
236
- const result = { ...defaultConfig, ...config };
237
- // Merge fingerInfo and proxyInfo specifically
238
- if (defaultConfig.fingerInfo && config.fingerInfo) {
239
- result.fingerInfo = { ...defaultConfig.fingerInfo, ...config.fingerInfo };
240
- }
241
- if (defaultConfig.proxyInfo && config.proxyInfo) {
242
- result.proxyInfo = { ...defaultConfig.proxyInfo, ...config.proxyInfo };
243
- }
244
- return result;
245
- }
246
- /**
247
- * Batch validate multiple configurations
248
- */
249
- static validateConfigs(configs) {
250
- const allErrors = [];
251
- configs.forEach((config, index) => {
252
- const validation = this.validateConfig(config);
253
- if (!validation.valid) {
254
- allErrors.push({ index, errors: validation.errors });
255
- }
256
- });
257
- return {
258
- valid: allErrors.length === 0,
259
- errors: allErrors,
260
- };
261
- }
262
- }
263
- //# sourceMappingURL=browser-creator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-creator.js","sourceRoot":"","sources":["../../src/browser/browser-creator.ts"],"names":[],"mappings":"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"}
@@ -1,67 +0,0 @@
1
- /**
2
- * Proxy Manager Service
3
- *
4
- * Handles proxy configuration, validation, and management for RoxyBrowser
5
- */
6
- import { ProxyInfo, BrowserCreateConfig } from '../types.js';
7
- export interface ProxyValidationResult {
8
- valid: boolean;
9
- errors: string[];
10
- warnings: string[];
11
- }
12
- export interface ProxyTestResult {
13
- success: boolean;
14
- error?: string;
15
- responseTime?: number;
16
- ipAddress?: string;
17
- location?: string;
18
- }
19
- export declare class ProxyManager {
20
- /**
21
- * Validate proxy configuration
22
- */
23
- static validateProxy(proxy: ProxyInfo): ProxyValidationResult;
24
- /**
25
- * Test proxy connection
26
- */
27
- static testProxy(proxy: ProxyInfo): Promise<ProxyTestResult>;
28
- /**
29
- * Create proxy configuration from simple parameters
30
- */
31
- static createSimpleProxy(host: string, port: string, username?: string, password?: string, type?: 'HTTP' | 'HTTPS' | 'SOCKS5'): ProxyInfo;
32
- /**
33
- * Parse proxy URL (format: protocol://username:password@host:port)
34
- */
35
- static parseProxyUrl(proxyUrl: string): ProxyInfo | null;
36
- /**
37
- * Generate proxy list from various formats
38
- */
39
- static parseProxyList(proxyListInput: string | string[]): ProxyInfo[];
40
- /**
41
- * Distribute proxies across multiple browser configurations
42
- */
43
- static distributeProxies(configs: BrowserCreateConfig[], proxies: ProxyInfo[], strategy?: 'round-robin' | 'random'): BrowserCreateConfig[];
44
- /**
45
- * Filter working proxies from a list
46
- */
47
- static filterWorkingProxies(proxies: ProxyInfo[], options?: {
48
- concurrency?: number;
49
- timeout?: number;
50
- retries?: number;
51
- }): Promise<ProxyInfo[]>;
52
- /**
53
- * Get proxy statistics
54
- */
55
- static getProxyStats(proxies: ProxyInfo[]): {
56
- total: number;
57
- byType: Record<string, number>;
58
- withAuth: number;
59
- withoutAuth: number;
60
- };
61
- /**
62
- * Private helper methods
63
- */
64
- private static isValidHost;
65
- private static getDefaultPort;
66
- }
67
- //# sourceMappingURL=proxy-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proxy-manager.d.ts","sourceRoot":"","sources":["../../src/proxy/proxy-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAgB,MAAM,aAAa,CAAC;AAE3E,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,YAAY;IACvB;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,qBAAqB;IAoE7D;;OAEG;WACU,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC;IAsClE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,IAAI,GAAE,MAAM,GAAG,OAAO,GAAG,QAAiB,GACzC,SAAS;IAaZ;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IA+BxD;;OAEG;IACH,MAAM,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EAAE;IAoCrE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CACtB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,OAAO,EAAE,SAAS,EAAE,EACpB,QAAQ,GAAE,aAAa,GAAG,QAAwB,GACjD,mBAAmB,EAAE;IAsBxB;;OAEG;WACU,oBAAoB,CAC/B,OAAO,EAAE,SAAS,EAAE,EACpB,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KACb,GACL,OAAO,CAAC,SAAS,EAAE,CAAC;IA8BvB;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG;QAC1C,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB;IAwBD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAQ1B,OAAO,CAAC,MAAM,CAAC,cAAc;CAQ9B"}
@@ -1,278 +0,0 @@
1
- /**
2
- * Proxy Manager Service
3
- *
4
- * Handles proxy configuration, validation, and management for RoxyBrowser
5
- */
6
- export class ProxyManager {
7
- /**
8
- * Validate proxy configuration
9
- */
10
- static validateProxy(proxy) {
11
- const errors = [];
12
- const warnings = [];
13
- // Basic validation
14
- if (!proxy) {
15
- errors.push('Proxy configuration is required');
16
- return { valid: false, errors, warnings };
17
- }
18
- // Skip validation for no proxy
19
- if (proxy.proxyCategory === 'noproxy') {
20
- return { valid: true, errors: [], warnings: [] };
21
- }
22
- // Required fields when proxy is enabled
23
- if (!proxy.host) {
24
- errors.push('Proxy host is required');
25
- }
26
- else {
27
- // Validate host format
28
- if (!this.isValidHost(proxy.host)) {
29
- errors.push('Invalid proxy host format');
30
- }
31
- }
32
- if (!proxy.port) {
33
- errors.push('Proxy port is required');
34
- }
35
- else {
36
- // Validate port range
37
- const port = parseInt(proxy.port, 10);
38
- if (isNaN(port) || port < 1 || port > 65535) {
39
- errors.push('Proxy port must be between 1 and 65535');
40
- }
41
- }
42
- // Validate proxy type and protocol compatibility
43
- if (proxy.proxyCategory && proxy.protocol) {
44
- if (proxy.proxyCategory !== proxy.protocol) {
45
- warnings.push(`Proxy category (${proxy.proxyCategory}) and protocol (${proxy.protocol}) don't match`);
46
- }
47
- }
48
- // Validate authentication
49
- if (proxy.proxyUserName && !proxy.proxyPassword) {
50
- warnings.push('Proxy username provided but password is missing');
51
- }
52
- if (proxy.proxyPassword && !proxy.proxyUserName) {
53
- warnings.push('Proxy password provided but username is missing');
54
- }
55
- // Validate IP type
56
- if (proxy.ipType && !['IPV4', 'IPV6'].includes(proxy.ipType)) {
57
- errors.push('IP type must be IPV4 or IPV6');
58
- }
59
- // Validate check channel
60
- if (proxy.checkChannel && !['IPRust.io', 'IP-API', 'IP123.in'].includes(proxy.checkChannel)) {
61
- errors.push('Invalid IP check channel');
62
- }
63
- return {
64
- valid: errors.length === 0,
65
- errors,
66
- warnings,
67
- };
68
- }
69
- /**
70
- * Test proxy connection
71
- */
72
- static async testProxy(proxy) {
73
- // Skip test for no proxy
74
- if (proxy.proxyCategory === 'noproxy') {
75
- return { success: true };
76
- }
77
- // Validate first
78
- const validation = this.validateProxy(proxy);
79
- if (!validation.valid) {
80
- return {
81
- success: false,
82
- error: `Proxy validation failed: ${validation.errors.join(', ')}`,
83
- };
84
- }
85
- // Since we can't directly test proxy connection in Node.js without additional dependencies,
86
- // we'll do basic connectivity checks and format validation
87
- try {
88
- const startTime = Date.now();
89
- // Basic format validation passed, assume connection is testable
90
- // In a real implementation, you would use libraries like 'socks' or 'http-proxy-agent'
91
- const responseTime = Date.now() - startTime;
92
- return {
93
- success: true,
94
- responseTime,
95
- ipAddress: 'Test IP (simulated)',
96
- location: 'Test Location (simulated)',
97
- };
98
- }
99
- catch (error) {
100
- return {
101
- success: false,
102
- error: error instanceof Error ? error.message : 'Unknown proxy test error',
103
- };
104
- }
105
- }
106
- /**
107
- * Create proxy configuration from simple parameters
108
- */
109
- static createSimpleProxy(host, port, username, password, type = 'HTTP') {
110
- return {
111
- proxyMethod: 'custom',
112
- proxyCategory: type,
113
- protocol: type,
114
- ipType: 'IPV4',
115
- host,
116
- port,
117
- proxyUserName: username,
118
- proxyPassword: password,
119
- };
120
- }
121
- /**
122
- * Parse proxy URL (format: protocol://username:password@host:port)
123
- */
124
- static parseProxyUrl(proxyUrl) {
125
- try {
126
- const url = new URL(proxyUrl);
127
- const protocolMap = {
128
- 'http:': 'HTTP',
129
- 'https:': 'HTTPS',
130
- 'socks5:': 'SOCKS5',
131
- };
132
- const protocol = protocolMap[url.protocol];
133
- if (!protocol) {
134
- throw new Error(`Unsupported proxy protocol: ${url.protocol}`);
135
- }
136
- return {
137
- proxyMethod: 'custom',
138
- proxyCategory: protocol,
139
- protocol,
140
- ipType: 'IPV4',
141
- host: url.hostname,
142
- port: url.port || this.getDefaultPort(protocol),
143
- proxyUserName: url.username || undefined,
144
- proxyPassword: url.password || undefined,
145
- };
146
- }
147
- catch (error) {
148
- console.error('Failed to parse proxy URL:', error);
149
- return null;
150
- }
151
- }
152
- /**
153
- * Generate proxy list from various formats
154
- */
155
- static parseProxyList(proxyListInput) {
156
- const proxyList = [];
157
- const inputs = Array.isArray(proxyListInput) ? proxyListInput : [proxyListInput];
158
- for (const input of inputs) {
159
- const lines = input.split('\n').map(line => line.trim()).filter(Boolean);
160
- for (const line of lines) {
161
- let proxy = null;
162
- // Try URL format first
163
- if (line.includes('://')) {
164
- proxy = this.parseProxyUrl(line);
165
- }
166
- else {
167
- // Try host:port format
168
- const parts = line.split(':');
169
- if (parts.length >= 2) {
170
- const [host, port, username, password] = parts;
171
- proxy = this.createSimpleProxy(host, port, username, password);
172
- }
173
- }
174
- if (proxy) {
175
- const validation = this.validateProxy(proxy);
176
- if (validation.valid) {
177
- proxyList.push(proxy);
178
- }
179
- else {
180
- console.warn(`Invalid proxy skipped: ${line} - ${validation.errors.join(', ')}`);
181
- }
182
- }
183
- }
184
- }
185
- return proxyList;
186
- }
187
- /**
188
- * Distribute proxies across multiple browser configurations
189
- */
190
- static distributeProxies(configs, proxies, strategy = 'round-robin') {
191
- if (!proxies.length) {
192
- return configs;
193
- }
194
- return configs.map((config, index) => {
195
- let proxy;
196
- if (strategy === 'random') {
197
- proxy = proxies[Math.floor(Math.random() * proxies.length)];
198
- }
199
- else {
200
- // Round-robin
201
- proxy = proxies[index % proxies.length];
202
- }
203
- return {
204
- ...config,
205
- proxyInfo: proxy,
206
- };
207
- });
208
- }
209
- /**
210
- * Filter working proxies from a list
211
- */
212
- static async filterWorkingProxies(proxies, options = {}) {
213
- const { concurrency = 5, timeout = 10000, retries = 1 } = options;
214
- const workingProxies = [];
215
- // Process proxies in batches
216
- for (let i = 0; i < proxies.length; i += concurrency) {
217
- const batch = proxies.slice(i, i + concurrency);
218
- const testPromises = batch.map(async (proxy) => {
219
- for (let attempt = 0; attempt <= retries; attempt++) {
220
- const result = await this.testProxy(proxy);
221
- if (result.success) {
222
- return proxy;
223
- }
224
- // Wait before retry
225
- if (attempt < retries) {
226
- await new Promise(resolve => setTimeout(resolve, 1000));
227
- }
228
- }
229
- return null;
230
- });
231
- const batchResults = await Promise.all(testPromises);
232
- workingProxies.push(...batchResults.filter((proxy) => proxy !== null));
233
- }
234
- return workingProxies;
235
- }
236
- /**
237
- * Get proxy statistics
238
- */
239
- static getProxyStats(proxies) {
240
- const stats = {
241
- total: proxies.length,
242
- byType: {},
243
- withAuth: 0,
244
- withoutAuth: 0,
245
- };
246
- for (const proxy of proxies) {
247
- // Count by type
248
- const type = proxy.proxyCategory || 'unknown';
249
- stats.byType[type] = (stats.byType[type] || 0) + 1;
250
- // Count authentication
251
- if (proxy.proxyUserName && proxy.proxyPassword) {
252
- stats.withAuth++;
253
- }
254
- else {
255
- stats.withoutAuth++;
256
- }
257
- }
258
- return stats;
259
- }
260
- /**
261
- * Private helper methods
262
- */
263
- static isValidHost(host) {
264
- // Basic host validation (IP address or domain name)
265
- const ipRegex = /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;
266
- const domainRegex = /^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
267
- return ipRegex.test(host) || domainRegex.test(host);
268
- }
269
- static getDefaultPort(protocol) {
270
- const defaultPorts = {
271
- HTTP: '8080',
272
- HTTPS: '8080',
273
- SOCKS5: '1080',
274
- };
275
- return defaultPorts[protocol] || '8080';
276
- }
277
- }
278
- //# sourceMappingURL=proxy-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"proxy-manager.js","sourceRoot":"","sources":["../../src/proxy/proxy-manager.ts"],"names":[],"mappings":"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"}