Normal Captcha is an image that contains distored but human-readable text. To solve the captcha user have to type the text from the image.
How to solve Normal Captcha
1.Download the captcha image.
2.Send image to 2Captcha API.
php
python
java
csharp
go
cpp
// https://github.com/2captcha/2captcha-php
require(__DIR__ . '/../src/autoloader.php');
$solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');
try {
$result = $solver->normal('path/to/captcha.jpg');
} catch (\Exception $e) {
die($e->getMessage());
}
die('Captcha solved: ' . $result->code);
# https://github.com/2captcha/2captcha-python
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from twocaptcha import TwoCaptcha
api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')
solver = TwoCaptcha(api_key)
try:
result = solver.normal('path/to/captcha.jpg')
except Exception as e:
sys.exit(e)
else:
sys.exit('solved: ' + str(result))
// https://github.com/2captcha/2captcha-java
package examples;
import com.twocaptcha.TwoCaptcha;
import com.twocaptcha.captcha.Normal;
public class NormalExample {
public static void main(String[] args) {
TwoCaptcha solver = new TwoCaptcha("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());
}
}
}
// https://github.com/2captcha/2captcha-csharp
using System;
using System.Linq;
using TwoCaptcha.Captcha;
namespace TwoCaptcha.Examples
{
public class NormalExample
{
public static void Main()
{
var solver = new TwoCaptcha("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);
}
}
}
}
// https://github.com/2captcha/2captcha-go
package main
import (
"fmt"
"log"
"github.com/2captcha/2captcha-go"
)
func main() {
client := api2captcha.NewClient("API_KEY")
cap := api2captcha.Normal{
File: "/path/to/captcha.jpg",
}
code, err := client.Solve(cap.ToRequest())
if err != nil {
log.Fatal(err);
}
fmt.Println("code "+code)
}
// https://github.com/2captcha/2captcha-cpp
#include <cstdio>
#include "curl_http.hpp"
#include "api2captcha.hpp"
int main (int ac, char ** av)
{
if (ac < 2)
{
printf ("Usage: ./normal path/to/image.jpg\n");
return 0;
}
api2captcha::curl_http_t http;
http.set_verbose (true);
api2captcha::client_t client;
client.set_http_client (&http);
client.set_api_key (API_KEY);
assert (ac > 1);
api2captcha::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;
}
2.1
Multipart sample form:
<form method="post" action="https://2captcha.com/in.php" enctype="multipart/form-data">
<input type="hidden" name="method" value="post">
Your key:
<input type="text" name="key" value="YOUR_APIKEY">
The CAPTCHA file:
<input type="file" name="file">
<input type="submit" value="Upload and get the ID">
</form>
2.2
If everything is fine server will return the ID of your captcha:
Otherwise server will return an error code.
OK|2122988149
2.3
After 5 seconds send GET request to get the result:
If captcha is already solved server will respond with the answer token:
If captcha is not solved yet server will return
GET https://2captcha.com/res.php?key=YOUR_API_KEY&action=get&id=2122988149
OK|W9H5K
CAPCHA_NOT_READY
result. Repeat your request in 5 seconds. If something went wrong server will return an error code. 3.Paste received code into the field. Then, submit the form.