@roxybrowser/openapi 1.0.3 → 1.0.4-beta.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.
@@ -1,324 +0,0 @@
1
- /**
2
- * Browser Template Manager
3
- *
4
- * Provides predefined browser templates for common use cases
5
- */
6
- export class TemplateManager {
7
- static templates = {
8
- gmail: {
9
- name: 'gmail',
10
- description: 'Optimized for Gmail and Google services automation',
11
- defaultConfig: {
12
- windowName: 'Gmail Browser',
13
- os: 'Windows',
14
- osVersion: '11',
15
- coreVersion: '125',
16
- searchEngine: 'Google',
17
- defaultOpenUrl: ['https://gmail.com'],
18
- fingerInfo: {
19
- language: 'en-US',
20
- isLanguageBaseIp: false,
21
- displayLanguage: 'en-US',
22
- isDisplayLanguageBaseIp: false,
23
- openWidth: '1400',
24
- openHeight: '900',
25
- syncCookie: true,
26
- syncPassword: true,
27
- syncTab: true,
28
- clearCacheFile: false,
29
- clearCookie: false,
30
- randomFingerprint: true,
31
- forbidSavePassword: false, // Allow password saving for Gmail
32
- webRTC: 1, // Real WebRTC for Google services
33
- canvas: true,
34
- audioContext: true,
35
- doNotTrack: false, // Don't use DNT for better compatibility
36
- },
37
- },
38
- },
39
- facebook: {
40
- name: 'facebook',
41
- description: 'Optimized for Facebook and Meta platform automation',
42
- defaultConfig: {
43
- windowName: 'Facebook Browser',
44
- os: 'Windows',
45
- osVersion: '11',
46
- coreVersion: '125',
47
- searchEngine: 'Google',
48
- defaultOpenUrl: ['https://facebook.com'],
49
- fingerInfo: {
50
- language: 'en-US',
51
- isLanguageBaseIp: false,
52
- displayLanguage: 'en-US',
53
- isDisplayLanguageBaseIp: false,
54
- openWidth: '1366',
55
- openHeight: '768',
56
- syncCookie: true,
57
- syncPassword: true,
58
- syncTab: true,
59
- clearCacheFile: false,
60
- clearCookie: false,
61
- randomFingerprint: true,
62
- forbidSavePassword: false,
63
- webRTC: 1, // Real WebRTC for video calls
64
- canvas: true,
65
- audioContext: true,
66
- deviceInfo: true, // Allow media devices
67
- forbidAudio: false, // Allow audio for Facebook features
68
- forbidMedia: false, // Allow video for Facebook features
69
- doNotTrack: false,
70
- },
71
- },
72
- },
73
- ecommerce: {
74
- name: 'ecommerce',
75
- description: 'Optimized for e-commerce platforms and shopping automation',
76
- defaultConfig: {
77
- windowName: 'Shopping Browser',
78
- os: 'Windows',
79
- osVersion: '11',
80
- coreVersion: '125',
81
- searchEngine: 'Google',
82
- defaultOpenUrl: ['https://amazon.com'],
83
- fingerInfo: {
84
- language: 'en-US',
85
- isLanguageBaseIp: false,
86
- displayLanguage: 'en-US',
87
- isDisplayLanguageBaseIp: false,
88
- openWidth: '1920',
89
- openHeight: '1080',
90
- syncCookie: true,
91
- syncPassword: true,
92
- syncTab: false, // Don't sync tabs for privacy
93
- clearCacheFile: true, // Clear cache for fresh sessions
94
- clearCookie: false,
95
- randomFingerprint: true,
96
- forbidSavePassword: true, // Security for shopping
97
- webRTC: 2, // Disable WebRTC for privacy
98
- canvas: true,
99
- audioContext: true,
100
- deviceInfo: false, // Limit device fingerprinting
101
- doNotTrack: true, // Enable DNT for privacy
102
- portScanProtect: true, // Extra security
103
- },
104
- },
105
- },
106
- social_media: {
107
- name: 'social_media',
108
- description: 'General social media platforms automation',
109
- defaultConfig: {
110
- windowName: 'Social Media Browser',
111
- os: 'Windows',
112
- osVersion: '11',
113
- coreVersion: '125',
114
- searchEngine: 'Google',
115
- defaultOpenUrl: ['https://twitter.com'],
116
- fingerInfo: {
117
- language: 'en-US',
118
- isLanguageBaseIp: true, // Follow IP for better geo-targeting
119
- displayLanguage: 'en-US',
120
- isDisplayLanguageBaseIp: true,
121
- isTimeZone: true, // Follow IP timezone
122
- openWidth: '1200',
123
- openHeight: '800',
124
- syncCookie: true,
125
- syncPassword: false, // Don't save passwords
126
- syncTab: true,
127
- clearCacheFile: false,
128
- clearCookie: false,
129
- randomFingerprint: true,
130
- forbidSavePassword: true,
131
- webRTC: 0, // Replace WebRTC
132
- canvas: true,
133
- audioContext: true,
134
- deviceInfo: true,
135
- forbidAudio: false,
136
- forbidMedia: false,
137
- doNotTrack: false,
138
- },
139
- },
140
- },
141
- general: {
142
- name: 'general',
143
- description: 'General-purpose browser configuration',
144
- defaultConfig: {
145
- windowName: 'General Browser',
146
- os: 'Windows',
147
- osVersion: '11',
148
- coreVersion: '125',
149
- searchEngine: 'Google',
150
- fingerInfo: {
151
- language: 'en-US',
152
- isLanguageBaseIp: true,
153
- displayLanguage: 'en-US',
154
- isDisplayLanguageBaseIp: true,
155
- isTimeZone: true,
156
- openWidth: '1024',
157
- openHeight: '768',
158
- syncCookie: true,
159
- syncPassword: true,
160
- syncTab: true,
161
- clearCacheFile: false,
162
- clearCookie: false,
163
- randomFingerprint: false, // Keep consistent fingerprint
164
- forbidSavePassword: true,
165
- webRTC: 2, // Disable for privacy
166
- canvas: true,
167
- audioContext: true,
168
- deviceInfo: true,
169
- doNotTrack: true,
170
- },
171
- },
172
- },
173
- custom: {
174
- name: 'custom',
175
- description: 'Empty template for custom configuration',
176
- defaultConfig: {
177
- windowName: 'Custom Browser',
178
- os: 'Windows',
179
- osVersion: '11',
180
- coreVersion: '125',
181
- },
182
- },
183
- };
184
- /**
185
- * Get available template names and descriptions
186
- */
187
- static getAvailableTemplates() {
188
- return Object.values(this.templates).map(template => ({
189
- name: template.name,
190
- description: template.description,
191
- }));
192
- }
193
- /**
194
- * Get template configuration by name
195
- */
196
- static getTemplate(templateName) {
197
- return this.templates[templateName] || null;
198
- }
199
- /**
200
- * Get template configuration merged with custom overrides
201
- */
202
- static getTemplateConfig(templateName, customConfig) {
203
- const template = this.getTemplate(templateName);
204
- if (!template) {
205
- throw new Error(`Template '${templateName}' not found`);
206
- }
207
- if (!customConfig) {
208
- return template.defaultConfig;
209
- }
210
- // Deep merge template config with custom config
211
- const mergedConfig = { ...template.defaultConfig, ...customConfig };
212
- // Special handling for nested objects
213
- if (template.defaultConfig.fingerInfo && customConfig.fingerInfo) {
214
- mergedConfig.fingerInfo = {
215
- ...template.defaultConfig.fingerInfo,
216
- ...customConfig.fingerInfo,
217
- };
218
- }
219
- if (template.defaultConfig.proxyInfo && customConfig.proxyInfo) {
220
- mergedConfig.proxyInfo = {
221
- ...template.defaultConfig.proxyInfo,
222
- ...customConfig.proxyInfo,
223
- };
224
- }
225
- if (template.defaultConfig.windowPlatformList && customConfig.windowPlatformList) {
226
- mergedConfig.windowPlatformList = [
227
- ...(template.defaultConfig.windowPlatformList || []),
228
- ...(customConfig.windowPlatformList || []),
229
- ];
230
- }
231
- return mergedConfig;
232
- }
233
- /**
234
- * Create a custom template
235
- */
236
- static createCustomTemplate(name, description, config) {
237
- return {
238
- name: 'custom',
239
- description,
240
- defaultConfig: config,
241
- };
242
- }
243
- /**
244
- * Get template optimized for specific proxy configuration
245
- */
246
- static getTemplateForProxy(templateName, proxyInfo) {
247
- const baseConfig = this.getTemplateConfig(templateName);
248
- // Apply proxy-specific optimizations
249
- const optimizedConfig = { ...baseConfig };
250
- // If using proxy, adjust some settings for better anonymity
251
- if (proxyInfo.proxyCategory !== 'noproxy') {
252
- optimizedConfig.fingerInfo = {
253
- ...optimizedConfig.fingerInfo,
254
- isLanguageBaseIp: true, // Follow proxy IP for language
255
- isDisplayLanguageBaseIp: true,
256
- isTimeZone: true, // Follow proxy timezone
257
- isPositionBaseIp: true, // Follow proxy geolocation
258
- webRTC: 2, // Disable WebRTC to prevent IP leaks
259
- doNotTrack: true, // Enable DNT for privacy
260
- };
261
- }
262
- optimizedConfig.proxyInfo = proxyInfo;
263
- return optimizedConfig;
264
- }
265
- /**
266
- * Get template optimized for specific country/region
267
- */
268
- static getTemplateForRegion(templateName, countryCode, language) {
269
- const baseConfig = this.getTemplateConfig(templateName);
270
- const optimizedConfig = { ...baseConfig };
271
- // Regional optimizations
272
- const regionalSettings = this.getRegionalSettings(countryCode);
273
- optimizedConfig.fingerInfo = {
274
- ...optimizedConfig.fingerInfo,
275
- isLanguageBaseIp: false,
276
- language: language || regionalSettings.language,
277
- isDisplayLanguageBaseIp: false,
278
- displayLanguage: language || regionalSettings.language,
279
- isTimeZone: false,
280
- timeZone: regionalSettings.timeZone,
281
- };
282
- return optimizedConfig;
283
- }
284
- /**
285
- * Get regional settings by country code
286
- */
287
- static getRegionalSettings(countryCode) {
288
- const regionalMap = {
289
- US: { language: 'en-US', timeZone: 'GMT-5:00 America/New_York' },
290
- CN: { language: 'zh-CN', timeZone: 'GMT+8:00 Asia/Shanghai' },
291
- JP: { language: 'ja-JP', timeZone: 'GMT+9:00 Asia/Tokyo' },
292
- KR: { language: 'ko-KR', timeZone: 'GMT+9:00 Asia/Seoul' },
293
- DE: { language: 'de-DE', timeZone: 'GMT+1:00 Europe/Berlin' },
294
- FR: { language: 'fr-FR', timeZone: 'GMT+1:00 Europe/Paris' },
295
- GB: { language: 'en-GB', timeZone: 'GMT+0:00 Europe/London' },
296
- RU: { language: 'ru-RU', timeZone: 'GMT+3:00 Europe/Moscow' },
297
- BR: { language: 'pt-BR', timeZone: 'GMT-3:00 America/Sao_Paulo' },
298
- IN: { language: 'hi-IN', timeZone: 'GMT+5:30 Asia/Kolkata' },
299
- // Add more regions as needed
300
- };
301
- return regionalMap[countryCode.toUpperCase()] || regionalMap.US;
302
- }
303
- /**
304
- * Validate template configuration
305
- */
306
- static validateTemplate(template) {
307
- const errors = [];
308
- if (!template.name) {
309
- errors.push('Template name is required');
310
- }
311
- if (!template.description) {
312
- errors.push('Template description is required');
313
- }
314
- if (!template.defaultConfig) {
315
- errors.push('Template default configuration is required');
316
- }
317
- // Additional validation can be added here
318
- return {
319
- valid: errors.length === 0,
320
- errors,
321
- };
322
- }
323
- }
324
- //# sourceMappingURL=template-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"template-manager.js","sourceRoot":"","sources":["../../src/browser/template-manager.ts"],"names":[],"mappings":"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"}