指数
下载基于API客户端的示例代码:
recaptcha v3 API支持
什么是“Recaptcha V3”挑战?
reCAPTCHA v3 是 Google 推出的一项新的隐形安全措施。 它添加了验证码,而不强迫用户解决任何挑战。 使用称为“操作”的概念来识别机器人流量中的真实流量。
我们的服务现在支持Google reCAPTCHA v3。这个API与tokens(reCAPTCHA v2) API非常相似,只添加了两个新参数,一个是用于动作的,另一个是用于最小分数的.
recaptcha v3从每个用户返回A 得分,可以评估用户是机器人还是人类。然后,该网站使用得分值的范围从0到1,以决定是否接受请求。较低的分数接近0是机器人。
reCAPTCHA v3的“action”参数是一项额外数据,用于区分不同的验证码验证,例如登录、注册、销售等。请注意。
价钱
暂时,价格为 $2.89/1k recaptcha V3挑战正确解决了。据报道,您不会为您的验证验证而被账单。请注意,此定价仅适用于新的recaptcha V3,因此只有使用此特定API的客户才会收取上述费率。
recaptcha v3 API常见问题:
是一个新参数,允许在网站上处理用户操作以不同的方式处理。
为了找到此问题,我们需要检查网站的JavaScript代码,以寻找Grecaptcha.ectecute函数的呼叫。例子:
grecaptcha.execute("6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_f", {action: something})
有时很难找到它,我们需要查看所有JavaScript文件。我们也可以尝试在____grecaptcha_cfg配置对象中找到操作参数的值。另外,我们可以调用grecaptcha.ectute并检查JavaScript代码。如果我们没有在请求中提供诉讼,API将使用“验证”默认值。
验证码分辨率所需的最低分数。我们建议使用0.3分钟得分值,得分高于0.3的得分很难获得。
- username: 您的DBC帐户用户名
- password: 您的DBC帐户密码
- type=5: 类型5指定这是recaptcha v3 api
- token_params=json(payload): 访问recaptcha挑战的数据 JSON有效负载结构:
-
proxy: 您的代理URL和凭据(如果有)。例证:
- http://127.0.0.1:3128
- http://user:password@127.0.0.1:3128
-
proxytype: 您的代理连接协议。有关支持的代理类型,请参见支持哪些代理类型? 示例:
- HTTP
-
googlekey: 包含Recaptcha的网站的Google Recaptcha网站密钥。有关网站密钥的更多详细信息,请参见什么是Recaptcha网站密钥?示例:
- 6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
- pageurl: 页面的URL带有recaptcha挑战。该URL必须包括加载recaptcha的路径。示例:如果您要解决的recaptcha在http://test.com/path1中,则pageurl必须是http://test.com/path1而不是http://test.com。
- action: 动作名称。
- min_score: 最低分数,通常为0.3
注意:如果提供了代理,则proxytype是必需的参数。
Token_params的完整示例:
{
"proxy": "http://127.0.0.1:3128",
"proxytype": "HTTP",
"googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
"pageurl": "http://test.com/path_with_recaptcha",
"action": "example/action",
"min_score": 0.3
}
响应与普通验证码具有相同的结构。有关响应的详细信息,请参见轮询已上传验证码的状态。解决方案将在响应的文本键中提供。它只有一次使用的有效期为1分钟。
RECAPTCHA V3 API的卷曲用法代码示例:
-
1)发送有效载荷:
请注意,我们正在使用类型=“5”作为recaptcha V3 API。
curl --header 'Expect: ' -F username=your_username_here \
-F password=your_password_here \
-F type='5' \
-F token_params='{"proxy": "http://user:password@127.0.0.1:1234",
"proxytype": "HTTP",
"googlekey": "6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b",
"pageurl": "http://google.com",
"action": "example/action",
"min_score": 0.3}' \
http://api.dbcapi.me/api/captcha
2)拉码:拿到给定的CAPTCHA_ID并提出这样的请求:
curl -H "Accept: application/json" http://api.dbcapi.me/api/captcha/CAPTCHA_ID
结果是JSON弦乐,该字段“文本”包括相应的解决方案:
'{"status": 0, "captcha": 2911096,
"is_correct": true, "text": "textSolution"}'
使用API客户端使用recaptcha v3 API:
# recaptcha_v3
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 recaptcha_v3 data
# recaptcha_v3 requires 'action' that is the action that triggers
# recaptcha_v3 validation
# if 'action' isn't provided we use the default value "verify"
# also you need to provide 'min_score', a number from 0.1 to 0.9,
# this is the minimum score acceptable from recaptchaV3
Captcha_dict = {
'proxy': 'http://user:password@127.0.0.1:1234',
'proxytype': 'HTTP',
'googlekey': '6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_f',
'pageurl': 'http://google.com',
'action': "example/action",
'min_score': 0.3}
# 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=5, token_params=json_Captcha)
if captcha:
# The CAPTCHA was solved; captcha["captcha"] item holds its
# numeric ID, and captcha["text"] item it's a 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")
令牌API支持的新Recaptcha v2
什么是“Recaptcha V2”挑战?
他们有新的recaptcha挑战,通常要求用户识别并单击某些图像。他们不要与传统单词/数字recaptchas混淆(这些单词没有图像)。
为了方便起见,我们支持了Token API对新的Recaptcha的支持。如果您的软件可以使用它,并支持最小配置,则应立即使用Death By Captcha对验证码进行解码。
- Token Image API: 提供了一个站点URL和站点密钥,API返回一个令牌,您将使用Recaptcha Challenge在页面中提交表格。
我们还支持通过我们的 2captcha api 来解决令牌验证码。一探究竟!
价钱
目前,价格为 $2.89/1k代币recaptcha挑战正确解决。您不会因为报道错误解决的令牌图像而被收费。请注意,此定价仅适用于新的令牌recaptcha图像,因此只有使用此特定API的客户才会收取上述费率。
令牌图像API常见问题解答:
- 令牌图像API URL是什么?
-
要使用令牌映像API您必须将http Post请求发送到http://api.dbcapi.me/api/captcha
- 令牌图像API 的帖子参数是什么?
-
- username: 您的DBC帐户用户名
- password: 您的DBC帐户密码
- type=4: 类型4指定这是一个新的recaptcha 令牌图像api
- token_params=json(payload): 访问recaptcha挑战的数据 JSON有效负载结构:
-
proxy: 您的代理URL和凭据(如果有)。例证:
- http://127.0.0.1:3128
- http://user:password@127.0.0.1:3128
-
proxytype: 您的代理连接协议。有关支持的代理类型,请参见支持哪些代理类型? 示例:
- HTTP
-
googlekey: 具有reCAPTCHA的网站的Google reCAPTCHA网站密钥。有关站点密钥的更多详细信息,请参见什么是reCAPTCHA网站密钥?。示例:
- 6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
- pageurl: 页面的URL带有recaptcha挑战。该URL必须包括加载recaptcha的路径。示例:如果您要解决的recaptcha在http://test.com/path1中,则pageurl必须是http://test.com/path1而不是http://test.com。
- data-s: 此参数仅用于求解Google搜索令牌,即可见的参数,而Google搜索触发机器人保护。使用Google搜索响应HTML中的Data-S值。对于常规令牌,不使用此参数。
注意:如果提供了代理,则proxytype是必需的参数。
Token_params的完整示例:
{ "proxy": "http://127.0.0.1:3128", "proxytype": "HTTP", "googlekey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", "pageurl": "http://test.com/path_with_recaptcha" }
- 可以使用令牌API在Google搜索上解决recaptcha v2吗?
-
Google搜索验证码,可见的,而Google搜索触发机器人保护。从2020年5月底开始,现在需要一个新的参数data-s来解决这些验证码。在Google搜索中,recaptcha HTML代码找到data-s值,并作为token_params的一部分发送。请注意,data-s值只能加载一次,避免在Google recaptcha表单上加载JS代码。 data-s参数对于每个码头都是唯一的。
token_params的示例用于Google搜索验证码:{ "googlekey": "6Le-wvkSA...", "pageurl": "...", "data-s": "IUdfh4rh0sd..." }
- 令牌图像api的响应是什么?
-
令牌图像API响应的结构与常规验证码响应相同。有关响应的详细信息,请参见轮询已上传CAPTCHA的状态。令牌将出现在响应的text键中。它有效期为2分钟,仅可使用一次。令牌将是以下字符串:
"03AOPBWq_RPO2vLzyk0h8gH0cA2X4v3tpYCPZR6Y4yxKy1s3Eo7CHZRQntxrd saD2H0e6S3547xi1FlqJB4rob46J0-wfZMj6YpyVa0WGCfpWzBWcLn7tO_EYs vEC_3kfLNINWa5LnKrnJTDXTOz-JuCKvEXx0EQqzb0OU4z2np4uyu79lc_Ndv L0IRFc3Cslu6UFV04CIfqXJBWCE5MY0Ag918r14b43ZdpwHSaVVrUqzCQMCyb cGq0yxLQf9eSexFiAWmcWLI5nVNA81meTXhQlyCn5bbbI2IMSEErDqceZjf1m X3M67BhIb4"
要学习如何使用令牌解决recaptcha,请参阅如何使用令牌解决recaptcha?
- 支持哪些代理类型?
-
当前,仅支持 http 代理。对其他类型的支持将来会添加。
- 什么是recaptcha网站密钥?
-
这是使用recaptcha服务的每个网站的唯一标识符分配。要查找网站密钥,请按照以下步骤:
- 访问您要绕过的网站。
- 通过执行以下操作之一,打开浏览器的开发人员控制台:
- 使用浏览器的键盘快捷键(请参阅此链接以寻求帮助)
- 右键单击页面上的任何位置,单击“检查”或“ Inspect element”选项,然后单击打开的窗口的“控制台”选项卡。
- 如果上述方法都不起作用,请google 如何打开您的浏览器控制台。
- 将此 JavaScript 指令粘贴到开发人员控制台上: document.getElementsByClassName('g-recaptcha')[0].getAttribute("data-sitekey");
- 按Enter键。结果应该是像Token图片API的POST参数是什么?问题中GoogleKey部分用作示例的字符串。此字符串是网站密钥。
- 找不到数据站点,我该怎么办?
-
我们可以找到检查元素或查看页面源代码并搜索名称的Data-SiteKey。
但是在某些情况下,这种数据sitekey并不是那么明显,在这种情况下,尝试搜索以6升开头的类似单词或某些字符串,没有特定的方法可以找到SiteKey,如果是隐秘/硬性的情况。要获取数据站点,我们需要利用我们的技能来获得它。 - 如何使用令牌解决recaptcha?
-
有三种可以使用令牌的方式:
第一个方法是使用表单的
action
属性向URL发送POST请求,其中令牌设置为id为g-recaptcha-response
的文本区域字段的值。其他字段可以按需填写。考虑到它不需要浏览器仿真或DOM操作,这是推荐的使用令牌的方法。第二种方法是操纵DOM。如果您正在开发脚本来解决recaptchas,请检查您使用的编程语言或框架是否具有操纵DOM或执行JavaScript指令的库。需要完成以下步骤以成功使用令牌:
-
将令牌作为元素的内部HTML,上面有ID"g-recaptcha-response"。
- 要使用JavaScript执行此操作,请运行:document.getElementById(`g-recaptcha-response`).innerHTML = TOKEN;,其中TOKEN是API响应的text键返回的字符串。如果返回的字符串还没有双引号("),请在令牌之前和之后放置双引号。
-
提交表格或填写需要解决recaptcha的诉讼。
- 要使用JavaScript实现此目的,请执行:document.getElementById(`FORM_ID`).submit();其中FORM_ID是要提交的表单的ID。
- 有时不够仅提交表格解决recaptcha,在这些情况下,我们需要将结果令牌从API复制到G-Recaptcha-Response元素中,因此只需小心才能应对确切的结果令牌,并避免使用空间和其他空间和其他字符,例如引号或双引号。将结果令牌复制到元素之后,我们需要将小部件事件激活为验证码,以将其标记为已解决。
- 每个站点都有一种实现recaptcha的独特方法,建议在尝试自动化它之前手动进行新站点的过程,在我们确定解决recaptcha的所有步骤之后,我们可以使用我们的工具来自动化该过程。我们考虑到有时提交表格会激活recaptcha,有时我们没有提交表格,或者在其他情况下是验证码的回调,该回调激活了事件以访问资源。
注意:方法2和3仅应用于测试目的,因为它们比第一个要慢得多,资源密集得多。
-
将令牌作为元素的内部HTML,上面有ID"g-recaptcha-response"。
- 什么是recaptcha回调?
-
某些站点可以配置recaptcha,以对成功验证进行回调,并避免使用提交表单(使用G-Recaptcha标签上的数据呼叫表属性),或者如果使用显式渲染,则通过`callback`参数。
例如,回调函数通常在recaptcha的数据呼叫参数中定义,例如:
或在某些情况下,它定义为grecaptcha.render函数的回调参数,例如:data-callback="myFunction";
最后,我们要做的就是调用该功能:grecaptcha.render('example', { 'sitekey' : 'site-key', 'callback' : myFunction });
myFunction();
- 我正在使用从API中获得的令牌,为什么recaptcha无法解决?
-
所有的网站都会以自己的方式实施recaptcha,这意味着我们需要分析每个网站的recaptcha实现,然后再尝试使用结果令牌。一旦我们确定了这个特定网站是如何工作的,我们就可以像普通用户一样解决reCAPTCHA挑战,并获得对其实现的深入了解。然后我们可以开始手动尝试使用API生成结果令牌,在确保程序正确之后才能进行自动化。为了确保如何使用recaptcha,我们可以查看reCAPTCHA v2文档。(英文)
- 如何验证我的代理被用来解决验证码?
-
转到上一个提交上传验证码后,然后检查上传验证码的“代理”和“提供的代理状态”字段。如果您的代理用于求解验证码,则“代理”字段值将是您的代理IP地址,并且“提供的代理状态”将是“好”。如果不使用它,则“代理”将具有“ DBC代理”为值(这意味着使用我们的代理之一解决验证码)和“提供的代理状态”字段值将是“不良或未提供”。示例屏幕截图:
令牌图像API的使用代码示例:
-
1)发送有效载荷:
请注意,我们正在使用type=“4”作为令牌图像API。
curl --header 'Expect: ' -F username=your_username_here \
-F password=your_password_here \
-F type='4' \
-F token_params='{"proxy": "http://user:password@127.0.0.1:1234",
"proxytype": "HTTP",
"googlekey": "6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b",
"pageurl": "http://google.com"}' \
http://api.dbcapi.me/api/captcha
2)拉码:拿到给定的CAPTCHA_ID并提出这样的请求:
curl -H "Accept: application/json" http://api.dbcapi.me/api/captcha/CAPTCHA_ID
结果是JSON弦乐,该字段“文本”包括相应的解决方案:
'{"status": 0, "captcha": 2911096,
"is_correct": true, "text": "textToken"}'
与API客户端一起使用令牌image API:
/**
* Death by Captcha PHP API recaptcha_v2 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";
// To use recaptcha_Token
// Set the proxy and reCaptcha token data
$data = array(
'proxy' => 'http://user:password@127.0.0.1:1234',
'proxytype' => 'HTTP',
'googlekey' => '6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-',
'pageurl' => 'https://www.google.com/recaptcha/api2/demo'
);
//Create a json string
$json = json_encode($data);
//Put the type and the json payload
$extra = [
'type' => 4,
'token_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']);
}
}
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, username)
# Put the proxy and recaptcha_v2 data
Captcha_dict = {
'proxy': 'http://user:password@127.0.0.1:1234',
'proxytype': 'HTTP',
'googlekey': '6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-',
'pageurl': 'https://www.google.com/recaptcha/api2/demo'}
# 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=4, token_params=json_Captcha)
if captcha:
# The CAPTCHA was solved; captcha["captcha"] item holds its
# numeric ID, and captcha["text"] item it's a text token".
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 ExampleRecaptchaV2 {
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 reCAPTCHA v2 token data
String proxy = "http://user:password@127.0.0.1:1234";
String proxytype = "http";
String googlekey = "6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_f";
String pageurl = "http://google.com";
/* Upload a reCAPTCHA v2 and poll for its status with 120 seconds timeout.
Put the token params and timeout (in seconds)
0 or nothing for the default timeout value. */
captcha = client.decode(proxy, proxytype, googlekey, pageurl);
//other method is to send a json with the parameters
/*
JSONObject json_params = new JSONObject();
json_params.put("proxy", proxy);
json_params.put("proxytype", proxytype);
json_params.put("googlekey", googlekey);
json_params.put("pageurl", pageurl);
captcha = client.decode(4, 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);
}
}
}
using System;
using System.Collections;
using DeathByCaptcha;
namespace DBC_Examples.examples
{
public class RecaptchaV2Example
{
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); */
// Put your Proxy credentials and type here
string proxy = "http://user:password@127.0.0.1:1234";
string proxyType = "HTTP";
string googlekey = "6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b";
string pageurl = "http://google.com";
string tokenParams = "{\"proxy\": \"" + proxy + "\"," +
"\"proxytype\": \"" + proxyType + "\"," +
"\"googlekey\": \"" + googlekey + "\"," +
"\"pageurl\": \"" + pageurl + "\"}";
try
{
double balance = client.GetBalance();
/* Upload a CAPTCHA and poll for its status. Put the Token CAPTCHA
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", 4},
{"token_params", tokenParams}
});
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 RecaptchaV2
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 recaptcha_v2 token data
Dim proxy = "http://user:password@127.0.0.1:1234"
Dim proxyType = "HTTP"
Dim googlekey = "6Lc2fhwTAAAAAGatXTzFYfvlQMI2T7B6ji8UVV_b"
Dim pageurl = "http://google.com"
Console.WriteLine(String.Format("Your balance is {0,2:f} US cents",
client.Balance))
' Create a JSON with the extra data
Dim tokenParams = "{""proxy"": """ + proxy + """," +
"""proxytype"": """ + proxyType + """," +
"""googlekey"": """ + googlekey + """," +
"""pageurl"": """ + pageurl + """}"
' Create the payload with the type and the extra data
Dim extraData As New Hashtable()
extraData.Add("type", 4)
extraData.Add("token_params", tokenParams)
' Upload a CAPTCHA and poll for its status. Put the Token CAPTCHA
' 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 Class
' this script uses DeCaptcher API, to use this API first we need to opt-in our user
' in the following URL http://deathbycaptcha.com/user/api/decaptcher
' Is recomended to read the FAQ in that page
' this script can use authentication token instead of username/password combination
' to use this API with authentication token, first we need enable token authentication
' on users panel authentication on users panel when using authentication token the username
' must be the keyword authtoken and the password is the authentication token from users panel
VERSION BUILD=844
' we need to set a timeout to wait for the captcha solution
SET !TIMEOUT_PAGE 200
' the script go to this URL to use the API
URL GOTO=http://api.dbcapi.me/decaptcher?function=token&print_format=html
' Set our username, need to replace {{}} with username, ex.
' TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher
' ATTR=NAME:username CONTENT=myusername
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher
ATTR=NAME:username CONTENT={{username}}
' replace password with our password, ex.
' TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher
' ATTR=NAME:password CONTENT=mycurrentpassword
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher
ATTR=NAME:password CONTENT={{password}}
' here we set our proxy, ex.
' TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher
' ATTR=NAME:proxy CONTENT=https://proxy_username:proxy_password@proxy_url:proxy_port
' we need to use this proxy format https://proxy_username:proxy_password@proxy_url:proxy_port
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher
ATTR=NAME:proxy CONTENT={{proxy}}
' here we set the proxy type ex.
' TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher
' ATTR=NAME:proxytype CONTENT=http
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher ATTR=NAME:proxytype
CONTENT={{proxy_type}}
' here we set the googlekey
' for information about googlekey, look here
' http://deathbycaptcha.com/user/api/newtokenrecaptcha#what-site-key
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher ATTR=NAME:googlekey
CONTENT={{google_site_key}}
' here we set the site that have the token recaptcha challenge, ex.
' TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher ATTR=NAME:pageurl
CONTENT=https://www.site.com/login
TAG POS=1 TYPE=INPUT:TEXT FORM=ACTION:http://api.dbcapi.me/decaptcher ATTR=NAME:pageurl
CONTENT={{challenge_site}}
' we submit the captcha to solve
TAG POS=1 TYPE=INPUT:SUBMIT FORM=ACTION:http://api.dbcapi.me/decaptcher ATTR=VALUE:Send
' and we get our result
TAG POS=6 TYPE=TD ATTR=* EXTRACT=TXT
SET !VAR1 {{!EXTRACT}}
/*
* Death by Captcha Node.js API recaptcha_v2 token image 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 recaptcha_v2 token data
const token_params = JSON.stringify({
'proxy': 'http://username:password@proxy.example:3128',
'proxytype': 'HTTP',
'googlekey': '6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-',
'pageurl': 'https://www.google.com/recaptcha/api2/demo'
});
// 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 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);
* });
*/
}
});