npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

imagetyperz-api-client

v1.3.0

Published

ImagetyperzAPI (client) is a super easy to use bypass captcha API wrapper for imagetyperz.com captcha service

Downloads

12

Readme

imagetyperz-api-client - Imagetyperz API wrapper

ImagetyperzAPI (client) is a super easy to use bypass captcha API wrapper for imagetyperz.com captcha service

Installation

npm install imagetyperz-api-client

or

git clone https://github.com/imagetyperz-api/imagetyperz-api-javascript

How to use?

ImagetyperzAPI (client) uses promise handling

Simply require the module, set the auth details and start using the captcha service:

<!-- Load jQuery (dependency) -->
<script src="http://code.jquery.com/jquery-3.3.1.min.js"></script>
<!-- Load the API library -->
<script src="../lib/imagetyperz-api-client.js"></script>

Set access_token for authentication

// get access token from: http://www.imagetyperz.com/Forms/ClientHome.aspx
imagetyperzapi.set_access_key('YOUR_ACCESS_KEY');

Once you've set your authentication details, you can start using the API

Get balance

const balance = await imagetyperzapi
console.log('Balance:', balance)

Solving

For solving a captcha, it's a two step process:

  • submit captcha details - returns an ID
  • use ID to check it's progress - and get solution when solved.

Each captcha type has it's own submission method.

For getting the response, same method is used for all types.

Image captcha

var captcha_params = {}
// captcha_params.iscase = 'true';         // case sensitive captcha
// captcha_params.isphrase = 'true';       // text contains at least one space (phrase)
// captcha_params.ismath = 'true';         // instructs worker that a math captcha has to be solved
// captcha_params.alphanumeric = '2';      // 1 - digits only, 2 - letters only
// captcha_params.minlength = 2;           // captcha text length (minimum)
// captcha_params.maxlength = 6;           // captcha text length (maximum)
const b64captcha = '/9j/4AAQJRgABAQA...'   // captcha image encoded as b64
const captcha_id = await imagetyperzapi.submit_image(b64captcha, captcha_params)

ID is used to retrieve solution when solved.

Observation It works with URL instead b64 image too

reCAPTCHA

For recaptcha submission there are two things that are required.

  • page_url (required)
  • site_key (required)
  • type (optional, defaults to 1 if not given)
    • 1 - v2
    • 2 - invisible
    • 3 - v3
    • 4 - enterprise v2
    • 5 - enterprise v3
  • domain - used in loading of reCAPTCHA interface, default: www.google.com (alternative: recaptcha.net) - optional
  • v3_min_score - minimum score to target for v3 recaptcha - optional
  • v3_action - action parameter to use for v3 recaptcha - optional
  • proxy - proxy to use when solving recaptcha, eg. 12.34.56.78:1234 or 12.34.56.78:1234:user:password - optional
  • user_agent - useragent to use when solve recaptcha - optional
  • data-s - extra parameter used in solving recaptcha - optional
  • cookie_input - cookies used in solving reCAPTCHA - - optional
var captcha_params = {}
captcha_params.page_url = 'https://your-site.com'
captcha_params.sitekey = '7LrGJmcUABBAALFtIb_FxC0LXm_GwOLyJAfbbUCL'
// captcha_params.type = 1;                       // optional, defaults to 1
// captcha_params.domain = 'www.google.com'       // used in loading reCAPTCHA interface, default: www.google.com (alternative: recaptcha.net) - optional
// captcha_params.v3_min_score = 0.3;             // min score to target when solving v3 - optional
// captcha_params.v3_action = 'homepage';         // action to use when solving v3 - optional
// captcha_params.proxy = '126.45.34.53:123';     // optional
// captcha_params.user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0';   // optional
// captcha_params.data_s = 'recaptcha data-s value' // optional
// captcha_params.cookie_input = 'a=b;c=d'        // optional
const captchaID = await imagetyperzapi.submit_recaptcha(captcha_params)

