proxy-rotator-js 1.1.0 → 1.2.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.
Files changed (50) hide show
  1. package/README.md +12 -0
  2. package/dist/cjs/index.cjs +12 -0
  3. package/dist/cjs/index.cjs.map +1 -0
  4. package/{src/Proxy.js → dist/cjs/src/Proxy.cjs} +20 -31
  5. package/dist/cjs/src/Proxy.cjs.map +1 -0
  6. package/dist/cjs/src/ProxyRotator.cjs +241 -0
  7. package/dist/cjs/src/ProxyRotator.cjs.map +1 -0
  8. package/dist/cjs/src/Queue.cjs +64 -0
  9. package/dist/cjs/src/Queue.cjs.map +1 -0
  10. package/dist/cjs/src/utils/makeRequestWithProxy.cjs +24 -0
  11. package/dist/cjs/src/utils/makeRequestWithProxy.cjs.map +1 -0
  12. package/dist/index.d.ts +8 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +5 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/src/Proxy.d.ts +40 -0
  17. package/dist/src/Proxy.d.ts.map +1 -0
  18. package/dist/src/Proxy.js +93 -0
  19. package/dist/src/Proxy.js.map +1 -0
  20. package/dist/src/ProxyRotator.d.ts +52 -0
  21. package/dist/src/ProxyRotator.d.ts.map +1 -0
  22. package/dist/src/ProxyRotator.js +235 -0
  23. package/dist/src/ProxyRotator.js.map +1 -0
  24. package/dist/src/Queue.d.ts +16 -0
  25. package/dist/src/Queue.d.ts.map +1 -0
  26. package/dist/src/Queue.js +61 -0
  27. package/dist/src/Queue.js.map +1 -0
  28. package/dist/src/utils/makeRequestWithProxy.d.ts +9 -0
  29. package/dist/src/utils/makeRequestWithProxy.d.ts.map +1 -0
  30. package/dist/src/utils/makeRequestWithProxy.js +18 -0
  31. package/dist/src/utils/makeRequestWithProxy.js.map +1 -0
  32. package/dist/test/test.d.ts +2 -0
  33. package/dist/test/test.d.ts.map +1 -0
  34. package/dist/test/test.js +122 -0
  35. package/dist/test/test.js.map +1 -0
  36. package/dist/test/test_proxies.d.ts +2 -0
  37. package/dist/test/test_proxies.d.ts.map +1 -0
  38. package/dist/test/test_proxies.js +20 -0
  39. package/dist/test/test_proxies.js.map +1 -0
  40. package/package.json +23 -4
  41. package/assets/http_proxies_with_commas.txt +0 -1
  42. package/assets/http_proxies_with_newlines.txt +0 -8
  43. package/assets/http_proxies_with_spaces.txt +0 -1
  44. package/index.js +0 -2
  45. package/src/ProxyRotator.js +0 -239
  46. package/src/Queue.js +0 -61
  47. package/src/utils/makeRequestWithProxy.js +0 -21
  48. package/test/options.js +0 -32
  49. package/test/test.js +0 -204
  50. package/test/test_proxies.js +0 -22
package/README.md CHANGED
@@ -100,6 +100,18 @@ const proxyRotator = new ProxyRotator(proxies, options);
100
100
  - assume_aliveness: Specifies whether to assume all proxies are alive when first added instead of 'new'. Default: false.
101
101
  - check_on_next: Specifies whether to check if proxies are alive when they are added to the queue. Default: false.
102
102
 
103
+ ## Testing your Proxies
104
+
105
+ ```javascript
106
+ import ProxyRotator from 'proxy-rotator-js'
107
+
108
+ let proxies = ['proxy1', 'proxy2', 'proxy3']
109
+
110
+ let rotator = new ProxyRotator(proxies, options={})
111
+
112
+ rotator.test()
113
+ ```
114
+
103
115
  ## Getting Started
104
116
 
