Использование аутентификации токена

Эта страница предназначена для пользователей, которые хотят использовать аутентификацию токена на Death By Captcha API.

Токен аутентификация FAQ

Зачем использовать аутентификацию токена?

Аутентификация на основе токков позволяет пользователям сохранять имя пользователя и пароль еще более безопасными.

Почему жетоны лучше, чем пароли?

Традиционные пароли имеют одну огромную слабость: они созданы человеком. Человеческие пароли, как правило, довольно слабые и легко взломать. Мы все повторно использовали старые пароли снова и снова, потому что их легко запомнить.

Где я могу получить свой токен для аутентификации?

Вы можете получить его от панели пользователей, чтобы использовать аутентификацию токенов, вам необходимо включить 2FA аутентификацию.

Обратитесь к Help 2FA, чтобы активировать 2FA: Узнайте, как включить аутентификацию 2FA

После этого вы можете получить свой токен от панель пользователя

get token

Могу ли я использовать аутентификацию токена и аутентификацию имени пользователя/пароля одновременно?

Нет, вы можете включить/отключить аутентификацию токена в любое время на панели пользователя, но вы не можете использовать оба одновременно. Если аутентификация токена отключена, вы должны использовать аутентификацию имени пользователя/пароля, если включена аутентификация токена, вы должны использовать аутентификацию токена.

Где я могу включить/отключить аутентификацию токена?

На панели пользователя есть возможность включить/отключить аутентификацию токена.

enable/disable token

Что я должен делать дальше?

При использовании аутентификации токена на API Deathbycaptcha вам нужно изменить клиентов, чтобы использовать Authtoken вместо имени пользователя/пароля.

Относится к коду каждого клиента, чтобы использовать аутентификацию на основе токков в каждом случае

Примеры клиента

require_once 'deathbycaptcha.php';

// Put your DBC credentials here.
// Use DeathByCaptcha_HttpClient class if you want to use HTTP API.
// To use token username must be authtoken.
$client = new DeathByCaptcha_SocketClient("authtoken", token-from-panel);

// Put the CAPTCHA file name or handler, and desired timeout (in seconds) here:
if ($captcha = $client->decode(CAPTCHA_FILE_NAME, TIMEOUT)) {
    echo $captcha['text'] . "\n";

    // Report the CAPTCHA if solved incorrectly.
    // Make sure the CAPTCHA was in fact incorrectly solved!
    if ( ... ) {
        $client->report($captcha['captcha']);
    }
}

// Repeat for other CAPTCHAs
// Do not forget to reference DeathByCaptcha.dll in your project!
using DeathByCaptcha;

// Put your DBC credentials here.
// Use HttpClient class if you want to use HTTP API.
// Using token authentication in C#/VB, username must be authtoken.

Client client = (Client) new SocketClient("authtoken", token-from-panel);

// Put your CAPTCHA file name, stream, or vector of bytes,
// and desired timeout (in seconds) here:
Captcha captcha = client.Decode(CAPTCHA_FILE_NAME, TIMEOUT);
if (captcha.Solved && captcha.Correct) {
    Console.WriteLine("CAPTCHA {0}: {1}", captcha.Id, captcha.Text);

    // Report the CAPTCHA if solved incorrectly.
    // Make sure the CAPTCHA was in fact incorrectly solved!
    if ( ... ) {
        client.Report(captcha);
    }
}

