9kw-captcha-node
v1.0.3
Published
9kw API Wrapper to solve captchas
Downloads
14
Maintainers
Readme
1. 9kw
This is an api wrapper for the 9kw captcha solver service. An Api Key is needed, generate using the 9kw website.
1.1. Installation
node:
npm install 9kw-captcha-node
This library supports environment variables to pass parameters like API Key:
| ENV variable | Type | Description | | ---------------------- | ------ | ---------------------------------------------------------- | | CAPTCHA_API_KEY_9KW | String | API Key | | CAPTCHA_SOURCE_9KW | String | 9kw Source (app indicator) | | CAPTCHA_OLD_SOURCE_9KW | String | 9kw Old Source (indicator for captcha type) | | CAPTCHA_PRIO_9KW | Number | 9kw default priority | | CAPTCHA_DEBUG_9KW | Number | Don't spend credits and get fake solutions. For testing... |
In alternative you can pass it as parameters when instantiating the API constructor
1.2. Promises - Async/Await
const Api9kw = require("9kw-captcha-node");
const api = new Api9kw(/* You can pass parameters here or just use the ENV vars */);
(async () => {
try {
// Get the balance of credits from 9kw
const balance = await api.asyncGetBalance();
console.log(`BALANCE: ${balance} credits`);
// Submit a local image file with the captcha
// const captchaId = await api.asyncSubmitFile(config.pathToFile);
// Submit using a Image Base 64 of the captha
// const captchaId = await api.asyncSubmitBase64(config.image_base64);
// Submit using a Image URL of the captha
// const captchaId = await api.asyncSubmit(config.image_url);
// Submit CaptchaV2 (using a siteKey + siteUrl)
// CaptchaV2 will need to be solved by someone in real time
// so using the priority becomes important if you want faster captchas
// 300 seconds (with 0 prio) is a reasonable number so you don't miss solved captchas
// If you want them faster, up the prio and you will pay one extra credit per captcha
const captchaId = await api.asyncSubmit(
SITEKEY,
SITEURL,
OVERWRITE_PRIO_IF_YOU_WANT
);
console.log(`CAPTCHA ID: ${captchaId}`);
// Get the solution of the captcha with a timeout of 40 seconds (optional)
// this means that the callback will be called when the captcha is solved
// For image Solving 9kw seems to store the solutions in their own DB
// and some are instantaneous others may take some more but usually under 30 sec
// For CaptchaV2 (sitekey + siteUrl) will need to be solved by someone in real time
// so using the priority becomes important if you want faster captchas
// 300 seconds (with 0 prio) is a reasonable number so you don't miss solved captchas
// If you want them faster, up the prio and you will pay one extra credit per captcha
// usually is solved under 30s (default timeout is 30 seconds)
const solution = await api.asyncGetSolutionLoop(captchaId, 300);
console.log("SOLUTION: ", solution);
// Give feedback
successSolve
? await api9kw.asyncIsCorrect(captchaId, true)
: await api9kw.asyncIsCorrect(captchaId);
} catch (err) {
console.error(err); // Timeout or NO_USER
}
})();
1.3. Callbacks
const Api9kw = require("9kw");
const api = new Api9kw(/* You can pass parameters here or just use the ENV vars */);
// Get your account balance (credits)
api.getBalance((err, balance) => {
console.log(balance);
});
// Submit a local image file with the captcha
// api.submitFile("./captcha.png", (err, newID) => {
// if (err) {
// console.log(err);
// return;
// }
// console.log("Captcha uploaded!: " + captchaId);
// // Next step is to get the solution of the uploaded captcha using the new captchaID
// });
// Submit using a Image Base 64 of the captha
// api.submitBase64(base64, (err, newID) => {
// if (err) {
// console.log(err);
// return;
// }
// console.log("Captcha uploaded!: " + captchaId);
// // Next step is to get the solution of the uploaded captcha using the new captchaID
// });
// Submit using a Image URL of the captha
api.submit(URL, (err, newID) => {
if (err) {
console.log(err);
return;
}
console.log("Captcha uploaded!: " + captchaId);
// Next step is to get the solution of the uploaded captcha using the new captchaID
});
// Submit CaptchaV2 (using a siteKey + siteUrl)
// CaptchaV2 will need to be solved by someone in real time
// so using the priority becomes important if you want faster captchas
// 300 seconds (with 0 prio) is a reasonable number so you don't miss solved captchas
// If you want them faster, up the prio and you will pay one extra credit per captcha
api.submit(
SITE_KEY,
(err, newID) => {
if (err) {
console.log(err);
return;
}
console.log("Captcha uploaded!: " + captchaId);
// Next step is to get the solution of the uploaded captcha using the new captchaID
},
SITE_URL,
OVERWRITE_PRIO_IF_YOU_WANT
);
// Get the solution of the captcha with a timeout of 40 seconds (optional)
// this means that the callback will be called when the captcha is solved
// usually is solved under 30s (default timeout is 30 seconds)
api.getSolutionLoop(captchaId, 40, (err, solution) => {
if (err) {
console.log(err);
return;
}
console.log("Solution: " + solution);
});
// Tell 9kw the solution was correct or not
api.isCorrect(captchaId, true);
// Get the 9kw server check info
api.serverCheck((err, serverInfo) => {
console.log(serverInfo);
});
1.4. Development
1.4.1. Linting and Generating Docs
npm run flow
1.4.2. Tests
In order to run the tests, create a .env file as .env.default and put your account details in the correct ENV variables, then run:
npm run test
Tests are not working on Node > 10
1.5. Credits
This project was initially a fork of iamfreee/9kw_node