@2captcha/captcha-solver 1.3.0 → 1.3.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/.github/workflows/publish-to-npm.yml +30 -0
- package/LICENSE +20 -20
- package/README.md +854 -762
- package/dist/index.d.ts +2 -2
- package/dist/index.js +8 -8
- package/dist/structs/2captcha.d.ts +1267 -1104
- package/dist/structs/2captcha.d.ts.map +1 -1
- package/dist/structs/2captcha.js +1874 -1620
- package/dist/structs/2captchaError.d.ts +5 -5
- package/dist/structs/2captchaError.js +275 -275
- package/dist/structs/2captchaServer.d.ts +35 -35
- package/dist/structs/2captchaServer.js +91 -91
- package/dist/structs/constants/constants.d.ts +14 -14
- package/dist/structs/constants/constants.js +25 -25
- package/dist/structs/providers/providers.d.ts +5 -5
- package/dist/structs/providers/providers.js +20 -20
- package/dist/utils/checkCaptchaParams.d.ts +15 -15
- package/dist/utils/checkCaptchaParams.d.ts.map +1 -1
- package/dist/utils/checkCaptchaParams.js +185 -165
- package/dist/utils/fetch.d.ts +3 -3
- package/dist/utils/fetch.js +6 -6
- package/dist/utils/generic.d.ts +20 -20
- package/dist/utils/generic.js +47 -47
- package/dist/utils/renameParams.d.ts +11 -11
- package/dist/utils/renameParams.js +50 -50
- package/package.json +76 -63
- package/tsconfig.json +70 -70
|
@@ -1,165 +1,185 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// Captcha methods for which parameter checking is available
|
|
4
|
-
const supportedMethods = ["userrecaptcha", "hcaptcha", "geetest", "geetest_v4", "yandex", "funcaptcha", "lemin", "amazon_waf",
|
|
5
|
-
"turnstile", "base64", "capy", "datadome", "cybersiara", "mt_captcha", "bounding_box", 'friendly_captcha', 'grid',
|
|
6
|
-
'textcaptcha', 'canvas', 'rotatecaptcha', 'keycaptcha', 'cutcaptcha', 'tencent', 'atb_captcha', 'audio'];
|
|
7
|
-
// Names of required fields that must be contained in the parameters captcha
|
|
8
|
-
const recaptchaRequiredFields = ['pageurl', 'googlekey'];
|
|
9
|
-
const hcaptchaRequiredFields = ['pageurl', 'sitekey'];
|
|
10
|
-
const geetestRequiredFields = ['pageurl', 'gt', 'challenge'];
|
|
11
|
-
const geetestV4RequiredFields = ['pageurl', 'captcha_id'];
|
|
12
|
-
const yandexSmartRequiredFields = ['pageurl', 'sitekey'];
|
|
13
|
-
const funCaptchaRequiredFields = ['pageurl', 'publickey'];
|
|
14
|
-
const leminRequiredFields = ['pageurl', 'div_id', 'captcha_id'];
|
|
15
|
-
const amazonWafRequiredFields = ['pageurl', 'context', 'iv', 'sitekey'];
|
|
16
|
-
const turnstileRequiredFields = ['pageurl', 'sitekey'];
|
|
17
|
-
// `base64RequiredFields` for Normal Captcha and Coordinates captcha
|
|
18
|
-
const base64RequiredFields = ['body'];
|
|
19
|
-
const capyPuzzleRequiredFields = ['captchakey'];
|
|
20
|
-
const dataDomeRequiredFields = ['pageurl', 'captcha_url', 'userAgent', 'proxy', 'proxytype'];
|
|
21
|
-
const cyberSiARARequiredFields = ['pageurl', 'master_url_id', 'userAgent'];
|
|
22
|
-
const mtCaptchaRequiredFields = ['pageurl', 'sitekey'];
|
|
23
|
-
const boundingBoxRequiredFields = ['image']; // and textinstructions or imginstructions
|
|
24
|
-
const friendlyCaptchaFields = ['pageurl', 'sitekey'];
|
|
25
|
-
const gridRequiredFields = ['body']; // and textinstructions or imginstructions
|
|
26
|
-
const textCaptchaRequiredFields = ['textcaptcha'];
|
|
27
|
-
const canvasRequiredFields = ['body']; // and textinstructions or imginstructions
|
|
28
|
-
const rotateRequiredFields = ['body'];
|
|
29
|
-
const keycaptchaRequiredFields = ['pageurl', 's_s_c_user_id', 's_s_c_session_id', 's_s_c_web_server_sign', 's_s_c_web_server_sign2'];
|
|
30
|
-
const cutcaptchaRequiredFields = ['pageurl', 'misery_key', 'api_key'];
|
|
31
|
-
const tencentRequiredFields = ['pageurl', 'app_id'];
|
|
32
|
-
const atbCaptchaRequiredFields = ['pageurl', 'app_id', 'api_server'];
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// Captcha methods for which parameter checking is available
|
|
4
|
+
const supportedMethods = ["userrecaptcha", "hcaptcha", "geetest", "geetest_v4", "yandex", "funcaptcha", "lemin", "amazon_waf",
|
|
5
|
+
"turnstile", "base64", "capy", "datadome", "cybersiara", "mt_captcha", "bounding_box", 'friendly_captcha', 'grid',
|
|
6
|
+
'textcaptcha', 'canvas', 'rotatecaptcha', 'keycaptcha', 'cutcaptcha', 'tencent', 'atb_captcha', 'prosopo', 'captchafox', 'vkimage', 'vkcaptcha', 'temu', 'audio'];
|
|
7
|
+
// Names of required fields that must be contained in the parameters captcha
|
|
8
|
+
const recaptchaRequiredFields = ['pageurl', 'googlekey'];
|
|
9
|
+
const hcaptchaRequiredFields = ['pageurl', 'sitekey'];
|
|
10
|
+
const geetestRequiredFields = ['pageurl', 'gt', 'challenge'];
|
|
11
|
+
const geetestV4RequiredFields = ['pageurl', 'captcha_id'];
|
|
12
|
+
const yandexSmartRequiredFields = ['pageurl', 'sitekey'];
|
|
13
|
+
const funCaptchaRequiredFields = ['pageurl', 'publickey'];
|
|
14
|
+
const leminRequiredFields = ['pageurl', 'div_id', 'captcha_id'];
|
|
15
|
+
const amazonWafRequiredFields = ['pageurl', 'context', 'iv', 'sitekey'];
|
|
16
|
+
const turnstileRequiredFields = ['pageurl', 'sitekey'];
|
|
17
|
+
// `base64RequiredFields` for Normal Captcha and Coordinates captcha
|
|
18
|
+
const base64RequiredFields = ['body'];
|
|
19
|
+
const capyPuzzleRequiredFields = ['captchakey'];
|
|
20
|
+
const dataDomeRequiredFields = ['pageurl', 'captcha_url', 'userAgent', 'proxy', 'proxytype'];
|
|
21
|
+
const cyberSiARARequiredFields = ['pageurl', 'master_url_id', 'userAgent'];
|
|
22
|
+
const mtCaptchaRequiredFields = ['pageurl', 'sitekey'];
|
|
23
|
+
const boundingBoxRequiredFields = ['image']; // and textinstructions or imginstructions
|
|
24
|
+
const friendlyCaptchaFields = ['pageurl', 'sitekey'];
|
|
25
|
+
const gridRequiredFields = ['body']; // and textinstructions or imginstructions
|
|
26
|
+
const textCaptchaRequiredFields = ['textcaptcha'];
|
|
27
|
+
const canvasRequiredFields = ['body']; // and textinstructions or imginstructions
|
|
28
|
+
const rotateRequiredFields = ['body'];
|
|
29
|
+
const keycaptchaRequiredFields = ['pageurl', 's_s_c_user_id', 's_s_c_session_id', 's_s_c_web_server_sign', 's_s_c_web_server_sign2'];
|
|
30
|
+
const cutcaptchaRequiredFields = ['pageurl', 'misery_key', 'api_key'];
|
|
31
|
+
const tencentRequiredFields = ['pageurl', 'app_id'];
|
|
32
|
+
const atbCaptchaRequiredFields = ['pageurl', 'app_id', 'api_server'];
|
|
33
|
+
const prosopoRequiredFields = ['pageurl', 'sitekey'];
|
|
34
|
+
const captchaFoxRequiredFields = ['pageurl', 'sitekey', 'userAgent', 'proxy', 'proxytype'];
|
|
35
|
+
const vkimageRequiredFields = ['body', 'steps'];
|
|
36
|
+
const vkcaptchaRequiredFields = ['redirect_uri', 'userAgent', 'proxy', 'proxytype'];
|
|
37
|
+
const temuRequiredFields = ['body', 'part1', 'part2', 'part3'];
|
|
38
|
+
const audioRequiredFields = ['body', 'lang'];
|
|
39
|
+
/**
|
|
40
|
+
* Getting required arguments for a captcha.
|
|
41
|
+
*
|
|
42
|
+
* @param {string} method method for solving captcha.
|
|
43
|
+
* @returns {Array} An array containing the required arguments for this captcha
|
|
44
|
+
*/
|
|
45
|
+
const getRequiredFildsArr = (method) => {
|
|
46
|
+
let requiredFieldsArr = ['pageurl'];
|
|
47
|
+
switch (method) {
|
|
48
|
+
case "userrecaptcha":
|
|
49
|
+
requiredFieldsArr = recaptchaRequiredFields;
|
|
50
|
+
break;
|
|
51
|
+
case "hcaptcha":
|
|
52
|
+
requiredFieldsArr = hcaptchaRequiredFields;
|
|
53
|
+
break;
|
|
54
|
+
case "geetest":
|
|
55
|
+
requiredFieldsArr = geetestRequiredFields;
|
|
56
|
+
break;
|
|
57
|
+
case "geetest_v4":
|
|
58
|
+
requiredFieldsArr = geetestV4RequiredFields;
|
|
59
|
+
break;
|
|
60
|
+
case "yandex":
|
|
61
|
+
requiredFieldsArr = yandexSmartRequiredFields;
|
|
62
|
+
break;
|
|
63
|
+
case "funcaptcha":
|
|
64
|
+
requiredFieldsArr = funCaptchaRequiredFields;
|
|
65
|
+
break;
|
|
66
|
+
case "lemin":
|
|
67
|
+
requiredFieldsArr = leminRequiredFields;
|
|
68
|
+
break;
|
|
69
|
+
case "amazon_waf":
|
|
70
|
+
requiredFieldsArr = amazonWafRequiredFields;
|
|
71
|
+
break;
|
|
72
|
+
case "turnstile":
|
|
73
|
+
requiredFieldsArr = turnstileRequiredFields;
|
|
74
|
+
break;
|
|
75
|
+
case "base64":
|
|
76
|
+
requiredFieldsArr = base64RequiredFields;
|
|
77
|
+
break;
|
|
78
|
+
case "grid":
|
|
79
|
+
requiredFieldsArr = gridRequiredFields;
|
|
80
|
+
break;
|
|
81
|
+
case "capy":
|
|
82
|
+
requiredFieldsArr = capyPuzzleRequiredFields;
|
|
83
|
+
break;
|
|
84
|
+
case "datadome":
|
|
85
|
+
requiredFieldsArr = dataDomeRequiredFields;
|
|
86
|
+
break;
|
|
87
|
+
case "cybersiara":
|
|
88
|
+
requiredFieldsArr = cyberSiARARequiredFields;
|
|
89
|
+
break;
|
|
90
|
+
case "mt_captcha":
|
|
91
|
+
requiredFieldsArr = mtCaptchaRequiredFields;
|
|
92
|
+
break;
|
|
93
|
+
case "bounding_box":
|
|
94
|
+
requiredFieldsArr = boundingBoxRequiredFields;
|
|
95
|
+
break;
|
|
96
|
+
case "friendly_captcha":
|
|
97
|
+
requiredFieldsArr = friendlyCaptchaFields;
|
|
98
|
+
break;
|
|
99
|
+
case "textcaptcha":
|
|
100
|
+
requiredFieldsArr = textCaptchaRequiredFields;
|
|
101
|
+
break;
|
|
102
|
+
case "canvas":
|
|
103
|
+
requiredFieldsArr = canvasRequiredFields;
|
|
104
|
+
break;
|
|
105
|
+
case "rotatecaptcha":
|
|
106
|
+
requiredFieldsArr = rotateRequiredFields;
|
|
107
|
+
break;
|
|
108
|
+
case "keycaptcha":
|
|
109
|
+
requiredFieldsArr = keycaptchaRequiredFields;
|
|
110
|
+
break;
|
|
111
|
+
case "cutcaptcha":
|
|
112
|
+
requiredFieldsArr = cutcaptchaRequiredFields;
|
|
113
|
+
break;
|
|
114
|
+
case "tencent":
|
|
115
|
+
requiredFieldsArr = tencentRequiredFields;
|
|
116
|
+
break;
|
|
117
|
+
case "atb_captcha":
|
|
118
|
+
requiredFieldsArr = atbCaptchaRequiredFields;
|
|
119
|
+
break;
|
|
120
|
+
case "prosopo":
|
|
121
|
+
requiredFieldsArr = prosopoRequiredFields;
|
|
122
|
+
break;
|
|
123
|
+
case "captchafox":
|
|
124
|
+
requiredFieldsArr = captchaFoxRequiredFields;
|
|
125
|
+
break;
|
|
126
|
+
case "vkimage":
|
|
127
|
+
requiredFieldsArr = vkimageRequiredFields;
|
|
128
|
+
break;
|
|
129
|
+
case "vkcaptcha":
|
|
130
|
+
requiredFieldsArr = vkcaptchaRequiredFields;
|
|
131
|
+
break;
|
|
132
|
+
case "temu":
|
|
133
|
+
requiredFieldsArr = temuRequiredFields;
|
|
134
|
+
break;
|
|
135
|
+
case "audio":
|
|
136
|
+
requiredFieldsArr = audioRequiredFields;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
return requiredFieldsArr;
|
|
140
|
+
};
|
|
141
|
+
/**
|
|
142
|
+
* ### Captcha Required Parameters Check.
|
|
143
|
+
*
|
|
144
|
+
* Checking required captcha parameters before sending.
|
|
145
|
+
* This function checks for required fields in the provided captcha parameters.
|
|
146
|
+
* Throws an error if the specified method is not supported or if required fields are missing.
|
|
147
|
+
*
|
|
148
|
+
* Note: The `checkCaptchaParams()` function should be called after `renameParams()`, if function `renameParams()` is used.
|
|
149
|
+
*
|
|
150
|
+
* @param { Object } params Captcha parameters that need to be checked.
|
|
151
|
+
* @returns true | false | Error
|
|
152
|
+
* @example
|
|
153
|
+
* checkCaptchaParams(params, 'userrecaptcha')
|
|
154
|
+
*/
|
|
155
|
+
function checkCaptchaParams(params, method) {
|
|
156
|
+
let isCorrectCaptchaParams;
|
|
157
|
+
const isIncorrectCaptchaMethod = !supportedMethods.includes(method);
|
|
158
|
+
if (isIncorrectCaptchaMethod) {
|
|
159
|
+
isCorrectCaptchaParams = false;
|
|
160
|
+
throw new Error(`Error when check params captcha. \nNot found "${method}" method in the "supportedMethods" array. \nCheck if the method is written correctly `);
|
|
161
|
+
}
|
|
162
|
+
const requiredFields = getRequiredFildsArr(method);
|
|
163
|
+
requiredFields.forEach(fieldName => {
|
|
164
|
+
const isThisFieldNotAvailable = !params.hasOwnProperty(fieldName);
|
|
165
|
+
if (isThisFieldNotAvailable) {
|
|
166
|
+
isCorrectCaptchaParams = false;
|
|
167
|
+
throw new Error(`Error when check params captcha.\nNot found "${fieldName}" field in the Object. Field "${fieldName}" is required for "${method}" method. Please add field "${fieldName}" in object and try again.\nPlease correct your code for the "${method}" method according to the code examples`);
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
isCorrectCaptchaParams = true;
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
//The parameters `textinstructions` and `imginstructions` are mandatory for the methods `bounding_box`, `grid`, and `canvas`.
|
|
174
|
+
if (method === "bounding_box" || method === "grid" || method === "canvas") {
|
|
175
|
+
if (params.hasOwnProperty('textinstructions') || params.hasOwnProperty('imginstructions')) {
|
|
176
|
+
isCorrectCaptchaParams = true;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
isCorrectCaptchaParams = false;
|
|
180
|
+
throw new Error(`Error when check params captcha.\nNot found "textinstructions" or "imginstructions" field in the Object. One of this field is required for "${method}" method. Please add field "textinstructions" or "imginstructions" to captcha parameters.`);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
return isCorrectCaptchaParams;
|
|
184
|
+
}
|
|
185
|
+
exports.default = checkCaptchaParams;
|
package/dist/utils/fetch.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import nodeFetch from 'node-fetch';
|
|
2
|
-
declare const _default: (((input: RequestInfo | URL, init?: RequestInit | undefined) => Promise<Response>) & typeof fetch) | typeof nodeFetch;
|
|
3
|
-
export = _default;
|
|
1
|
+
import nodeFetch from 'node-fetch';
|
|
2
|
+
declare const _default: (((input: RequestInfo | URL, init?: RequestInit | undefined) => Promise<Response>) & typeof fetch) | typeof nodeFetch;
|
|
3
|
+
export = _default;
|
|
4
4
|
//# sourceMappingURL=fetch.d.ts.map
|
package/dist/utils/fetch.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
6
|
-
module.exports = typeof window === 'undefined' ? node_fetch_1.default : window.fetch.bind(window);
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
const node_fetch_1 = __importDefault(require("node-fetch"));
|
|
6
|
+
module.exports = typeof window === 'undefined' ? node_fetch_1.default : window.fetch.bind(window);
|
package/dist/utils/generic.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Changes 0 and 1 falsy/truthy values into a boolean.
|
|
3
|
-
* @private
|
|
4
|
-
* @param input boolean or number
|
|
5
|
-
*/
|
|
6
|
-
export declare function castBool(input: boolean | number): 0 | 1;
|
|
7
|
-
/**
|
|
8
|
-
* Constructs uri parameters from an object
|
|
9
|
-
* @private
|
|
10
|
-
* @param input The input object
|
|
11
|
-
*/
|
|
12
|
-
export declare function objectToURI(input: {
|
|
13
|
-
[key: string]: string | number | boolean;
|
|
14
|
-
} | any): string;
|
|
15
|
-
/**
|
|
16
|
-
* Returns a promise that resolves after x ms
|
|
17
|
-
* @private
|
|
18
|
-
* @param ms time to sleep for
|
|
19
|
-
*/
|
|
20
|
-
export declare function sleep(ms: number): Promise<unknown>;
|
|
1
|
+
/**
|
|
2
|
+
* Changes 0 and 1 falsy/truthy values into a boolean.
|
|
3
|
+
* @private
|
|
4
|
+
* @param input boolean or number
|
|
5
|
+
*/
|
|
6
|
+
export declare function castBool(input: boolean | number): 0 | 1;
|
|
7
|
+
/**
|
|
8
|
+
* Constructs uri parameters from an object
|
|
9
|
+
* @private
|
|
10
|
+
* @param input The input object
|
|
11
|
+
*/
|
|
12
|
+
export declare function objectToURI(input: {
|
|
13
|
+
[key: string]: string | number | boolean;
|
|
14
|
+
} | any): string;
|
|
15
|
+
/**
|
|
16
|
+
* Returns a promise that resolves after x ms
|
|
17
|
+
* @private
|
|
18
|
+
* @param ms time to sleep for
|
|
19
|
+
*/
|
|
20
|
+
export declare function sleep(ms: number): Promise<unknown>;
|
|
21
21
|
//# sourceMappingURL=generic.d.ts.map
|
package/dist/utils/generic.js
CHANGED
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*
|
|
3
|
-
A file fill of generic utility functions.
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.sleep = exports.objectToURI = exports.castBool = void 0;
|
|
7
|
-
/**
|
|
8
|
-
* Changes 0 and 1 falsy/truthy values into a boolean.
|
|
9
|
-
* @private
|
|
10
|
-
* @param input boolean or number
|
|
11
|
-
*/
|
|
12
|
-
function castBool(input) {
|
|
13
|
-
if (input == false)
|
|
14
|
-
return 0;
|
|
15
|
-
if (input == true)
|
|
16
|
-
return 1;
|
|
17
|
-
if (input != 0 && input != 1)
|
|
18
|
-
return 0;
|
|
19
|
-
else
|
|
20
|
-
return input;
|
|
21
|
-
}
|
|
22
|
-
exports.castBool = castBool;
|
|
23
|
-
/**
|
|
24
|
-
* Constructs uri parameters from an object
|
|
25
|
-
* @private
|
|
26
|
-
* @param input The input object
|
|
27
|
-
*/
|
|
28
|
-
function objectToURI(input) {
|
|
29
|
-
let res = "?";
|
|
30
|
-
const keys = Object.keys(input);
|
|
31
|
-
keys.forEach((key, index) => {
|
|
32
|
-
res += encodeURIComponent(key) + "=" + encodeURIComponent(input[key]);
|
|
33
|
-
if (index + 1 != keys.length)
|
|
34
|
-
res += "&";
|
|
35
|
-
});
|
|
36
|
-
return res;
|
|
37
|
-
}
|
|
38
|
-
exports.objectToURI = objectToURI;
|
|
39
|
-
/**
|
|
40
|
-
* Returns a promise that resolves after x ms
|
|
41
|
-
* @private
|
|
42
|
-
* @param ms time to sleep for
|
|
43
|
-
*/
|
|
44
|
-
function sleep(ms) {
|
|
45
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
46
|
-
}
|
|
47
|
-
exports.sleep = sleep;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*
|
|
3
|
+
A file fill of generic utility functions.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.sleep = exports.objectToURI = exports.castBool = void 0;
|
|
7
|
+
/**
|
|
8
|
+
* Changes 0 and 1 falsy/truthy values into a boolean.
|
|
9
|
+
* @private
|
|
10
|
+
* @param input boolean or number
|
|
11
|
+
*/
|
|
12
|
+
function castBool(input) {
|
|
13
|
+
if (input == false)
|
|
14
|
+
return 0;
|
|
15
|
+
if (input == true)
|
|
16
|
+
return 1;
|
|
17
|
+
if (input != 0 && input != 1)
|
|
18
|
+
return 0;
|
|
19
|
+
else
|
|
20
|
+
return input;
|
|
21
|
+
}
|
|
22
|
+
exports.castBool = castBool;
|
|
23
|
+
/**
|
|
24
|
+
* Constructs uri parameters from an object
|
|
25
|
+
* @private
|
|
26
|
+
* @param input The input object
|
|
27
|
+
*/
|
|
28
|
+
function objectToURI(input) {
|
|
29
|
+
let res = "?";
|
|
30
|
+
const keys = Object.keys(input);
|
|
31
|
+
keys.forEach((key, index) => {
|
|
32
|
+
res += encodeURIComponent(key) + "=" + encodeURIComponent(input[key]);
|
|
33
|
+
if (index + 1 != keys.length)
|
|
34
|
+
res += "&";
|
|
35
|
+
});
|
|
36
|
+
return res;
|
|
37
|
+
}
|
|
38
|
+
exports.objectToURI = objectToURI;
|
|
39
|
+
/**
|
|
40
|
+
* Returns a promise that resolves after x ms
|
|
41
|
+
* @private
|
|
42
|
+
* @param ms time to sleep for
|
|
43
|
+
*/
|
|
44
|
+
function sleep(ms) {
|
|
45
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
46
|
+
}
|
|
47
|
+
exports.sleep = sleep;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* ### Renaming captcha parameters
|
|
4
|
-
*
|
|
5
|
-
* Description: parameter names used in the API may differ from those used in the library, in such cases parameter names are renamed in accordance with those used in the API.
|
|
6
|
-
*
|
|
7
|
-
* @param params - captcha parameters as an object
|
|
8
|
-
* @returns returns new object with renamed params
|
|
9
|
-
*
|
|
10
|
-
*/
|
|
11
|
-
export default function renameParams(params: any): any;
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* ### Renaming captcha parameters
|
|
4
|
+
*
|
|
5
|
+
* Description: parameter names used in the API may differ from those used in the library, in such cases parameter names are renamed in accordance with those used in the API.
|
|
6
|
+
*
|
|
7
|
+
* @param params - captcha parameters as an object
|
|
8
|
+
* @returns returns new object with renamed params
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
export default function renameParams(params: any): any;
|
|
12
12
|
//# sourceMappingURL=renameParams.d.ts.map
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
* ### Renaming captcha parameters
|
|
6
|
-
*
|
|
7
|
-
* Description: parameter names used in the API may differ from those used in the library, in such cases parameter names are renamed in accordance with those used in the API.
|
|
8
|
-
*
|
|
9
|
-
* @param params - captcha parameters as an object
|
|
10
|
-
* @returns returns new object with renamed params
|
|
11
|
-
*
|
|
12
|
-
*/
|
|
13
|
-
function renameParams(params) {
|
|
14
|
-
let newParams = new Object();
|
|
15
|
-
/**
|
|
16
|
-
* Captcha parameters that need to be renamed before sent to the API.
|
|
17
|
-
*/
|
|
18
|
-
const replaceParams = {
|
|
19
|
-
// Grid
|
|
20
|
-
"cols": "recaptchacols",
|
|
21
|
-
"rows": "recaptcharows",
|
|
22
|
-
"minClicks": "min_clicks",
|
|
23
|
-
"maxClicks": "max_clicks",
|
|
24
|
-
"canSkip": "can_no_answer",
|
|
25
|
-
"previousId": "previousID",
|
|
26
|
-
"imgType": "img_type",
|
|
27
|
-
// KeyCaptcha
|
|
28
|
-
"userId": "s_s_c_user_id",
|
|
29
|
-
"sessionId": "s_s_c_session_id",
|
|
30
|
-
"webServerSign": "s_s_c_web_server_sign",
|
|
31
|
-
"webServerSign2": "s_s_c_web_server_sign2",
|
|
32
|
-
// Cutcaptcha
|
|
33
|
-
"miseryKey": "misery_key",
|
|
34
|
-
"apiKey": "api_key",
|
|
35
|
-
// Tencent
|
|
36
|
-
"appId": "app_id",
|
|
37
|
-
// atbCAPTCHA
|
|
38
|
-
"apiServer": "api_server",
|
|
39
|
-
};
|
|
40
|
-
for (let key in params) {
|
|
41
|
-
if (replaceParams.hasOwnProperty(key)) {
|
|
42
|
-
newParams[replaceParams[key]] = params[key];
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
newParams[key] = params[key];
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
return newParams;
|
|
49
|
-
}
|
|
50
|
-
exports.default = renameParams;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* ### Renaming captcha parameters
|
|
6
|
+
*
|
|
7
|
+
* Description: parameter names used in the API may differ from those used in the library, in such cases parameter names are renamed in accordance with those used in the API.
|
|
8
|
+
*
|
|
9
|
+
* @param params - captcha parameters as an object
|
|
10
|
+
* @returns returns new object with renamed params
|
|
11
|
+
*
|
|
12
|
+
*/
|
|
13
|
+
function renameParams(params) {
|
|
14
|
+
let newParams = new Object();
|
|
15
|
+
/**
|
|
16
|
+
* Captcha parameters that need to be renamed before sent to the API.
|
|
17
|
+
*/
|
|
18
|
+
const replaceParams = {
|
|
19
|
+
// Grid
|
|
20
|
+
"cols": "recaptchacols",
|
|
21
|
+
"rows": "recaptcharows",
|
|
22
|
+
"minClicks": "min_clicks",
|
|
23
|
+
"maxClicks": "max_clicks",
|
|
24
|
+
"canSkip": "can_no_answer",
|
|
25
|
+
"previousId": "previousID",
|
|
26
|
+
"imgType": "img_type",
|
|
27
|
+
// KeyCaptcha
|
|
28
|
+
"userId": "s_s_c_user_id",
|
|
29
|
+
"sessionId": "s_s_c_session_id",
|
|
30
|
+
"webServerSign": "s_s_c_web_server_sign",
|
|
31
|
+
"webServerSign2": "s_s_c_web_server_sign2",
|
|
32
|
+
// Cutcaptcha
|
|
33
|
+
"miseryKey": "misery_key",
|
|
34
|
+
"apiKey": "api_key",
|
|
35
|
+
// Tencent
|
|
36
|
+
"appId": "app_id",
|
|
37
|
+
// atbCAPTCHA
|
|
38
|
+
"apiServer": "api_server",
|
|
39
|
+
};
|
|
40
|
+
for (let key in params) {
|
|
41
|
+
if (replaceParams.hasOwnProperty(key)) {
|
|
42
|
+
newParams[replaceParams[key]] = params[key];
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
newParams[key] = params[key];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return newParams;
|
|
49
|
+
}
|
|
50
|
+
exports.default = renameParams;
|