// Repeat for other CAPTCHAs
// Do not forget to reference DeathByCaptcha.dll in your project!
  Imports DeathByCaptcha
        ' Dim clnt As New HttpClient("autoken", token-from-panel)
        Dim clnt As New SocketClient("authtoken", token-from-panel)
        Console.WriteLine(String.Format(
                            "Your balance is {0,2:f} US cents", clnt.Balance))
        ' Uploading captchas with type = 2 (Coordinates API)
        ' Dim ext_data As New Hashtable()
        ' ext_data.Add("type", 2)
        ' Put your CAPTCHA image file name, file object, stream, or vector
        ' of bytes, and optional solving timeout (in seconds) here:
        ' Dim cptch As Captcha = clnt.Decode(
                    CAPTCHA_FILE_NAME, 2 * Client.DefaultTimeout, ext_data)
        ' Uploading captchas with type = 3 (Image Group API)
        ' Dim ext_data As New Hashtable()
        ' ext_data.Add("type", 3)
        ' ext_data.Add("banner_text", "Select all images with meat")
        ' ext_data.Add("grid", "4x4") ' this is optional
        ' ext_data.Add("banner", bannerFileName)
        ' Put your CAPTCHA image file name, file object, stream, or vector
        ' of bytes, and optional solving timeout (in seconds) here:
        ' Dim cptch As Captcha = clnt.Decode(
                        CAPTCHA_FILE_NAME, 2 * Client.DefaultTimeout, ext_data)
        ' Put your CAPTCHA image file name, file object, stream, or vector
        ' of bytes, and optional solving timeout (in seconds) here:
        Dim cptch As Captcha = clnt.Decode(
                            CAPTCHA_FILE_NAME, 2 * Client.DefaultTimeout)
        If cptch IsNot Nothing Then
            Console.WriteLine(String.Format(
                            "CAPTCHA {0:d} solved: {1}", cptch.Id, cptch.Text))
            ' Report an incorrectly solved CAPTCHA.
            ' Make sure the CAPTCHA was in fact incorrectly solved, do not
            ' just report it at random, or you might be banned as abuser.
            'If clnt.Report(cptch) Then
            '    Console.WriteLine("Reported as incorrectly solved")
            'Else
            '    Console.WriteLine("Failed reporting as incorrectly solved")
            'End If
        End If
  ' Repeat for other CAPTCHAs
  
      import deathbycaptcha
      import json
      # Put your DBC account username and password here.
      username = "username"
      password = "password"
      # you can use authtoken instead of user/password combination
      # activate and get the authtoken from DBC users panel
      authtoken = "authtoken-from-panel"
      # Put the proxy and reCaptcha token data
      Captcha_dict = {
          'proxy': 'http://user:password@127.0.0.1:1234',
          'proxytype': 'HTTP',
          'googlekey': '6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_f',
          'pageurl': 'http://google.com'}
      # Create a json string
      json_Captcha = json.dumps(Captcha_dict)
      client = deathbycaptcha.SocketClient(username, password, authtoken)
      # to use http client = deathbycaptcha.HttpClient(username, password)
      # client = deathbycaptcha.HttpClient(username, password, authtoken)
      try:
          balance = client.get_balance()
          print(balance)
          # Put your CAPTCHA type and Json payload here:
          captcha = client.decode(type=4, token_params=json_Captcha)
          if captcha:
              # The CAPTCHA was solved; captcha["captcha"] item holds its
              # numeric ID, and captcha["text"] item its list of "coordinates".
              print ("CAPTCHA %s solved: %s" % (captcha["captcha"],
                                                 captcha["text"]))
              if '':  # check if the CAPTCHA was incorrectly solved
                  client.report(captcha["captcha"])
      except deathbycaptcha.AccessDeniedException:
          # Access to DBC API denied, check your credentials and/or balance
          print ("error: Access to DBC API denied," +
                 "check your credentials and/or balance")
  # Repeat for other CAPTCHAs
  
  
      import deathbycaptcha
      import json
      # Put your DBC account username and password here.
      username = "username"
      password = "password"
      # you can use authtoken instead of user/password combination
      # activate and get the authtoken from DBC users panel
      authtoken = "authtoken-from-panel"
      # Put the proxy and reCaptcha token data
      captcha_dict = {
          'proxy': 'http://user:password@127.0.0.1:1234',
          'proxytype': 'HTTP',
          'googlekey': '6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b',
          'pageurl': 'http://google.com'}
      # Create a json string
      json_captcha = json.dumps(captcha_dict)
      # to use socket client
      client = deathbycaptcha.SocketClient(username, password, authtoken)
      # to use http client
      # client = deathbycaptcha.HttpClient(username, password, authtoken)
      try:
          balance = client.get_balance()
          print(balance)
          # Put your CAPTCHA type and Json payload here:
          captcha = client.decode(type=4, token_params=json_captcha)
          if captcha:
                  # The CAPTCHA was solved; captcha["captcha"] item holds 
                  # its numeric ID, and captcha["text"] item its 
                  # list of "coordinates".
              print "CAPTCHA %s solved: %s" % (captcha["captcha"],
                                                captcha["text"])
              if '':  # check if the CAPTCHA was incorrectly solved
                  client.report(captcha["captcha"])
      except deathbycaptcha.AccessDeniedException:
          # Access to DBC API denied, check your credentials and/or balance
          print "error: Access to DBC API denied, check your credentials" +
                            "and/or balance"
  # Repeat for other CAPTCHAs
  
  
    const dbc = require('./deathbycaptcha.js');

    const username = 'username';     // DBC account username
    const password = 'password';     // DBC account password
    // if using username/password, authtoken must be an empty string
    // authentication token can be enabled in user panel
    const authtoken = 'token-from-panel'; //DBC account authtoken

    // Proxy and Recaptcha token data
    const token_params = JSON.stringify({
      'proxy': 'http://username:password@proxy.example:3128',
      'proxytype': 'HTTP',
      'googlekey': '6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_f',
      'pageurl': 'http://google.com'
    });

    // Death By Captcha Socket Client
    // const client = new dbc.SocketClient(username, password, authtoken);
    // Death By Captcha http Client
    const client = new dbc.HttpClient(username, password, authtoken);

    // Get user balance
    client.get_balance((balance) => {
      console.log(balance);
    });

    // Solve captcha with type 4 & token_params extra arguments
    client.decode({extra: {type: 4, token_params: token_params}},
        (captcha) => {

      if (captcha) {
        console.log('Captcha ' + captcha['captcha'] + ' solved: ' +
                                captcha['text']);
        // Report an incorrectly solved CAPTCHA.
        // Make sure the CAPTCHA was in fact incorrectly solved!
        // client.report(captcha['captcha'], (result) => {
        //   console.log('Report status: ' + result);
        // });
      }

    });
  // Repeat for other CAPTCHAs
  
  
    import com.DeathByCaptcha.AccessDeniedException;
    import com.DeathByCaptcha.Client;
    import com.DeathByCaptcha.HttpClient;
    import com.DeathByCaptcha.SocketClient;
    import com.DeathByCaptcha.Captcha;
    import java.io.IOException;

    class ExampleSimple
    {
        public static void main(String[] args)
            throws Exception
        {
            // Put your DBC username & password || authtoken here:
            // if the number of arguments is two we are using authtoken
            // if the number of arguments is three we are using 
            // username/password combination
            System.out.println(args.length);
            Client client;
            // using http API
            /*
            if(args.length == 3){
                client = (Client)(new HttpClient(args[0], args[1]));
            }else if(args.length == 2){
                client = (Client)(new HttpClient(args[0]));
            }else{
                System.out.println("Wrong number of arguments");
                System.out.println("You must use username/password combination");
                System.out.println("Or API key");
                return;
            }
            */
            // using sockets API
            if(args.length == 3){
                client = (Client)(new SocketClient(args[0], args[1]));
            }else if(args.length == 2){
                client = (Client)(new SocketClient(args[0]));
            }else{
                System.out.println("Wrong number of arguments");
                System.out.println("You must use username/password combination");
                System.out.println("Or API key");
                return;
            }
            client.isVerbose = true;

            try {
                try {
                    System.out.println("Your balance is " + client.getBalance()
                                                    + " US cents");
                } catch (IOException e) {
                    System.out.println("Failed fetching balance: " + e.toString());
                    return;
                }
                Captcha captcha = null;
                try {
                    // Upload a CAPTCHA and poll for its status with 120 seconds 
                    // timeout. Put you CAPTCHA image file name, file object, 
                    // input stream, or vector of bytes, and optional 
                    // solving timeout (in seconds) here.
                    if (args.length == 3){
                        captcha = client.decode(args[2], 120);
                    }else if (args.length == 2){
                        captcha = client.decode(args[1], 120);
                    }else{
                        System.out.println("Failed uploading CAPTCHA - args");
                        return;
                    }
                } catch (IOException e) {
                    System.out.println("Failed uploading CAPTCHA");
                    return;
                }
                if (null != captcha) {
                    System.out.println("CAPTCHA " + captcha.id + " solved: "
                                                           + captcha.text);

                    // Report incorrectly solved CAPTCHA if necessary.
                    // Make sure you've checked if the CAPTCHA was in fact 
                    // incorrectly solved, or else you might get banned as abuser.
                    /*try {
                        if (client.report(captcha)) {
                            System.out.println("Reported as incorrectly solved");
                        } else {
                            System.out.println(
                                      "Failed reporting incorrectly solved CAPTCHA");
                        }
                    } catch (IOException e) {
                        System.out.println(
                                "Failed reporting incorrectly solved CAPTCHA: "
                                        + e.toString());
                    }*/
                } else {
                    System.out.println("Failed solving CAPTCHA");
                }
            } catch (com.DeathByCaptcha.Exception e) {
                System.out.println(e);
            }
        }
    }

  // Repeat for other CAPTCHAs
  
  
      #!/usr/bin/env perl

      use strict;
      use warnings;
      use lib '.';
      use DeathByCaptcha::HttpClient;
      use DeathByCaptcha::SocketClient;


      my ($username, $password, $filename) = @ARGV;

      # Put your DeathByCaptcha username & password here:
      # if using authtoken authentication username must be "authtoken"
      # and $password must be the authtoken from user panel
      # using authtoken in user panel disables username/password authentication
      my $client = DeathByCaptcha::HttpClient->new($username, $password);
      # my $client = DeathByCaptcha::SocketClient->new($username, $password);

      printf("Your balance is %f US cents\n", $client->getBalance());

      if ($filename) {
        printf("Provided captcha: $filename \n");
        # Put your CAPTCHA image file name and desired solving timeout 
      # (in seconds) here:
        my $captcha = $client->decode($filename,
                                      +DeathByCaptcha::Client::DEFAULT_TIMEOUT);
        if (defined $captcha) {
            print "CAPTCHA " . $captcha->{"captcha"} .
                  " solved: " . $captcha->{"text"} . "\n";

            # Report if the CAPTCHA was solved incorrectly.
            # Make sure it was in fact solved incorrect, do not just report every
            # CAPTCHA, or you'll get banned as abuser.
            # $client->report($captcha->{"captcha"});
        }
      } else {
        printf("No captcha provided \n");
      }
  // Repeat for other CAPTCHAs
  