ID will be used to retrieve the g-response, once workers have completed the captcha. This takes somewhere between 10-80 seconds.

Check Retrieve response

GeeTest

GeeTest is a captcha that requires 3 parameters to be solved:

  • domain
  • challenge
  • gt
  • api_server (optional)

The response of this captcha after completion are 3 codes:

  • challenge
  • validate
  • seccode

Important This captcha requires a unique challenge to be sent along with each captcha.

var captcha_params = {}
captcha_params.domain = 'https://your-site.com'
captcha_params.challenge = 'eea8d7d1bd1a933d72a9eda8af6d15d3'
captcha_params.gt = '1a761081b1114c388092c8e2fd7f58bc'
// captcha_params.api_server = 'api.geetest.com'     // geetest domain - optional
// captcha_params.proxy = '126.45.34.53:123';     // optional
// captcha_params.user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0';   // optional
const captchaID = await imagetyperzapi.submit_geetest(captcha_params)

Optionally, you can send proxy and user_agent along.

GeeTestV4

GeeTesV4 is a new version of captcha from geetest that requires 2 parameters to be solved:

  • domain
  • geetestid (captchaID) - gather this from HTML source of page with captcha, inside the <script> tag you'll find a link that looks like this: https://i.imgur.com/XcZd47y.png

The response of this captcha after completion are 5 parameters:

  • captcha_id
  • lot_number
  • pass_token
  • gen_time
  • captcha_output
var captcha_params = {};
captcha_params.domain = 'https://example.com';
captcha_params.geetestid = '647f5ed2ed8acb4be36784e01556bb71';
// captcha_params.proxy = '126.45.34.53:123';     // optional
// captcha_params.user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0';   // optional
const captchaID = await imagetyperzapi.submit_geetest_v4(captcha_params);

Optionally, you can send proxy and user_agent along.

hCaptcha

Requires page_url and sitekey

var captcha_params = {}
captcha_params.page_url = 'https://your-site.com'
captcha_params.sitekey = '8c7062c7-cae6-4e12-96fb-303fbec7fe4f'
// captcha_params.invisible = '1';     // if captcha is invisible - optional

// domain used in loading of hcaptcha interface, default: hcaptcha.com - optional
// captcha_params.domain = 'hcaptcha.com'

// extra parameters, useful for enterprise
// submit userAgent from requests too, when this is used
// captcha_params.HcaptchaEnterprise = {
//      'rq_data': 'take value from web requests'
// }

// captcha_params.proxy = '126.45.34.53:123';     // optional
// captcha_params.user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0';   // optional
const captchaID = await imagetyperzapi.submit_hcaptcha(captcha_params)

Capy

Requires page_url and sitekey

var captcha_params = {}
captcha_params.page_url = 'https://your-site.com'
captcha_params.sitekey = 'Fme6hZLjuCRMMC3uh15F52D3uNms5c'
// captcha_params.proxy = '126.45.34.53:123';     // optional
// captcha_params.user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0';   // optional
const captchaID = await imagetyperzapi.submit_capy(captcha_params)

Tiktok

Requires page_url and cookie_input

var captcha_params = {}
captcha_params.page_url = 'https://tiktok.com'
// make sure `s_v_web_id` cookie is present
captcha_params.cookie_input = 's_v_web_id:verify_kd6243o_fd449FX_FDGG_1x8E_8NiQ_fgrg9FEIJ3f;tt_webid:612465623570154;tt_webid_v2:7679206562717014313;SLARDAR_WEB_ID:d0314f-ce16-5e16-a066-71f19df1545f;';
// captcha_params.proxy = '126.45.34.53:123';     // optional
// captcha_params.user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0';   // optional
const captchaID = await imagetyperzapi.submit_tiktok(captcha_params)

FunCaptcha

Requires page_url and sitekey

