tracking-code-which-will-go-to-the-HEAD 9kw.eu Captcha Solver API Wrapper for NodeJS Home

Home

9kw-captcha-node 1.0.3

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);
  } 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