Статус: OK

Серверы полностью готовы к работе с более быстрым, чем в среднем, временем отклика.
  • Среднее время решения
  • 3 секунды - Normal CAPTCHAs (1 мин. назад)
  • 32 секунды - reCAPTCHA V2, V3, etc (1 мин. назад)
  • 20 секунды - hCAPTCHA & другие (1 мин. назад)
Chrome and Firefox logos
Доступны расширения браузера

Обновления

  1. Feb 26: NEW TYPE ADDED - Now supporting Friendly CAPTCHA!! See the details at https://deathbycaptcha.com/api/friendly
  2. Nov 22: Now supporting Amazon WAF!! See the details at https://deathbycaptcha.com/api/amazonwaf
  3. Nov 01: Today our Socket API was affected by a technical issue for a few hours. It's now sorted and back to 100%, working optimally. We sincerely apologize for the inconvenience this may have caused you. If you were affected, please don't hesitate to contact us: https://deathbycaptcha.com/contact and we'll be happy to assist/compensate you!

  4. Предыдущие обновления…

Поддерживать

Наша система разработана таким образом, чтобы быть максимально удобной и простой в использовании. Если у вас возникнут какие-либо проблемы с этим, просто напишите нам по адресу Электронная почта службы технической поддержки DBC com, и агент службы поддержки свяжется с вами как можно скорее.

Живая поддержка

Доступно с понедельника по пятницу (с 10:00 до 16:00 по восточному поясному времени) Live support image. Link to live support page