指数
新的亚马逊WAF API支持
什么是“Amazon WAF”挑战?
他们面临的挑战通常要求用户对齐并单击某些图像。亚马逊WAF码头(也称为AWS WAF CAPTCHA)在亚马逊AWS中构成了智能威胁缓解系统的组成部分。
为了您的方便,我们对Amazon WAF API实施了支持。如果您的软件支持它,并且支持最小的配置,那么您应能够立即使用Death By Captcha来解码Amazon WAF Captchas。
- Amazon WAF API: 提供了一个网站的URL,网站key,iv和上下文参数(在含有Amazon WAF Captcha的页面中发现),API返回一个你将用于提交包含Amazon WAF Challenge的页面中表单的token。
价钱
暂时,价格为$2.89/1K成功解决的Amazon WAF挑战。对于被报告为错误解决的Amazon WAF,您将不会被收费。请注意,此价格仅适用于新的Amazon WAF挑战,因此只有使用此特定API的客户将被收取所述费率。
亚马逊WAF API常见问题解答:
- Amazon WAF API的URL是什么?
-
要使用 Amazon WAF API,您需要向 http://api.dbcapi.me/api/captcha 发送 HTTP POST 请求
- Amazon WAF API的POST参数是什么?
-
- username: 您的DBC帐户用户名
- password: 您的DBC帐户密码
- type=16: 类型16指定这是Amazon Waf api
- waf_params=json(payload): 访问Amazon WAF挑战的数据 JSON有效负载结构:
-
proxy: 您的代理URL和凭据(如果有)。例证:
- http://127.0.0.1:3128
- http://user:[email protected]:3128
-
proxytype: 您的代理连接协议。有关支持的代理类型,请参见支持哪些代理类型? 示例:
- HTTP
-
sitekey: Amazon WAF网站的Amazon WAF网站密钥。
例子:
- AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AHDh0I R5vgzHNceHYqZR+GOAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCS DQEHATAeBglghkgBZQMEAS4wEQQMsYNQbVOLOfd/1ofjAgEQgDuhVKc EPc+9X/xAodxDqgyNNNyYJN1rM2gs4yBMeDXXc3z2ZxmD9jsQ8eNMGH
您需要找到Amazon WAF的站点密钥。您可以在呈现验证码的位置找到脚本并检查键参数的值。
- pageurl: Amazon WAF挑战的页面URL。此URL必须包括加载Amazon WAF的路径。示例:如果您要解决的Amazon WAF在http://test.com/path1中,则pageurl必须是http://test.com/path1而不是http://test.com。
- iv: 页面上找到的IV参数的值。您需要在渲染验证码的位置找到脚本并检查值。
- context: 页面上的上下文参数的值。您需要在渲染验证码的位置找到脚本并检查值。
- challengejs (optional): 挑战的URL。在Amazon WAF页面上找到的JS脚本。
- captchajs (optional): the Amazon WAF在页面上找到了Catcha.js脚本的URL。
代理参数是可选的,但我们强烈建议使用一个求解验证码的IP之间的不一致(如果没有提供代理)和IP提交了Amazon WAF进行验证(您的)。
注意:如果提供了代理,则proxytype是必需的参数。
waf_params的完整示例:
{ 'proxy': 'http://user:[email protected]:1234', 'proxytype': 'HTTP', 'sitekey': 'AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AHDh0IR5vgzHNceHYqZR+GOAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMsYNQbVOLOfd/1ofjAgEQgDuhVKc2V/0XTEPc+9X/xAodxDqgyNNNyYJN1rM2gs4yBMeDXXc3z2ZxmD9jsQ8eNMGHqeii56iL2Guh4A==', 'pageurl': 'https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest', 'iv': 'CgAFRjIw2vAAABSM', 'context': 'zPT0jOl1rQlUNaldX6LUpn4D6Tl9bJ8VUQ/NrWFxPiiFujn5bFHzpOlKYQG0Di/UrO/p0xItkf7oGrknHqnj+UjvWv+i0BFbm3vGKceNaGtjrg4wvydL2Li5XjwRUOMW4o+NgO3JPJhkgwRKSyK62cIIzrThlOBD+gmtvKW0JNtH8efKR8Y5mBf0gi8JokjUxq/XbyB6h83tfaiWrp3dkOJsEXHLkT/wwQlFZysA919LCA+XVqgJ9lurUZqHWar+9JHqWnc0ghckKCnUzubvSQzJl+eSIAIoYZrpuZQszOwWzo4=' }
带有可选的challengejs和captchajs的waf_params完整示例:
{ 'proxy': 'http://user:[email protected]:1234', 'proxytype': 'HTTP', 'sitekey': 'AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AHDh0IR5vgzHNceHYqZR+GOAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMsYNQbVOLOfd/1ofjAgEQgDuhVKc2V/0XTEPc+9X/xAodxDqgyNNNyYJN1rM2gs4yBMeDXXc3z2ZxmD9jsQ8eNMGHqeii56iL2Guh4A==', 'pageurl': 'https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest', 'iv': 'CgAFRjIw2vAAABSM', 'context': 'zPT0jOl1rQlUNaldX6LUpn4D6Tl9bJ8VUQ/NrWFxPiiFujn5bFHzpOlKYQG0Di/UrO/p0xItkf7oGrknHqnj+UjvWv+i0BFbm3vGKceNaGtjrg4wvydL2Li5XjwRUOMW4o+NgO3JPJhkgwRKSyK62cIIzrThlOBD+gmtvKW0JNtH8efKR8Y5mBf0gi8JokjUxq/XbyB6h83tfaiWrp3dkOJsEXHLkT/wwQlFZysA919LCA+XVqgJ9lurUZqHWar+9JHqWnc0ghckKCnUzubvSQzJl+eSIAIoYZrpuZQszOwWzo4=', 'challengejs': 'https://41bcdd4fb3cb.610cd090.us-east-1.token.awswaf.com/41bcdd4fb3cb/0d21de737ccb/cd77baa6c832/challenge.js', 'captchajs': 'https://41bcdd4fb3cb.610cd090.us-east-1.captcha.awswaf.com/41bcdd4fb3cb/0d21de737ccb/cd77baa6c832/captcha.js' }
- Amazon WAF API 的响应是什么?
-
Amazon WAF API响应具有以下结构。它有效一种用途,并具有1分钟的寿命。这将是如下的字符串:
"c3b50e60-d76c-4d13-ae25-159ec7ec3121:EQoAj4x6fnENAAAA:YIvITdQewAaLmaL Xo4r6Es783keXM2ahoP/b9ezX/L6oXfTFq1tmKwYvVJzUjO2soLNUvqD77hEspEE5O7o53 KZCyHtSciLLpkeFzaWCoDrnaAp2Lmjf3CrhnmlqG2QVQAyWzbrWZmk/YoHwwBqCQqFs2OE kTT2n3su1gZo60hKk8spYUXhwIqwdS3FIkr9KomVMX95z+2gvviKXfUM3Z9YUnpYxXMF/o Rcp7gxx1TlMwCM8pVjFjHnw+hhCJ8AoclKFEPe3+t+LRLU97Mqte+OowTeo03clXZRknIHZL7g="
在成功收到我们的API的响应后,这意味着已经解决了验证验挑战赛,下一个动作是生成一个名为 aws-waf-token 的饼干。此cookie是用于解决验证码的过程中随后的步骤的关键组件。分配给此cookie的价值应该是从我们的API中获得的响应。
- 支持哪些代理类型?
-
当前,仅支持 http 代理。对其他类型的支持将来会添加。
与API客户端一起使用Amazon WAF API:
/**
* Death by Captcha PHP API Amazon WAF 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";
// Set the proxy and Amazon Waf token data
$data = array(
'proxy' => 'http://user:[email protected]:1234',
'proxytype' => 'HTTP',
'sitekey' => 'AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AHDh0IR5vgzHNceHYqZR+GOAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMsYNQbVOLOfd/1ofjAgEQgDuhVKc2V/0XTEPc+9X/xAodxDqgyNNNyYJN1rM2gs4yBMeDXXc3z2ZxmD9jsQ8eNMGHqeii56iL2Guh4A==',
'pageurl' => 'https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest',
'iv' => 'CgAFRjIw2vAAABSM',
'context' => 'zPT0jOl1rQlUNaldX6LUpn4D6Tl9bJ8VUQ/NrWFxPiiFujn5bFHzpOlKYQG0Di/UrO/p0xItkf7oGrknHqnj+UjvWv+i0BFbm3vGKceNaGtjrg4wvydL2Li5XjwRUOMW4o+NgO3JPJhkgwRKSyK62cIIzrThlOBD+gmtvKW0JNtH8efKR8Y5mBf0gi8JokjUxq/XbyB6h83tfaiWrp3dkOJsEXHLkT/wwQlFZysA919LCA+XVqgJ9lurUZqHWar+9JHqWnc0ghckKCnUzubvSQzJl+eSIAIoYZrpuZQszOwWzo4='
);
//Create a json string
$json = json_encode($data);
//Put the type and the json payload
$extra = [
'type' => 16,
'waf_params' => $json,
];
// 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']);
}
}
# Amazon WAF
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"
# to use socket client
# client = deathbycaptcha.SocketClient(username, password)
# to use authtoken
# client = deathbycaptcha.SocketClient(username, password, authtoken)
client = deathbycaptcha.HttpClient(username, password)
# Put the proxy and Amazon Waf data
Captcha_dict = {
'proxy': 'http://user:[email protected]:1234',
'proxytype': 'HTTP',
'sitekey': 'AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AHDh0IR5vgzHNceHYqZR+GOAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMsYNQbVOLOfd/1ofjAgEQgDuhVKc2V/0XTEPc+9X/xAodxDqgyNNNyYJN1rM2gs4yBMeDXXc3z2ZxmD9jsQ8eNMGHqeii56iL2Guh4A==',
'pageurl': 'https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest',
'iv': 'CgAFRjIw2vAAABSM',
'context': 'zPT0jOl1rQlUNaldX6LUpn4D6Tl9bJ8VUQ/NrWFxPiiFujn5bFHzpOlKYQG0Di/UrO/p0xItkf7oGrknHqnj+UjvWv+i0BFbm3vGKceNaGtjrg4wvydL2Li5XjwRUOMW4o+NgO3JPJhkgwRKSyK62cIIzrThlOBD+gmtvKW0JNtH8efKR8Y5mBf0gi8JokjUxq/XbyB6h83tfaiWrp3dkOJsEXHLkT/wwQlFZysA919LCA+XVqgJ9lurUZqHWar+9JHqWnc0ghckKCnUzubvSQzJl+eSIAIoYZrpuZQszOwWzo4='
}
# Create a json string
json_Captcha = json.dumps(Captcha_dict)
try:
balance = client.get_balance()
print(balance)
# Put your CAPTCHA type and Json payload here:
captcha = client.decode(type=16, waf_params=json_Captcha)
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.io.IOException;
class ExampleAmazonWaf {
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";
/* 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 {
// Proxy and Amazon Waf data
String proxy = "";
String proxytype = "";
String sitekey="AQIDAHjyBMeDXXc3z2ZxmD9jsQ8eNMGHqeii56iL2Guh4A==";
String pageurl = "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest";
String iv = "CgAFRjIw2vAAABSM";
String context = "zPT0jOl1rQlUN";
/* Upload an Amazon Waf and poll for its status with 120 seconds timeout.
Put your proxy, proxy type, page sitekey, page url and solving timeout (in seconds)
0 or nothing for the default timeout value. */
JSONObject json_params = new JSONObject();
json_params.put("proxy", proxy);
json_params.put("proxytype", proxytype);
json_params.put("sitekey", sitekey);
json_params.put("pageurl", pageurl);
json_params.put("iv", iv);
json_params.put("context", context);
captcha = client.decode(16, json_params);
*/
} 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);
}
}
}
// Amazon WAF
using System;
using System.Collections;
using DeathByCaptcha;
namespace DBC_Examples.examples
{
public class AmazonWafExample
{
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); */
string proxy = "http://user:[email protected]:1234";
string proxyType = "HTTP";
string sitekey = "AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AHDh0IR5vgzHNceHYqZR+GOAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMsYNQbVOLOfd/1ofjAgEQgDuhVKc2V/0XTEPc+9X/xAodxDqgyNNNyYJN1rM2gs4yBMeDXXc3z2ZxmD9jsQ8eNMGHqeii56iL2Guh4A==";
string pageurl = "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest";
string iv = "CgAFRjIw2vAAABSM";
string context = "zPT0jOl1rQlUNaldX6LUpn4D6Tl9bJ8VUQ/NrWFxPiiFujn5bFHzpOlKYQG0Di/UrO/p0xItkf7oGrknHqnj+UjvWv+i0BFbm3vGKceNaGtjrg4wvydL2Li5XjwRUOMW4o+NgO3JPJhkgwRKSyK62cIIzrThlOBD+gmtvKW0JNtH8efKR8Y5mBf0gi8JokjUxq/XbyB6h83tfaiWrp3dkOJsEXHLkT/wwQlFZysA919LCA+XVqgJ9lurUZqHWar+9JHqWnc0ghckKCnUzubvSQzJl+eSIAIoYZrpuZQszOwWzo4=";
string wafParams = "{\"proxy\": \"" + proxy + "\"," +
"\"proxytype\": \"" + proxyType + "\"," +
"\"sitekey\": \"" + sitekey + "\"," +
"\"pageurl\": \"" + pageurl + "\"," +
"\"iv\": \"" + iv + "\"," +
"\"context\": \"" + context + "\"}";
try
{
double balance = client.GetBalance();
/* Upload a CAPTCHA and poll for its status. Put the Amazon Waf
Json payload, 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", 16},
{"waf_params", wafParams}
});
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 DeathByCaptcha
Public Class AmazonWaf
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)
' Proxy and Amazon Waf data
Dim proxy as String = "http://user:[email protected]:1234"
Dim proxyType as String = "HTTP"
Dim sitekey as String = "AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AHDh0IR5vgzHNceHYqZR+GOAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMsYNQbVOLOfd/1ofjAgEQgDuhVKc2V/0XTEPc+9X/xAodxDqgyNNNyYJN1rM2gs4yBMeDXXc3z2ZxmD9jsQ8eNMGHqeii56iL2Guh4A=="
Dim pageurl as String = "https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest"
Dim iv as string = "CgAFRjIw2vAAABSM"
Dim context as string = "zPT0jOl1rQlUNaldX6LUpn4D6Tl9bJ8VUQ/NrWFxPiiFujn5bFHzpOlKYQG0Di/UrO/p0xItkf7oGrknHqnj+UjvWv+i0BFbm3vGKceNaGtjrg4wvydL2Li5XjwRUOMW4o+NgO3JPJhkgwRKSyK62cIIzrThlOBD+gmtvKW0JNtH8efKR8Y5mBf0gi8JokjUxq/XbyB6h83tfaiWrp3dkOJsEXHLkT/wwQlFZysA919LCA+XVqgJ9lurUZqHWar+9JHqWnc0ghckKCnUzubvSQzJl+eSIAIoYZrpuZQszOwWzo4="
Console.WriteLine(String.Format("Your balance is {0,2:f} US cents",
client.Balance))
' Create a JSON with the extra data
Dim wafParams as String = "{""proxy"": """ + proxy + """," +
"""proxytype"": """ + proxyType + """," +
"""sitekey"": """ + sitekey + """," +
"""pageurl"": """ + pageurl + """," +
"""iv"": """ + iv + """," +
"""context"": """ + context + """}"
' Create the payload with the type and the extra data
Dim extraData As New Hashtable()
extraData.Add("type", 16)
extraData.Add("waf_params", wafParams)
' Upload a CAPTCHA and poll for its status. Put the Amazon Waf
' Json payload, 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 Amazon Waf usage example
*/
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
// Proxy and Amazon Waf token data
const waf_params = JSON.stringify({
'proxy': 'http://username:[email protected]:3128',
'proxytype': 'HTTP',
'sitekey': 'AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AHDh0IR5vgzHNceHYqZR+GOAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMsYNQbVOLOfd/1ofjAgEQgDuhVKc2V/0XTEPc+9X/xAodxDqgyNNNyYJN1rM2gs4yBMeDXXc3z2ZxmD9jsQ8eNMGHqeii56iL2Guh4A==',
'pageurl': 'https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest',
'iv': 'CgAFRjIw2vAAABSM',
'context': 'zPT0jOl1rQlUNaldX6LUpn4D6Tl9bJ8VUQ/NrWFxPiiFujn5bFHzpOlKYQG0Di/UrO/p0xItkf7oGrknHqnj+UjvWv+i0BFbm3vGKceNaGtjrg4wvydL2Li5XjwRUOMW4o+NgO3JPJhkgwRKSyK62cIIzrThlOBD+gmtvKW0JNtH8efKR8Y5mBf0gi8JokjUxq/XbyB6h83tfaiWrp3dkOJsEXHLkT/wwQlFZysA919LCA+XVqgJ9lurUZqHWar+9JHqWnc0ghckKCnUzubvSQzJl+eSIAIoYZrpuZQszOwWzo4=',
});
// 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 16 & waf_params extra arguments
client.decode({extra: {type: 16, waf_params: waf_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);
* });
*/
}
});