Image Captcha demo
Normal Captcha is an image that contains distorted but human-readable text. To solve the captcha user has to type the text from the image.
Image pictures CAPTCHAs frequently interfere with development workflows — blocking automated tests, and CI pipelines. The practical solution is to outsource image recognition to a dedicated solver service exposed via an API and integrate that service into your test and deployment pipelines.
How to bypass image Captcha
Download the captcha image. Send image to our API.
With SDK (recommended):
PHP
// https://github.com/solvercaptcha/solvecaptcha-php require(__DIR__ . '/../src/autoloader.php'); $solver = new \SolveCaptcha\SolveCaptcha('YOUR_API_KEY'); try { $result = $solver->normal('path/to/captcha.jpg'); } catch (\Exception $e) { die($e->getMessage()); } die('Captcha solved: ' . $result->code);
Python
// https://github.com/solvercaptcha/solvecaptcha-python import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) from solvecaptcha import SolveCaptcha api_key = os.getenv('APIKEY_solvecaptcha', 'YOUR_API_KEY') solver = SolveCaptcha(api_key) try: result = solver.normal('path/to/captcha.jpg') except Exception as e: sys.exit(e) else: sys.exit('solved: ' + str(result))
Java
// https://github.com/solvercaptcha/solvecaptcha-java package examples; import com.solvecaptcha.SolveCaptcha; import com.solvecaptcha.captcha.Normal; public class NormalExample { public static void main(String[] args) { SolveCaptcha solver = new SolveCaptcha("YOUR_API_KEY"); Normal captcha = new Normal("path/to/captcha.jpg"); try { solver.solve(captcha); System.out.println("Captcha solved: " + captcha.getCode()); } catch (Exception e) { System.out.println("Error occurred: " + e.getMessage()); } } }
C#
// https://github.com/solvercaptcha/solvecaptcha-csharp using System; using System.Linq; using SolveCaptcha.Captcha; namespace SolveCaptcha.Examples { public class NormalExample { public static void Main() { var solver = new SolveCaptcha("YOUR_API_KEY"); Normal captcha = new Normal("path/to/captcha.jpg"); try { solver.Solve(captcha).Wait(); Console.WriteLine("Captcha solved: " + captcha.Code); } catch (AggregateException e) { Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message); } } } }
Go
// https://github.com/solvercaptcha/solvecaptcha-go package main import ( "fmt" "log" "github.com/solvercaptcha/solvecaptcha-go" ) func main() { client := apisolvecaptcha.NewClient("API_KEY") captcha := apisolvecaptcha.Normal{ File: "/path/to/captcha.jpg", } code, err := client.Solve(captcha.ToRequest()) if err != nil { log.Fatal(err); } fmt.Println("code "+code) }
C++
// https://github.com/solvercaptcha/solvecaptcha-cpp #include #include "curl_http.hpp" #include "apisolvecaptcha.hpp" int main (int ac, char ** av) { if (ac < 2) { printf ("Usage: ./normal path/to/image.jpg\n"); return 0; } apisolvecaptcha::curl_http_t http; http.set_verbose (true); apisolvecaptcha::client_t client; client.set_http_client (&http); client.set_api_key (API_KEY); assert (ac > 1); apisolvecaptcha::normal_t cap; cap.set_file (av[1]); try { client.solve (cap); printf ("code '%s'\n", cap.code ().c_str ()); } catch (std::exception & e) { fprintf (stderr, "Failed: %s\n", e.what ()); } return 0; }
Ruby
// https://github.com/solvercaptcha/solvecaptcha-ruby require 'api_solvecaptcha' client = Apisolvecaptcha.new("YOUR_API_KEY") result = client.normal({ image: 'path/to/captcha.jpg'}) # OR result = client.normal({ image: 'https://site-with-captcha.com/path/to/captcha.jpg' })
Manually:
Multipart sample form:
If everything is fine server will return the ID of your captcha:
OK|2122988149
Otherwise server will return an error code. After 15-20 seconds send GET request to get the result:
GET https://solvecaptcha.com/res.php?key=YOUR_API_KEY&action=get&id=2122988149
If captcha is already solved server will respond with the answer token:
OK|W9H5K
If captcha is not solved yet server will return CAPCHA_NOT_READY result. Repeat your request in 5 seconds. If something went wrong server will return an error code. Paste received code into the field. Then, submit the form.