指数

下载基于API客户端的示例代码:

新的音频识别API支持

什么是“音频识别”挑战?

音频识别CAPTCHA是一种挑战,通常需要用户听取音频剪辑,并正确输入他们听到的一系列字母或数字。

为了您的方便,我们实施了对音频识别API的支持。如果您的软件可以与其一起工作并支持最小配置,那么您应该能够立即使用Death By Captcha解码音频。

  • Audio Recognition API: 提供音频文件和语言的base64字符串,API返回音频的文本,您将使用音频挑战在页面中提交表单。

价钱

目前的价格为每成功解决1000次音频识别挑战收费$0.59。对于被报告为解决错误的音频不会产生费用。请注意,此定价仅适用于新的音频识别挑战,因此只有使用该特定API的客户会被收取相应费率。

音频识别API常见问题:

音频识别api url 是什么?

要使用音频识别API 您必须将http Post请求发送到http://api.dbcapi.me/api/captcha

音频识别API 的帖子参数是什么?

  • username: 您的DBC帐户用户名
  • password: 您的DBC帐户密码
  • type=13: 类型13指定这是音频识别 api
  • audio: 基本64编码的字符串表示音频文件数据。我们目前仅支持mp3格式。
  • language: 音频内容的检测语言。受支持的语言是: en,fr,de,el,pt,ru

  • base64编码字符串音频的示例:

    
    UklGRiQAAABXQVZFZm10IBAAAAABAAEAIlYAAESsAAACABAAZGF0YQQAAAAA
                

音频识别API 支持哪些语言?

支持的语言如下表所示。