105
117
  To use the ProxyRotator class in your JavaScript project, follow these steps:
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.Proxy = exports.ProxyRotator = void 0;
7
+ const ProxyRotator_js_1 = __importDefault(require("./src/ProxyRotator.cjs"));
8
+ exports.ProxyRotator = ProxyRotator_js_1.default;
9
+ const Proxy_js_1 = __importDefault(require("./src/Proxy.cjs"));
10
+ exports.Proxy = Proxy_js_1.default;
11
+ exports.default = ProxyRotator_js_1.default;
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;;;;AAAA,4EAAiD;AAIxC,uBAJF,yBAAY,CAIE;AAHrB,8DAAmC;AAGZ,gBAHhB,kBAAK,CAGgB;AAD5B,kBAAe,yBAAY,CAAC"}
@@ -1,31 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
1
3
  class Proxy {
2
4
  constructor(proxy, protocol = null, assumeAlive = false) {
3
- // if proxy string starts with protocol
4
- if( proxy.includes('://') ){
5
+ if (proxy.includes('://')) {
5
6
  this.protocol = proxy.split('://')[0];
6
7
  this.ip = proxy.split('://')[1].split(':')[0];
7
8
  this.host = this.ip;
8
9
  this.port = proxy.split('://')[1].split(':')[1];
9
- } else { // if proxy string does not start with protocol
10
+ }
11
+ else {
10
12
  this.protocol = protocol;
11
13
  this.ip = proxy.split(':')[0];
12
14
  this.host = this.ip;
13
15
  this.port = proxy.split(':')[1];
14
16
  }
15
- // the proxy
16
- this.proxy = `${(this.protocol)? this.protocol+'://' : ''}${this.ip}:${this.port}`;
17
- // status can be 'new', 'alive', 'dead'
18
- this.status = (assumeAlive)? 'alive' : 'new';
17
+ this.proxy = `${this.protocol ? this.protocol + '://' : ''}${this.ip}:${this.port}`;
18
+ this.status = assumeAlive ? 'alive' : 'new';
19
19
  this.changeTimeStamp = Date.now();
20
20
  }
21
- // method to return as string
22
- proxy() {
23
- return `${(this.protocol)? this.protocol+'://' : ''}${this.ip}:${this.port}`;
24
- }
25
21
  toString() {
26
- return `${(this.protocol)? this.protocol+'://' : ''}${this.ip}:${this.port}`;
22
+ return `${this.protocol ? this.protocol + '://' : ''}${this.ip}:${this.port}`;
27
23
  }
28
- // method to return as obj
29
24
  get() {
30
25
  return {
31
26
  protocol: this.protocol,
@@ -34,7 +29,6 @@ class Proxy {
34
29
  port: this.port,
35
30
  };
36
31
  }
37
- // method to return as obj
38
32
  obj() {
39
33
  return {
40
34
  protocol: this.protocol,
@@ -42,27 +36,26 @@ class Proxy {
42
36
  host: this.host,
43
37
  port: this.port,
44
38
  status: this.status,
45
- changeTimeStamp: this.changeTimeStamp
46
- }
39
+ changeTimeStamp: this.changeTimeStamp,
40
+ };
47
41
  }
48
- // mark proxy as dead
49
42
  kill() {
50
43
  this.status = 'dead';
51
44
  this.changeTimeStamp = Date.now();
52
45
  }
53
46
  setDead() {
54
- this.status = 'dead'
47
+ this.status = 'dead';
55
48
  this.changeTimeStamp = Date.now();
56
49
  }
57
- setAlive(){
58
- this.status = 'alive'
50
+ setAlive() {
51
+ this.status = 'alive';
59
52
  this.changeTimeStamp = Date.now();
60
53
  }
61
- setNew() {
62
- this.status = 'new'
54
+ setNew() {
55
+ this.status = 'new';
63
56
  this.changeTimeStamp = Date.now();
64
57
  }
65
- isDead() {
58
+ isDead() {
66
59
  return this.status === 'dead';
67
60
  }
68
61
  isAlive() {
@@ -79,13 +72,9 @@ class Proxy {
79
72
  this.status = 'new';
80
73
  this.changeTimeStamp = Date.now();
81
74
  }
82
- status() {
83
- return this.status;
84
- }
85
75
  equals(proxy) {
86
- if (typeof proxy === 'string')
87
- proxy = new Proxy(proxy);
88
- return (this.ip === proxy.ip && this.port === proxy.port);
76
+ const other = typeof proxy === 'string' ? new Proxy(proxy) : proxy;
77
+ return this.ip === other.ip && this.port === other.port;
89
78
  }
90
79
  timeSinceStatusChange() {
91
80
  return Date.now() - this.changeTimeStamp;
@@ -103,5 +92,5 @@ class Proxy {
103
92
  return this.protocol;
104
93
  }
105
94
  }
106
-
107
- export default Proxy;
95
+ exports.default = Proxy;
96
+ //# sourceMappingURL=Proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Proxy.js","sourceRoot":"","sources":["../../../src/Proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,241 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const fs_1 = __importDefault(require("fs"));
7
+ const path_1 = __importDefault(require("path"));
8
+ const Queue_js_1 = __importDefault(require("./Queue.cjs"));
9
+ const Proxy_js_1 = __importDefault(require("./Proxy.cjs"));
10
+ const makeRequestWithProxy_js_1 = __importDefault(require("./utils/makeRequestWithProxy.cjs"));
11
+ class ProxyRotator {
12
+ constructor(proxies, options = {}) {
13
+ this.graveyard = [];
14
+ this.test = this.test_proxies;
15
+ this.pool = new Queue_js_1.default();
16
+ const { returnAs, revive_timer, shuffle, protocol, assume_aliveness, check_on_next, } = options;
17
+ this.revive_timer = revive_timer ?? 1000 * 60 * 30;
18
+ this.returnAs = returnAs ? this._handleReturnAsInput(returnAs) ?? 'string' : 'string';
19
+ this.protocol = protocol ?? null;
20
+ this.shuffle = shuffle ?? false;
21
+ this.assume_aliveness = assume_aliveness ?? false;
22
+ this.check_on_next = check_on_next ?? false;
23
+ if (proxies == null) {
24
+ // no proxies
25
+ }
26
+ else if (typeof proxies === 'string') {
27
+ this._processOne(proxies);
28
+ }
29
+ else if (this._isArray(proxies)) {
30
+ for (const item of proxies)
31
+ this._processOne(item);
32
+ }
33
+ if (this.shuffle) {
34
+ const shuffled = this._shuffleArray(this.pool.toArray());
35
+ this.pool = new Queue_js_1.default();
36
+ shuffled.forEach((p) => this.pool.enqueue(p));
37
+ }
38
+ }
39
+ getGraveyard() {
40
+ return this.graveyard.map((p) => p.proxy);
41
+ }
42
+ getGraveyardSize() {
43
+ return this.graveyard.length;
44
+ }
45
+ getPool() {
46
+ return this.pool.toArray().map((p) => p.proxy);
47
+ }
48
+ getPoolSize() {
49
+ return this.pool.size;
50
+ }
51
+ add(proxies) {
52
+ if (this._isArray(proxies)) {
53
+ for (const proxy of proxies)
54
+ this._add(proxy);
55
+ }
56
+ else {
57
+ this._add(proxies);
58
+ }
59
+ }
60
+ /** Parse a file of proxies (newline-, space-, or comma-separated) and add each to the pool. */
61
+ add_file(filename) {
62
+ const parsed = this._parseFile(filename);
63
+ parsed.forEach((p) => this._add(p));
64
+ }
65
+ _add(proxy) {
66
+ const p = new Proxy_js_1.default(proxy, this.protocol, this.assume_aliveness);
67
+ this.pool.enqueue(p);
68
+ }
69
+ /** Treat a string as either a file path (add all proxies from file) or a single proxy "ip:port" / "protocol://ip:port". */
70
+ _processOne(item) {
71
+ if (this._isFilePath(item)) {
72
+ this.add_file(item);
73
+ }
74
+ else {
75
+ this._add(item);
76
+ }
77
+ }
78
+ /** True if the string is an existing file path. */
79
+ _isFilePath(s) {
80
+ try {
81
+ const resolved = path_1.default.resolve(s);
82
+ return fs_1.default.existsSync(resolved) && fs_1.default.statSync(resolved).isFile();
83
+ }
84
+ catch {
85
+ return false;
86
+ }
87
+ }
88
+ remove(proxy) {
89
+ if (this._isArray(proxy)) {
90
+ for (const p of proxy)
91
+ this._remove(p);
92
+ }
93
+ else {
94
+ this._remove(proxy);
95
+ }
96
+ }
97
+ _remove(proxy) {
98
+ this.pool.toArray().forEach((p, i) => {
99
+ if (p.equals(proxy))
100
+ this.pool.removeAt(i);
101
+ });
102
+ }
103
+ getAlive() {
104
+ const proxies = this.pool.toArray();
105
+ for (const proxy of proxies) {
106
+ if (proxy.isAlive())
107
+ return proxy.proxy;
108
+ }
109
+ return undefined;
110
+ }
111
+ setAlive(proxy) {
112
+ const proxies = this.pool.toArray();
113
+ for (const p of proxies) {
114
+ if (p.equals(proxy)) {
115
+ p.setAlive();
116
+ return;
117
+ }
118
+ }
119
+ for (const p of this.graveyard) {
120
+ if (p.equals(proxy)) {
121
+ this.resurect(p);
122
+ return;
123
+ }
124
+ }
125
+ }
126
+ resurect(proxy) {
127
+ const p = this.graveyard.find((x) => x.equals(proxy));
128
+ if (!p)
129
+ return;
130
+ this.graveyard = this.graveyard.filter((x) => !x.equals(proxy));
131
+ p.setNew();
132
+ this.pool.enqueue(p);
133
+ }
134
+ setDead(proxy) {
135
+ this.pool.toArray().forEach((p, i) => {
136
+ if (p.equals(proxy)) {
137
+ p.setDead();
138
+ this.pool.removeAt(i);
139
+ this.graveyard.push(p);
140
+ }
141
+ });
142
+ setTimeout(() => this.resurect(proxy), this.revive_timer);
143
+ }
144
+ kill(proxy) {
145
+ this.setDead(proxy);
146
+ }
147
+ next(options = {}) {
148
+ let { returnAs } = options;
149
+ if (this.check_on_next)
150
+ this._resurection();
151
+ if (this.pool.size === 0)
152
+ return null;
153
+ const proxy = this.pool.dequeue();
154
+ this.pool.enqueue(proxy);
155
+ const resolvedReturnAs = returnAs
156
+ ? this._handleReturnAsInput(returnAs)
157
+ : this.returnAs;
158
+ if (resolvedReturnAs === 'string')
159
+ return proxy.toString();
160
+ if (resolvedReturnAs === 'object')
161
+ return proxy.obj();
162
+ return null;
163
+ }
164
+ _shuffleArray(array) {
165
+ for (let i = array.length - 1; i > 0; i--) {
166
+ const j = Math.floor(Math.random() * (i + 1));
167
+ const temp = array[i];
168
+ array[i] = array[j];
169
+ array[j] = temp;
170
+ }
171
+ return array;
172
+ }
173
+ _handleReturnAsInput(proxyType) {
174
+ if (typeof proxyType === 'string') {
175
+ proxyType = proxyType.toLowerCase();
176
+ if (proxyType === 'str')
177
+ proxyType = 'string';
178
+ if (proxyType === 'obj')
179
+ proxyType = 'object';
180
+ if (proxyType !== 'string' && proxyType !== 'object') {
181
+ console.error('proxyType must be either "string" or "object"');
182
+ return null;
183
+ }
184
+ return proxyType;
185
+ }
186
+ return null;
187
+ }
188
+ _parseFile(filename) {
189
+ const str = fs_1.default.readFileSync(filename, 'utf8');
190
+ let strList = str.split('\n').filter((s) => s.length > 0);
191
+ if (strList.length === 1)
192
+ strList = str.split(' ');
193
+ if (strList.length === 1)
194
+ strList = str.split(',');
195
+ strList = strList
196
+ .map((s) => s.replace(',', ''))
197
+ .map((s) => s.trim())
198
+ .filter((s) => s.length > 0);
199
+ return strList;
200
+ }
201
+ _isArray(value) {
202
+ return (!!value &&
203
+ typeof value === 'object' &&
204
+ value.constructor === Array);
205
+ }
206
+ _resurection() {
207
+ for (const proxy of this.graveyard) {
208
+ if (proxy.isDead() &&
209
+ proxy.timeSinceStatusChange() >= this.revive_timer) {
210
+ this.resurect(proxy);
211
+ }
212
+ }
213
+ }
214
+ async test_proxies() {
215
+ const proxies = this.pool.toArray().map((p) => {
216
+ const parts = p.proxy.split(':');
217
+ return { host: parts[0], port: parts[1] };
218
+ });
219
+ console.log('--- Testing Proxies ---');
220
+ let workingCount = 0;
221
+ let notWorkingCount = 0;
222
+ for (const proxy of proxies) {
223
+ console.log(`Testing proxy ${proxy.host}:${proxy.port}...`);
224
+ const response = await (0, makeRequestWithProxy_js_1.default)(proxy);
225
+ if (response?.ip === proxy.host) {
226
+ console.log(`Proxy ${proxy.host}:${proxy.port} is working.`);
227
+ workingCount++;
228
+ }
229
+ else {
230
+ console.log(`Proxy ${proxy.host}:${proxy.port} is not working.`);
231
+ notWorkingCount++;
232
+ }
233
+ }
234
+ console.log('--- Statistics ---');
235
+ console.log(`Total proxies: ${proxies.length}`);
236
+ console.log(`Working proxies: ${workingCount}`);
237
+ console.log(`Not working proxies: ${notWorkingCount}`);
238
+ }
239
+ }
240
+ exports.default = ProxyRotator;
241
+ //# sourceMappingURL=ProxyRotator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProxyRotator.js","sourceRoot":"","sources":["../../../src/ProxyRotator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class Queue {
4
+ constructor() {
5
+ this.items = {};
6
+ this.frontIndex = 0;
7
+ this.backIndex = 0;
8
+ }
9
+ enqueue(item) {
10
+ this.items[this.backIndex] = item;
11
+ this.backIndex++;
12
+ return item;
13
+ }
14
+ dequeue() {
15
+ const item = this.items[this.frontIndex];
16
+ delete this.items[this.frontIndex];
17
+ this.frontIndex++;
18
+ return item;
19
+ }
20
+ remove(index) {
21
+ if (index < this.frontIndex || index >= this.backIndex) {
22
+ return 'Invalid index';
23
+ }
24
+ const item = this.items[index];
25
+ for (let i = index; i < this.backIndex; i++) {
26
+ this.items[i] = this.items[i + 1];
27
+ }
28
+ delete this.items[this.backIndex - 1];
29
+ this.backIndex--;
30
+ return item;
31
+ }
32
+ /** Remove item at position (0 = first in queue). */
33
+ removeAt(position) {
34
+ if (position < 0 || position >= this.size) {
35
+ return 'Invalid index';
36
+ }
37
+ return this.remove(this.frontIndex + position);
38
+ }
39
+ peek() {
40
+ return this.items[this.frontIndex];
41
+ }
42
+ printQueue() {
43
+ return this.items;
44
+ }
45
+ toArray() {
46
+ const arr = [];
47
+ for (let i = this.frontIndex; i < this.backIndex; i++) {
48
+ arr.push(this.items[i]);
49
+ }
50
+ return arr;
51
+ }
52
+ toObject() {
53
+ const obj = {};
54
+ for (let i = this.frontIndex; i < this.backIndex; i++) {
55
+ obj[i] = this.items[i];
56
+ }
57
+ return obj;
58
+ }
59
+ get size() {
60
+ return this.backIndex - this.frontIndex;
61
+ }
62
+ }
63
+ exports.default = Queue;
64
+ //# sourceMappingURL=Queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Queue.js","sourceRoot":"","sources":["../../../src/Queue.ts"],"names":[],"mappings":";;AAAA,MAAqB,KAAK;IAA1B;QACU,UAAK,GAAsB,EAAE,CAAC;QAC9B,eAAU,GAAG,CAAC,CAAC;QACf,cAAS,GAAG,CAAC,CAAC;IA+DxB,CAAC;IA7DC,OAAO,CAAC,IAAO;QACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvD,OAAO,eAAe,CAAC;QACzB,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oDAAoD;IACpD,QAAQ,CAAC,QAAgB;QACvB,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1C,OAAO,eAAe,CAAC;QACzB,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,CAAC;IACjD,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,OAAO;QACL,MAAM,GAAG,GAAQ,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,QAAQ;QACN,MAAM,GAAG,GAAsB,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;YACtD,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;IAC1C,CAAC;CACF;AAlED,wBAkEC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = makeRequestWithProxy;
7
+ const axios_1 = __importDefault(require("axios"));
8
+ async function makeRequestWithProxy(proxy) {
9
+ try {
10
+ const response = await axios_1.default.get('https://api.ipify.org?format=json', {
11
+ proxy: {
12
+ host: proxy.host,
13
+ port: Number(proxy.port),
14
+ protocol: 'http',
15
+ },
16
+ });
17
+ console.log(response.data);
18
+ return response.data;
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ }
24
+ //# sourceMappingURL=makeRequestWithProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeRequestWithProxy.js","sourceRoot":"","sources":["../../../../src/utils/makeRequestWithProxy.ts"],"names":[],"mappings":";;;;;AAQA,uCAgBC;AAxBD,kDAA0B;AAQX,KAAK,UAAU,oBAAoB,CAChD,KAAkB;IAElB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAAC,mCAAmC,EAAE;YACpE,KAAK,EAAE;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;gBACxB,QAAQ,EAAE,MAAM;aACjB;SACF,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,QAAQ,CAAC,IAAsB,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,8 @@
1
+ import ProxyRotator from './src/ProxyRotator.js';
2
+ import Proxy from './src/Proxy.js';
3
+ export default ProxyRotator;
4
+ export { ProxyRotator, Proxy };
5
+ export type { ProxyRotatorOptions, ReturnAs } from './src/ProxyRotator.js';
6
+ export type { ProxyStatus, ProxyInfo, ProxyObj } from './src/Proxy.js';
7
+ export type { ProxyConfig } from './src/utils/makeRequestWithProxy.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAEnC,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;AAE/B,YAAY,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AACvE,YAAY,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ import ProxyRotator from './src/ProxyRotator.js';
2
+ import Proxy from './src/Proxy.js';
3
+ export default ProxyRotator;
4
+ export { ProxyRotator, Proxy };
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,uBAAuB,CAAC;AACjD,OAAO,KAAK,MAAM,gBAAgB,CAAC;AAEnC,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC"}
@@ -0,0 +1,40 @@
1
+ export type ProxyStatus = 'new' | 'alive' | 'dead';
2
+ export interface ProxyInfo {
3
+ protocol: string | null;
4
+ ip: string;
5
+ host: string;
6
+ port: string;
7
+ }
8
+ export interface ProxyObj extends ProxyInfo {
9
+ status: ProxyStatus;
10
+ changeTimeStamp: number;
11
+ }
12
+ export default class Proxy {
13
+ readonly protocol: string | null;
14
+ readonly ip: string;
15
+ readonly host: string;
16
+ readonly port: string;
17
+ readonly proxy: string;
18
+ status: ProxyStatus;
19
+ changeTimeStamp: number;
20
+ constructor(proxy: string, protocol?: string | null, assumeAlive?: boolean);
21
+ toString(): string;
22
+ get(): ProxyInfo;
23
+ obj(): ProxyObj;
24
+ kill(): void;
25
+ setDead(): void;
26
+ setAlive(): void;
27
+ setNew(): void;
28
+ isDead(): boolean;
29
+ isAlive(): boolean;
30
+ isNew(): boolean;
31
+ revive(): void;
32
+ reset(): void;
33
+ equals(proxy: string | Proxy): boolean;
34
+ timeSinceStatusChange(): number;
35
+ print(): void;
36
+ getIp(): string;
37
+ getPort(): string;
38
+ getProtocol(): string | null;
39
+ }
40
+ //# sourceMappingURL=Proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Proxy.d.ts","sourceRoot":"","sources":["../../src/Proxy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnD,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,QAAS,SAAQ,SAAS;IACzC,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,OAAO,KAAK;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,WAAW,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;gBAGtB,KAAK,EAAE,MAAM,EACb,QAAQ,GAAE,MAAM,GAAG,IAAW,EAC9B,WAAW,GAAE,OAAe;IAkB9B,QAAQ,IAAI,MAAM;IAIlB,GAAG,IAAI,SAAS;IAShB,GAAG,IAAI,QAAQ;IAWf,IAAI,IAAI,IAAI;IAKZ,OAAO,IAAI,IAAI;IAKf,QAAQ,IAAI,IAAI;IAKhB,MAAM,IAAI,IAAI;IAKd,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,OAAO;IAIlB,KAAK,IAAI,OAAO;IAIhB,MAAM,IAAI,IAAI;IAKd,KAAK,IAAI,IAAI;IAKb,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,GAAG,OAAO;IAKtC,qBAAqB,IAAI,MAAM;IAI/B,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,MAAM;IAIf,OAAO,IAAI,MAAM;IAIjB,WAAW,IAAI,MAAM,GAAG,IAAI;CAG7B"}
@@ -0,0 +1,93 @@
1
+ export default class Proxy {
2
+ constructor(proxy, protocol = null, assumeAlive = false) {
3
+ if (proxy.includes('://')) {
4
+ this.protocol = proxy.split('://')[0];
5
+ this.ip = proxy.split('://')[1].split(':')[0];
6
+ this.host = this.ip;
7
+ this.port = proxy.split('://')[1].split(':')[1];
8
+ }
9
+ else {
10
+ this.protocol = protocol;
11
+ this.ip = proxy.split(':')[0];
12
+ this.host = this.ip;
13
+ this.port = proxy.split(':')[1];
14
+ }
15
+ this.proxy = `${this.protocol ? this.protocol + '://' : ''}${this.ip}:${this.port}`;
16
+ this.status = assumeAlive ? 'alive' : 'new';
17
+ this.changeTimeStamp = Date.now();
18
+ }
19
+ toString() {
20
+ return `${this.protocol ? this.protocol + '://' : ''}${this.ip}:${this.port}`;
21
+ }
22
+ get() {
23
+ return {
24
+ protocol: this.protocol,
25
+ ip: this.ip,
26
+ host: this.host,
27
+ port: this.port,
28
+ };
29
+ }
30
+ obj() {
31
+ return {
32
+ protocol: this.protocol,
33
+ ip: this.ip,
34
+ host: this.host,
35
+ port: this.port,
36
+ status: this.status,
37
+ changeTimeStamp: this.changeTimeStamp,
38
+ };
39
+ }
40
+ kill() {
41
+ this.status = 'dead';
42
+ this.changeTimeStamp = Date.now();
43
+ }
44
+ setDead() {
45
+ this.status = 'dead';
46
+ this.changeTimeStamp = Date.now();
47
+ }
48
+ setAlive() {
49
+ this.status = 'alive';
50
+ this.changeTimeStamp = Date.now();
51
+ }
52
+ setNew() {
53
+ this.status = 'new';
54
+ this.changeTimeStamp = Date.now();
55
+ }
56
+ isDead() {
57
+ return this.status === 'dead';
58
+ }
59
+ isAlive() {
60
+ return this.status === 'alive';
61
+ }
62
+ isNew() {
63
+ return this.status === 'new';
64
+ }
65
+ revive() {
66
+ this.status = 'alive';
67
+ this.changeTimeStamp = Date.now();
68
+ }
69
+ reset() {
70
+ this.status = 'new';
71
+ this.changeTimeStamp = Date.now();
72
+ }
73
+ equals(proxy) {
74
+ const other = typeof proxy === 'string' ? new Proxy(proxy) : proxy;
75
+ return this.ip === other.ip && this.port === other.port;
76
+ }
77
+ timeSinceStatusChange() {
78
+ return Date.now() - this.changeTimeStamp;
79
+ }
80
+ print() {
81
+ console.log(this.get());
82
+ }
83
+ getIp() {
84
+ return this.ip;
85
+ }
86
+ getPort() {
87
+ return this.port;
88
+ }
89
+ getProtocol() {
90
+ return this.protocol;
91
+ }
92
+ }
93
+ //# sourceMappingURL=Proxy.js.map