RecaptchaV2EnterpriseTask
O objeto contém dados para a resolução de tarefas do Google reCAPTCHA Enterprise. Para fornecer universalidade sólida na resolução desse tipo de tarefa, reproduzimos todos os componentes do ambiente usados para uma tarefa de automação que você planeja concluir. Isso inclui acesso via proxy, o user-agent do navegador e, opcionalmente, cookies.
Esse tipo de captcha não tem diferenças visuais em relação ao ReCaptcha v.2; você pode ver a diferença utilizando o código do captcha, por exemplo, nas ferramentas de desenvolvedor, na aba Rede em Consultas:
URL da solicitação (anchor): https://www.google.com/recaptcha/enterprise/anchor?ar=1&k=6Lf26sUnAAAAAIKLuWNYgRsFUfmI-3Lex3xT5N-s&co=aHR0cHM6Ly8yY2FwdGNoYS5jb206NDQz&hl=en&v=1kRDYC3bfA-o6-tsWzIBvp7k&size=normal&cb=43r1q2d3mx66
Esse tipo de captcha pode demorar um pouco mais para ser resolvido do que o captcha de imagem usual, mas esse problema é compensado pelo fato de que o valor g-captcha-response
que enviamos para você é válido pelos próximos 60 segundos após resolvermos seu ReCaptcha2.
Se o proxy estiver autorizado por IP, certifique-se de adicionar 116.203.55.208 à lista de permissões.
Parâmetros da solicitação
- RecaptchaV2EnterpriseTaskProxyless (sem proxy)
- RecaptchaV2EnterpriseTask (usando proxy)
type
<string>requiredRecaptchaV2EnterpriseTaskProxyless
websiteURL
<string>requiredEndereço de uma página da web com o Google ReCaptcha Enterprise.
websiteKey
<string>requiredChave do site do Recaptcha.<div class="g-recaptcha" data-sitekey="THIS_ONE"></div>
ou <iframe title="reCAPTCHA" src="...;k=6LdIFr0ZAAAAAO3vz0O0OQrtAefzdJcWQM2TMYQH&...
, onde 6LdIFr0ZAAAAAO3vz0O0OQrtAefzdJcWQM2TMYQH
é a websiteKey
.
enterprisePayload
<string>optionalAlgumas implementações do widget reCAPTCHA Enterprise podem conter parâmetros adicionais que são passados ao método “grecaptcha.enterprise.render” junto com o sitekey. Por exemplo: <pre lang="js" ><code>grecaptcha.enterprise.render("some-div-id", {<br /> sitekey: "6Lc_aCMTAAAAABx7u2N0D1XnVbI_v6ZdbM6rYf16"<br/> theme: "dark"<br/> s: "2JvUXHNTnZl1Jb6WEvbDyB...ugQA"<br/>});</code></pre>
apiDomain
<string>optionalEndereço do domínio a partir do qual carregar o reCAPTCHA Enterprise. Por exemplo:
- www.google.com
- www.recaptcha.net
Não utilize um parâmetro se você não souber por que ele é necessário.
userAgent
<string>optionalO User-Agent do navegador usado na emulação. É necessário utilizar uma assinatura de um navegador moderno; caso contrário, o Google pedirá para "atualizar seu navegador".
cookies
<string>optionalCookies adicionais que devemos usar durante a interação com a página de destino ou com o Google.
Formato: cookiename1=cookievalue1; cookiename2=cookievalue2
type
<string>requiredRecaptchaV2EnterpriseTask
websiteURL
<string>requiredEndereço de uma página da web com o Google ReCaptcha Enterprise.
websiteKey
<string>requiredChave do site do Recaptcha.<div class="g-recaptcha" data-sitekey="THIS_ONE"></div>
ou <iframe title="reCAPTCHA" src="...;k=6LdIFr0ZAAAAAO3vz0O0OQrtAefzdJcWQM2TMYQH&...
, onde 6LdIFr0ZAAAAAO3vz0O0OQrtAefzdJcWQM2TMYQH
é a websiteKey
.
enterprisePayload
<string>optionalAlgumas implementações do widget reCAPTCHA Enterprise podem conter parâmetros adicionais que são passados ao método “grecaptcha.enterprise.render” junto com o sitekey. Por exemplo: <pre lang="js" ><code>grecaptcha.enterprise.render("some-div-id", {<br /> sitekey: "6Lc_aCMTAAAAABx7u2N0D1XnVbI_v6ZdbM6rYf16"<br/> theme: "dark"<br/> s: "2JvUXHNTnZl1Jb6WEvbDyB...ugQA"<br/>});</code></pre>
apiDomain
<string>optionalEndereço do domínio a partir do qual carregar o reCAPTCHA Enterprise. Por exemplo:
- www.google.com
- www.recaptcha.net
Não utilize um parâmetro se você não souber por que ele é necessário.
userAgent
<string>optionalO User-Agent do navegador usado na emulação. É necessário utilizar uma assinatura de um navegador moderno; caso contrário, o Google pedirá para "atualizar seu navegador".
cookies
<string>optionalCookies adicionais que devemos usar durante a interação com a página de destino ou com o Google.
Formato: cookiename1=cookievalue1; cookiename2=cookievalue2
proxyType
<string>requiredhttp - proxy http/https regular;
https - tente essa opção apenas se "http" não funcionar (necessário para alguns proxies personalizados);
socks4 - proxy socks4;
socks5 - proxy socks5.
proxyAddress
<string>requiredEndereço IP do proxy IPv4/IPv6. Não é permitido:
- usar nomes de host;
- usar proxies transparentes (onde você pode ver o IP do cliente);
- usar proxies em máquinas locais.
proxyPort
<integer>requiredPorta do proxy.
proxyLogin
<string>optionalLogin do servidor proxy.
proxyPassword
<string>optionalSenha do servidor proxy.
Para enterprisePayload
- antes de chamá-lo, você precisa substituir a função grecaptcha.enterprise.render
pela sua própria e capturar o valor de seus parâmetros. A função existe após o carregamento do script, e o captcha geralmente é renderizado imediatamente ou com base em um evento da página. Se o captcha for renderizado com o campo s
atual no cliente, o token provavelmente não será aceito.
A função original pode ser chamada sem o campo s
.
apiDomain
é o domínio que hospeda a interface da API para interagir com o reCAPTCHA; é usado para verificar se o usuário passou no captcha.
Script
var __test_grc = undefined;
var __test_enterprise = undefined;
var __test_render = undefined;
var __test_render_widget = undefined;
var __test_render_args = undefined; // aqui estará o objeto com o qual o render é chamado.
var __test_handler = {
get: function(target, name, receiver) {
if (name == 'enterprise') {
return __test_enterprise ? __test_enterprise : (__test_enterprise = new Proxy(target[name], __test_handler));
} else if (name == 'render') {
__test_render = target[name];
return (function(a, b) {
__test_render_args = b;
__test_render_widget = a;
return __test_render(a, {sitekey: b.sitekey}); });
} else {
return target[name];
}
}
};
Object.defineProperty(window, 'grecaptcha', {
enumerable: true,
configurable: false,
get: function() {
return __test_grc;
},
set: function(value) {
__test_grc = new Proxy(value, __test_handler);
}
});
Criar método de tarefa
- RecaptchaV2EnterpriseTaskProxyless (without proxy)
- RecaptchaV2EnterpriseTask (using proxy)
https://api.capmonster.cloud/createTask
Request
{
"clientKey":"API_KEY",
"task": {
"type":"RecaptchaV2EnterpriseTaskProxyless",
"websiteURL":"https://mydomain.com/page-with-recaptcha-enterprise",
"websiteKey":"6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd",
"enterprisePayload": {
"s": "SOME_ADDITIONAL_TOKEN"
}
}
}
Response:
{
"errorId": 0,
"taskId": 407533072
}
https://api.capmonster.cloud/createTask
Request
{
"clientKey":"API_KEY",
"task": {
"type":"RecaptchaV2EnterpriseTask",
"websiteURL":"https://mydomain.com/page-with-recaptcha-enterprise",
"websiteKey":"6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd",
"enterprisePayload": {
"s": "SOME_ADDITIONAL_TOKEN"
},
"proxyType":"http",
"proxyAddress":"8.8.8.8",
"proxyPort":8080,
"proxyLogin":"proxyLoginHere",
"proxyPassword":"proxyPasswordHere",
"userAgent":"userAgentPlaceholder"
}
}
Response:
{
"errorId":0,
"taskId":407533072
}
Método Get task result
Use o método getTaskResult para solicitar a resposta para o ReCaptcha2. Você receberá a resposta em um período de 10 a 80 segundos, dependendo da carga de trabalho do serviço.
https://api.capmonster.cloud/getTaskResult
Solicitação
{
"clientKey":"API_KEY",
"taskId": 407533072
}
Resposta
{
"errorId":0,
"status":"ready",
"solution": {
"gRecaptchaResponse":"3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKvhKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
}
}
Propriedade | Tipo | Descrição |
---|---|---|
gRecaptchaResponse | String | Hash que deve ser inserido no formulário de envio do Recaptcha2 em <textarea id="g-recaptcha-response" ..></textarea> . Tem um comprimento de 500 a 2190 bytes. |
Usar Biblioteca SDK
- JavaScript
- Python
- C#
// https://github.com/ZennoLab/capmonstercloud-client-js
import { CapMonsterCloudClientFactory, ClientOptions, RecaptchaV2EnterpriseProxylessRequest, /*RecaptchaV2EnterpriseRequest*/ } from '@zennolab_com/capmonstercloud-client';
document.addEventListener('DOMContentLoaded', async () => {
const cmcClient = CapMonsterCloudClientFactory.Create(new ClientOptions({ clientKey: '<your capmonster.cloud API key>' }));
console.log(await cmcClient.getBalance());
const recaptchaV2EnterpriseRequest = new RecaptchaV2EnterpriseProxylessRequest({
websiteURL: 'https://mydomain.com/page-with-recaptcha-enterprise',
websiteKey: '6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd',
enterprisePayload: {
s: 'SOME_ADDITIONAL_TOKEN',
},
});
// const recaptchaV2EnterpriseRequest = new RecaptchaV2EnterpriseRequest({
// websiteURL: 'https://mydomain.com/page-with-recaptcha-enterprise',
// websiteKey: '6Lcg7CMUAAAAANphynKgn9YAgA4tQ2KI_iqRyTwd',
// enterprisePayload: {
// s: 'SOME_ADDITIONAL_TOKEN',
// },
// proxyType: 'http',
// proxyAddress: '8.8.8.8',
// proxyPort: 8080,
// proxyLogin: 'proxyLoginHere',
// proxyPassword: 'proxyPasswordHere',
// userAgent: 'userAgentPlaceholder',
// });
console.log(await cmcClient.Solve(recaptchaV2EnterpriseRequest));
});
# https://github.com/ZennoLab/capmonstercloud-client-python
# RecaptchaV2EnterpriseProxyless
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV2EnterpriseProxylessRequest
client_options = ClientOptions(api_key="your_api_key") # Replace with your CapMonster Cloud API key
cap_monster_client = CapMonsterClient(options=client_options)
recaptcha2request = RecaptchaV2EnterpriseProxylessRequest(
websiteUrl="https://example.com", # Website with the captcha
websiteKey="6Lf26sUnAAAAAIKLuWNYgRsFUfmI-3Lex3xT5N-s", # Replace with your websiteKey
enterprisePayload={
"s": "SOME_ADDITIONAL_TOKEN"
}
)
async def solve_captcha():
return await cap_monster_client.solve_captcha(recaptcha2request)
responses = asyncio.run(solve_captcha())
print(responses)
# ReCaptchaV2Enterprise:
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV2EnterpriseRequest
client_options = ClientOptions(api_key="your_api_key") # Replace with your CapMonster Cloud API key
cap_monster_client = CapMonsterClient(options=client_options)
recaptcha2request = RecaptchaV2EnterpriseRequest(
websiteUrl="https://example.com", # Website with the captcha
websiteKey="6Lf26sUnAAAAAIKLuWNYgRsFUfmI-3Lex3xT5N-s", # Replace with your websiteKey
enterprisePayload={
"s": "SOME_ADDITIONAL_TOKEN"
},
proxy_type="http", # Proxy type (http, https, socks5)
proxy_address="8.8.8.8",
proxy_port=8080,
proxy_login="proxyLoginHere",
proxy_password="proxyPasswordHere"
)
async def solve_captcha():
return await cap_monster_client.solve_captcha(recaptcha2request)
responses = asyncio.run(solve_captcha())
print(responses)
// https://github.com/ZennoLab/capmonstercloud-client-dotnet
// RecaptchaV2EnterpriseProxyless
using Zennolab.CapMonsterCloud.Requests;
using Zennolab.CapMonsterCloud;
class Program
{
static async Task Main(string[] args)
{
var clientOptions = new ClientOptions
{
ClientKey = "your_api_key" // Replace with your CapMonster Cloud API key
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
var recaptchaV2EnterpriseRequest = new RecaptchaV2EnterpriseProxylessRequest
{
WebsiteUrl = "https://example.com", // Website with the captcha
WebsiteKey = "6Lf26sUnAAAAAIKLuWNYgRsFUfmI-3Lex3xT5N-s", // Replace with your website key
EnterprisePayload = "{\"s\":\"SOME_ADDITIONAL_TOKEN\"}"
};
var recaptchaV2EnterpriseResult = await cmCloudClient.SolveAsync(recaptchaV2EnterpriseRequest);
Console.WriteLine("Captcha Solution: " + recaptchaV2EnterpriseResult.Solution.Value);
}
}
// ReCaptchaV2Enterprise:
using Zennolab.CapMonsterCloud.Requests;
using Zennolab.CapMonsterCloud;
class Program
{
static async Task Main(string[] args)
{
var clientOptions = new ClientOptions
{
ClientKey = "your_api_key" // Replace with your CapMonster Cloud API key
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
var recaptchaV2EnterpriseRequest = new RecaptchaV2EnterpriseRequest
{
WebsiteUrl = "https://example.com", // Website with the captcha
WebsiteKey = "6Lf26sUnAAAAAIKLuWNYgRsFUfmI-3Lex3xT5N-s", // Replace with your website key
EnterprisePayload = "{\"s\":\"SOME_ADDITIONAL_TOKEN\"}",
ProxyType = ProxyType.Http,
ProxyAddress = "8.8.8.8",
ProxyPort = 8080,
ProxyLogin = "proxyLoginHere",
ProxyPassword = "proxyPasswordHere"
};
var recaptchaV2EnterpriseResult = await cmCloudClient.SolveAsync(recaptchaV2EnterpriseRequest);
Console.WriteLine("Captcha Solution: " + recaptchaV2EnterpriseResult.Solution.Value);
}
}