指数
新的音频识别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);
* });
*/
}
});