var captcha_params = {};
captcha_params.page_url = 'https://your-site.com'
captcha_params.sitekey = '11111111-1111-1111-1111-111111111111'
captcha_params.s_url = 'https://api.arkoselabs.com'
// captcha_params.data = '{"a": "b"}';            // optional, extra funcaptcha data in JSON format
// captcha_params.proxy = '126.45.34.53:123';      // optional, or 126.45.34.53:123:joe:password
// captcha_params.user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0';   // optional
const captchaID = await imagetyperzapi.submit_funcaptcha(captcha_params)

Turnstile (Cloudflare)

Requires page_url and sitekey

// recaptcha parameters
var captcha_params = {};
captcha_params.page_url = 'https://your-site.com';
captcha_params.sitekey = '0x4ABBBBAABrfvW5vKbx11FZ';
// captcha_params.domain = 'challenges.cloudflare.com'         // domain used in loading turnstile interface, default: challenges.cloudflare.com - optional
// captcha_params.action = 'homepage'                          // used in loading turnstile interface, similar to reCAPTCHA - optional
// captcha_params.cdata = 'your cdata'                         // used in loading turnstile interface - optional
// captcha_params.proxy = '126.45.34.53:123';     // optional, or 126.45.34.53:123:joe:password
// captcha_params.user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0';   // optional
const captchaID = await imagetyperzapi.submit_turnstile(captcha_params)

Task

Requires template_name, page_url and variables

var captcha_params = {};
captcha_params = {
  'template_name': 'Login test page',
  'page_url': 'https://imagetyperz.net/automation/login',
  'variables': {"username": 'abc', "password": 'paZZW0rd'},
  // 'proxy': '126.45.34.53:345',   # or 126.45.34.53:123:joe:password
  // 'user_agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0',    # optional
}
// captcha_params.proxy = '126.45.34.53:123';     // optional
// captcha_params.user_agent = 'Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0';   // optional
const captchaID = await imagetyperzapi.submit_task(captcha_params)

Task pushVariable

Update a variable value while task is running. Useful when dealing with 2FA authentication.

When template reaches an action that uses a variable which wasn't provided with the submission of the task, task (while running on worker machine) will wait for variable to be updated through push.

You can use the pushVariables method as many times as you need, even overwriting previously set variables.

await imagetyperzapi.task_push_variables(captchaID, {twofactor_code: "32948"})

Retrieve response

Regardless of the captcha type (and method) used in submission of the captcha, this method is used right after to check for it's solving status and also get the response once solved.

It requires one parameter, that's the captcha ID gathered from first step.

const response = await imagetyperzapi.retrieve_response(captchaID)   // wait for response to get solved
const captchaID = await imagetyperzapi.submit_recaptcha(recaptcha_params)
console.log('Waiting for captcha to be solved ...')
const response = await imagetyperzapi.retrieve_response(captchaID)   // wait for response to get solved
console.log(`Response: ${JSON.stringify(response)}`)

The response is a JSON object that looks like this:

{
  "CaptchaId": 176707908, 
  "Response": "03AGdBq24PBCbwiDRaS_MJ7Z...mYXMPiDwWUyEOsYpo97CZ3tVmWzrB", 
  "Cookie_OutPut": "", 
  "Proxy_reason": "",
  "Status": "Solved"
}

Other methods/variables

Affiliate id

Set affiliate ID, using set_affiliate_id method

imagetyperzapi.set_affiliate_id(123)

Set captcha bad

When a captcha was solved wrong by our workers, you can notify the server with it's ID, so we know something went wrong.

imagetyperzapi.set_captcha_bad(captchaID)

Examples

Check example folder.

It contains an example for each type of captcha.

License

API library is licensed under the MIT License

More information

More details about the server-side API can be found here

captcha, bypasscaptcha, decaptcher, decaptcha, 2captcha, deathbycaptcha, anticaptcha, bypassrecaptchav2, bypassnocaptcharecaptcha, bypassinvisiblerecaptcha, captchaservicesforrecaptchav2, recaptchav2captchasolver, googlerecaptchasolver, recaptchasolverjavascript, recaptchabypassscript