语言代码(语言参数 语言名称
en English
fr French
de German
el Greek
pt Portuguese
ru Russian
音频识别API 的响应是什么?

音频识别API的响应遵循以下概述的结构。它将以字符串的形式,如下所示:


"This is an example response from the Audio Recognition API."
      

使用API​​客户端使用音频识别API:


    /**
     * Death by Captcha PHP API Audio usage example
     *
     * @package DBCAPI
     * @subpackage PHP
     */

    /**
     * DBC API clients
     */
    require_once '../deathbycaptcha.php';

    $username = "username";  // DBC account username
    $password = "password";  // DBC account password
    $token_from_panel = "your-token-from-panel";  // DBC account authtoken

    // Use DeathByCaptcha_SocketClient() class if you want to use SOCKET API.
    $client = new DeathByCaptcha_HttpClient($username, $password);
    $client->is_verbose = true;

    // To use token the first parameter must be authtoken.
    // $client = new DeathByCaptcha_HttpClient("authtoken", $token_from_panel);

    echo "Your balance is {$client->balance} US cents\n";

    // Read the audio file and get the base64 encoded string
    try {
      $fileData = file_get_contents("images/audio.mp3");
      $base64Data = base64_encode($fileData);
    } catch (Exception $e) {
      echo 'An error occurred while reading the file: ',  $e->getMessage(), "\n";
    }

    //Put the type, the audio base64 string and the language
    $extra = [
      'type' => 13,
      'audio' => $base64Data,
      'language' => "en"
    ];

    // Put null the first parameter and add the extra payload
    if ($captcha = $client->decode(null, $extra)) {
        echo "CAPTCHA {$captcha['captcha']} uploaded\n";

        sleep(DeathByCaptcha_Client::DEFAULT_TIMEOUT);

        // Poll for CAPTCHA indexes:
        if ($text = $client->get_text($captcha['captcha'])) {
            echo "CAPTCHA {$captcha['captcha']} solved: {$text}\n";

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

    # audio
    import deathbycaptcha
    import json
    import base64

    # 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"

    # to use socket client
    # client = deathbycaptcha.SocketClient(username, password)

    # to use authtoken
    # client = deathbycaptcha.SocketClient(username, password, authtoken)

    client = deathbycaptcha.HttpClient(username, password)

    # Read the audio file and get the base64 string
    try:
      with open('images/audio.mp3', 'rb') as file:
        audio_data = file.read()
        base_string = base64.b64encode(audio_data).decode()
    except Exception as e:
      print("An error occurred while converting the file to base64: " + str(e))

    try:
        balance = client.get_balance()
        print(balance)

        # Put your CAPTCHA type, the base64 string and the language:
        captcha = client.decode(type=13, audio=base_string, language="en")
        if captcha:
            # The CAPTCHA was solved; captcha["captcha"] item holds its
            # numeric ID, and captcha["text"] its text token solution.
            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")

        

    import com.DeathByCaptcha.AccessDeniedException;
    import com.DeathByCaptcha.Client;
    import com.DeathByCaptcha.HttpClient;
    import com.DeathByCaptcha.SocketClient;
    import com.DeathByCaptcha.Captcha;
    import org.json.JSONObject;

    import java.util.Base64;
    import java.nio.file.Files; 
    import java.nio.file.Paths;
    import java.io.IOException;

    class ExampleAudioCaptcha {
        public static void main(String[] args)
                throws Exception {

            // Put your DBC username & password or authtoken here:
            String username = "your_username_here";
            String password = "your_password_here";
            String authtoken = "your_authtoken_here";

            // The path to the audio file
            String filePath = "images/audio.mp3";
            String encodedString = null;

            // Read the audio file and encode the file to base64
            try {
              byte[] fileContent = Files.readAllBytes(Paths.get(filePath));
              encodedString = Base64.getEncoder().encodeToString(fileContent);
            } catch (IOException e) {
              e.printStackTrace();
            }

            String audio = encodedString;
            String language = "en";

            /* Death By Captcha Socket Client
               Client client = (Client) (new SocketClient(username, password));
               Death By Captcha http Client */
            Client client = (Client) (new HttpClient(username, password));
            client.isVerbose = true;

            /* Using authtoken
               Client client = (Client) new HttpClient(authtoken); */

            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 audio file base64 encoded, the language and solving
                      timeout (in seconds) if 0 the default value take place.
                      please note we are specifying type=13 */
                    captcha = client.decode(13, audio, language);
                } 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);
            }


        }
    }

        

    // audio

    using System;
    using System.IO;
    using System.Collections;
    using DeathByCaptcha;

    namespace DBC_Examples.examples
    {
        public class AudioExample
        {
            public void Main()
            {
                // Put your DeathByCaptcha account username and password here.
                string username = "your username";
                string password = "your password";
                // string token_from_panel = "your-token-from-panel";

                /* Death By Captcha Socket Client
                   Client client = (Client) new SocketClient(username, password);
                   Death By Captcha http Client */
                Client client = (Client) new HttpClient(username, password);

                /* To use token authentication the first parameter must
                be "authtoken".
                Client client = (Client) new HttpClient("authtoken",
                                                        token_from_panel); */

                // Read the audio file and convert it to base64 string
                string base64String = null;
                try
                {
                  byte[] fileBytes = File.ReadAllBytes("images/audio.mp3");
                  base64String = Convert.ToBase64String(fileBytes);
                }
                catch (Exception ex)
                {
                  Console.WriteLine("An error occurred while converting the file to base64: " + ex.Message);
                }
                
                try
                {
                    double balance = client.GetBalance();

                    /* Upload a CAPTCHA and poll for its status. Put the audio base64 string,
                      the language, CAPTCHA type and desired solving timeout (in seconds)
                      here. If solved, you'll receive a DeathByCaptcha.Captcha object. */
                    Captcha captcha = client.Decode(Client.DefaultTimeout,
                        new Hashtable()
                        {
                            {"type", 13},
                            {"language", "en"},
                            {"audio", base64String}
                        });

                    if (null != captcha)
                    {
                        /* The CAPTCHA was solved; captcha.Id property holds
                        its numeric ID, and captcha.Text holds its text. */
                        Console.WriteLine("CAPTCHA {0} solved: {1}",
                            captcha.Id, captcha.Text);

    //                  if ( /* check if the CAPTCHA was incorrectly solved */)
    //                  {
    //                      client.Report(captcha);
    //                  }
                    }
                }
                catch (AccessDeniedException e)
                {
                    /* Access to DBC API denied,
                                check your credentials and/or balance */
                    Console.WriteLine("<<< catch : " + e.ToString());
                }
            }
        }
    }

        

    Imports System
    Imports System.IO
    Imports System.Threading
    Imports System.Collections

    Imports DeathByCaptcha

    Public Class Audio
        Sub Main(args As String())

            ' Put your DBC username & password or authtoken here:
            Dim username = "username"
            Dim password = "password"
            Dim token_from_panel = "your-token-from-panel"

            ' DBC Socket API client
            ' Dim client As New SocketClient(username, password)
            ' DBC HTTP API client
            Dim client As New HttpClient(username, password)

            ' To use token auth the first parameter must be "authtoken"
            ' Dim client As New HttpClient("authtoken", token_from_panel)

            ' Read the audio file and convert it to base64 string
            Dim base64String As String = Nothing
            Try
              Dim fileBytes As Byte() = File.ReadAllBytes("images/audio.mp3")
              base64String = Convert.ToBase64String(fileBytes)
            Catch ex As System.Exception
              Console.WriteLine("An error occurred while converting the file to base64: " & ex.Message)
            End Try

            Console.WriteLine(String.Format("Your balance is {0,2:f} US cents",
                                            client.Balance))

            ' Create the payload with the type and the data
            Dim extraData As New Hashtable()
            extraData.Add("type", 13)
            extraData.Add("language", "en")
            extraData.Add("audio", base64String)

            ' Upload a CAPTCHA and poll for its status. Put the Audio
            ' parameters, CAPTCHA type and desired solving timeout (in seconds)
            ' here. If solved, you'll receive a DeathByCaptcha.Captcha object.
            Dim captcha As Captcha = client.Decode(
                                    DeathByCaptcha.Client.DefaultTimeout, extraData)
            If captcha IsNot Nothing Then
                Console.WriteLine(String.Format("CAPTCHA {0:d} solved: {1}",
                                                captcha.Id, captcha.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 client.Report(captcha) Then
                '    Console.WriteLine("Reported as incorrectly solved")
                ' Else
                '    Console.WriteLine("Failed reporting as incorrectly solved")
                ' End If
            End If
        End Sub
    End
        

    /*
    * Death by Captcha Node.js API Audio usage example
    */

    const fs = require('fs');
    const dbc = require('../deathbycaptcha');

    const username = 'username';     // DBC account username
    const password = 'password';     // DBC account password
    const token_from_panel = 'your-token-from-panel';   // DBC account authtoken

    // Read the audio file and convert it to base64 string
    let base64String = null;
    try {
      const fileData = fs.readFileSync('images/audio.mp3');
      base64String = fileData.toString('base64');
    } catch (error) {
      console.error('An error occurred while reading the file:', error);
    }

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

    // To use token authentication the first parameter must be "authtoken"
    // const client = new dbc.HttpClient("authtoken", token_from_panel);

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

    // Solve captcha with type 13 & audio base64 string & language
    client.decode({extra: {type: 13, audio: base64String, language: "en"}}, (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);
            * });
            */
        }

    });
        

地位: OK

服务器以比平均响应时间更快的速度全面运行。
  • 平均求解时间
  • 3 秒 - Normal CAPTCHAs (1分钟。前)
  • 29 秒 - reCAPTCHA V2, V3, etc (1分钟。前)
  • 14 秒 - hCAPTCHA & 其他的 (1分钟。前)
Chrome and Firefox logos
可用的浏览器扩展名

更新

  1. Apr 26: RESOLVED - The deathbycaptcha.com website (the API remained/remains fully functional) was sporadically inaccessible due to network issues on April 25th & 26th. This situation was fully resolved and everything is back to 100%.
  2. Feb 26: NEW TYPE ADDED - Now supporting Friendly CAPTCHA!! See the details at https://deathbycaptcha.com/api/friendly
  3. Nov 22: Now supporting Amazon WAF!! See the details at https://deathbycaptcha.com/api/amazonwaf

  4. 之前的更新…

支持

我们的系统设计为完全用户友好且易于使用。如果您有任何问题,只需发送电子邮件至DBC 技术支持电子邮件com,支持代理将尽快与您联系。

现场支持

周一至周五可用(美国东部标准时间上午 10 点至下午 4 点) Live support image. Link to live support page