Использование аутентификации токена
Эта страница предназначена для пользователей, которые хотят использовать аутентификацию токена на Death By Captcha API.
Токен аутентификация FAQ
- Зачем использовать аутентификацию токена?
-
Аутентификация на основе токков позволяет пользователям сохранять имя пользователя и пароль еще более безопасными.
- Почему жетоны лучше, чем пароли?
-
Традиционные пароли имеют одну огромную слабость: они созданы человеком. Человеческие пароли, как правило, довольно слабые и легко взломать. Мы все повторно использовали старые пароли снова и снова, потому что их легко запомнить.
- Где я могу получить свой токен для аутентификации?
-
Вы можете получить его от панели пользователей, чтобы использовать аутентификацию токенов, вам необходимо включить 2FA аутентификацию.
Обратитесь к Help 2FA, чтобы активировать 2FA: Узнайте, как включить аутентификацию 2FA
После этого вы можете получить свой токен от панель пользователя
- Могу ли я использовать аутентификацию токена и аутентификацию имени пользователя/пароля одновременно?
-
Нет, вы можете включить/отключить аутентификацию токена в любое время на панели пользователя, но вы не можете использовать оба одновременно. Если аутентификация токена отключена, вы должны использовать аутентификацию имени пользователя/пароля, если включена аутентификация токена, вы должны использовать аутентификацию токена.
- Где я могу включить/отключить аутентификацию токена?
-
На панели пользователя есть возможность включить/отключить аутентификацию токена.
- Что я должен делать дальше?
-
При использовании аутентификации токена на 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:[email protected]: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:[email protected]: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:[email protected]: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