Basilisk - FaucetPay Captcha

O CapMonster Cloud, por padrão, funciona com proxies integrados — já incluídos no custo do serviço. É necessário especificar seus próprios proxies apenas nos casos em que o site não aceita o token ou quando o acesso aos serviços integrados está restrito.
Se o proxy utiliza autenticação por IP, é necessário adicionar o endereço 65.21.190.34 à lista de permissões (whitelist).
Parâmetros da solicitação
type<string>requiredCustomTask
class<string>requiredBasilisk
websiteURL<string>requiredO endereço da página principal onde o captcha é resolvido.
websiteKey<string>requiredPode ser encontrado no código HTML no atributo data-sitekey do contêiner do captcha ou no payload de uma solicitação POST para https://basiliskcaptcha.com/challenge/check-site no campo site_key
userAgent<string>optionalUser-Agent do navegador.
Transmita apenas o UA atual do sistema operacional Windows. No momento, o válido é: userAgentPlaceholder
proxyType<string>optionalhttp - proxy http/https comum;
https - tente esta opção apenas se "http" não funcionar (necessário para alguns proxies personalizados);
socks4 - proxy socks4;
socks5 - proxy socks5.
proxyAddress<string>optionalEndereço IP do proxy IPv4/IPv6. Não é permitido:
- uso de proxies transparentes (que revelem o IP do cliente);
- uso de proxies em máquinas locais.
proxyPort<integer>optionalPorta do proxy.
proxyLogin<string>optionalLogin do servidor proxy.
proxyPassword<string>optionalSenha do servidor proxy.
Criar tarefa
- Custom task (sem proxy)
- Custom task (com proxy)
https://api.capmonster.cloud/createTask
Solicitação
{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "Basilisk",
"websiteURL": "https://domain.io/account/register",
"websiteKey": "b7890hre5cf2544b2759c19fb2600897",
"userAgent": "userAgentPlaceholder"
}
}
Resposta
{
"errorId":0,
"taskId":407533072
}
https://api.capmonster.cloud/createTask
Solicitação
{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "Basilisk",
"websiteURL": "https://domain.io/account/register",
"websiteKey": "b7890hre5cf2544b2759c19fb2600897",
"userAgent": "userAgentPlaceholder",
"proxyType": "http",
"proxyAddress": "8.8.8.8",
"proxyPort": 8080,
"proxyLogin": "proxyLoginHere",
"proxyPassword": "proxyPasswordHere"
}
}
Resposta
{
"errorId":0,
"taskId":407533072
}
Obter o resultado da tarefa
Use o método getTaskResult para obter a solução do Basilisk.
https://api.capmonster.cloud/getTaskResult
Solicitação
{
"clientKey":"API_KEY",
"taskId": 407533072
}
Resposta
{
"errorId":0,
"status":"ready",
"solution": {
"data": {
"captcha_response": "5620301f30daf284b829fba66fa9b3d0"
},
"headers": {
"User-Agent": "userAgentPlaceholder"
}
}
}
Como Encontrar Todos os Parâmetros Necessários para a Criação da Tarefa
Manualmente
- Abra seu site onde o captcha aparece no navegador.
- Clique com o botão direito no elemento do captcha e selecione Inspecionar.
websiteKey
Na aba Network, filtre as requisições usando palavras-chave relacionadas a captchas, como site_key. Essas requisições conterão o parâmetro site_key — um valor usado para identificar o site durante o processo de resolução do captcha:

Automaticamente
Para automatizar a extração dos parâmetros, eles podem ser obtidos via navegador (normal ou headless, por exemplo, usando Playwright) ou diretamente a partir de requisições HTTP. Como os valores dos parâmetros dinâmicos têm curta duração, recomenda-se utilizá-los imediatamente após a extração.
Os trechos de código fornecidos são exemplos básicos para aprendizado sobre como extrair os parâmetros necessários. A implementação exata dependerá do seu site com captcha, sua estrutura e os elementos HTML e seletores utilizados.
- JavaScript
- Python
- C#
Mostrar código (para navegador)
// Procure por um elemento com o atributo data-sitekey
const captchaElement = document.querySelector('[data-sitekey]');
// Extraia o valor do sitekey
if (captchaElement) {
const siteKey = captchaElement.getAttribute('data-sitekey');
console.log('Site-key encontrado:', siteKey);
} else {
console.log('site-key não encontrado');
}
Mostrar código (Node.js)
import { chromium } from 'playwright';
async function extractSiteKey() {
const browser = await chromium.launch({ headless: true });
const page = await browser.newPage();
const url = 'https://example.com';
await page.goto(url);
// Procure por um elemento com o atributo data-sitekey
const captchaElement = await page.$('[data-sitekey]');
// Extraia o valor do sitekey
if (captchaElement) {
const siteKey = await captchaElement.getAttribute('data-sitekey');
console.log('Site-key encontrado:', siteKey);
} else {
console.log('site-key não encontrado');
}
await browser.close();
}
extractSiteKey();
Mostrar código
import asyncio
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False)
page = await browser.new_page()
url = 'https://example.com/captcha-page'
await page.goto(url)
# Procure por um elemento com o atributo data-sitekey
captcha_element = await page.query_selector('[data-sitekey]')
# Extraia o valor do sitekey se o elemento for encontrado
if captcha_element:
site_key = await captcha_element.get_attribute('data-sitekey')
print('Site-key encontrado:', site_key)
else:
print('site-key não encontrado')
await browser.close()
asyncio.run(main())
Mostrar código
using System;
using System.Threading.Tasks;
using Microsoft.Playwright;
class Program
{
static async Task Main(string[] args)
{
string url = "https://example.com/captcha-page";
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions {
Headless = false });
var page = await browser.NewPageAsync();
await page.GotoAsync(url);
// Procure por um elemento com o atributo data-sitekey
var captchaElement = await page.QuerySelectorAsync("[data-sitekey]");
// Extraia o valor do sitekey se o elemento for encontrado
if (captchaElement != null)
{
var siteKey = await captchaElement.GetAttributeAsync("data-sitekey");
Console.WriteLine("Site-key encontrado: " + siteKey);
}
else
{
Console.WriteLine("site-key não encontrado");
}
await browser.CloseAsync();
}
}
Usar biblioteca SDK
- JavaScript
- Python
- C#
Mostrar Código (para navegador)
// https://github.com/ZennoLab/capmonstercloud-client-js
import { CapMonsterCloudClientFactory, ClientOptions, BasiliskRequest } from '@zennolab_com/capmonstercloud-client';
const API_KEY = "YOUR_API_KEY"; // Insira sua chave de API do CapMonster Cloud
document.addEventListener("DOMContentLoaded", async () => {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// Exemplo básico sem proxy
// O CapMonster Cloud usa automaticamente seus próprios proxies
let basiliskRequest = new BasiliskRequest({
websiteURL: "https://example.com", // URL da página com Basilisk
websiteKey: "websiteKey" // Substitua pelo valor correto
});
// Exemplo de uso do seu próprio proxy
// Descomente este bloco se quiser usar um proxy personalizado
/*
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password"
};
basiliskRequest = new BasiliskRequest({
websiteURL: "https://example.com",
websiteKey: "b3760bfe5cf4254b2759c19fg2698og",
proxy,
userAgent: "userAgentPlaceholder"
});
*/
// Se necessário, você pode verificar o saldo
const balance = await client.getBalance();
console.log("Balance:", balance);
const result = await client.Solve(basiliskRequest);
console.log("Solution:", result);
});
Mostrar Código (Node.js)
// https://github.com/ZennoLab/capmonstercloud-client-js
import { CapMonsterCloudClientFactory, ClientOptions, BasiliskRequest } from '@zennolab_com/capmonstercloud-client';
const API_KEY = "YOUR_API_KEY"; // Insira sua chave de API do CapMonster Cloud
async function solveBasilisk() {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// Exemplo básico sem proxy
// O CapMonster Cloud usa automaticamente seus próprios proxies
let basiliskRequest = new BasiliskRequest({
websiteURL: "https://example.com", // URL da página com Basilisk
websiteKey: "b3760bfe5cf4254b2759c19fg2698og" // Substitua pelo valor correto
});
// Exemplo de uso do seu próprio proxy
// Descomente este bloco se quiser usar um proxy personalizado
/*
const proxy = {
proxyType: "http",
proxyAddress: "123.45.67.89",
proxyPort: 8080,
proxyLogin: "username",
proxyPassword: "password"
};
basiliskRequest = new BasiliskRequest({
websiteURL: "https://example.com",
websiteKey: ""b3760bfe5cf4254b2759c19fg2698og",
proxy,
userAgent: "userAgentPlaceholder"
});
*/
// Se necessário, você pode verificar o saldo
const balance = await client.getBalance();
console.log("Balance:", balance);
const result = await client.Solve(basiliskRequest);
console.log("Solution:", result);
}
solveBasilisk().catch(console.error);
Mostrar Código
# https://github.com/ZennoLab/capmonstercloud-client-python
import asyncio
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import BasiliskCustomTaskRequest
# from capmonstercloudclient.requests.baseRequestWithProxy import ProxyInfo # Descomente se planeja usar proxy
API_KEY = "YOUR_API_KEY" # Insira sua chave de API do CapMonster Cloud
async def solve_basilisk():
client_options = ClientOptions(api_key=API_KEY)
cap_monster_client = CapMonsterClient(options=client_options)
# Exemplo básico sem proxy
# O CapMonster Cloud usa automaticamente seus próprios proxies
basilisk_request = BasiliskCustomTaskRequest(
websiteUrl="https://example.com", # URL da página com Basilisk
websiteKey="b3760bfe5cf4254b2759c19fg2698og" # Substitua pelo valor correto
)
# Exemplo de uso do seu próprio proxy
# Descomente este bloco se quiser usar um proxy personalizado
# proxy = ProxyInfo(
# proxyType="http",
# proxyAddress="123.45.67.89",
# proxyPort=8080,
# proxyLogin="username",
# proxyPassword="password"
# )
#
# basilisk_request = BasiliskCustomTaskRequest(
# websiteUrl="https://example.com",
# websiteKey="b3760bfe5cf4254b2759c19fg2698og",
# proxy=proxy
# )
# Se necessário, você pode verificar o saldo
balance = await cap_monster_client.get_balance()
print("Balance:", balance)
result = await cap_monster_client.solve_captcha(basilisk_request)
print("Solution:", result)
asyncio.run(solve_basilisk())
Mostrar Código
// https://github.com/ZennoLab/capmonstercloud-client-dotnet
using System;
using System.Threading.Tasks;
using Zennolab.CapMonsterCloud;
using Zennolab.CapMonsterCloud.Requests;
class Program
{
static async Task Main(string[] args)
{
// Insira sua chave de API do CapMonster Cloud
var clientOptions = new ClientOptions
{
ClientKey = "YOUR_API_KEY"
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
// Exemplo básico sem proxy
// O CapMonster Cloud usa automaticamente seus próprios proxies
var basiliskRequest = new BasiliskCustomTaskRequest
{
WebsiteUrl = "https://example.com", // URL da página com Basilisk
WebsiteKey = "b3760bfe5cf4254b2759c19fg2698og" // Substitua pelo valor correto
};
// Exemplo de uso do seu próprio proxy
// Descomente este bloco se quiser usar um proxy personalizado
/*
basiliskRequest = new BasiliskCustomTaskRequest
{
WebsiteUrl = "https://example.com",
WebsiteKey = "b3760bfe5cf4254b2759c19fg2698og",
Proxy = new ProxyContainer(
"123.45.67.89",
8080,
ProxyType.Http,
"username",
"password"
),
UserAgent = "userAgentPlaceholder"
};
*/
// Se necessário, você pode verificar o saldo
var balance = await cmCloudClient.GetBalanceAsync();
Console.WriteLine("Balance: " + balance);
var basiliskResult = await cmCloudClient.SolveAsync(basiliskRequest);
Console.WriteLine("Basilisk Solution Data: " + string.Join(", ", basiliskResult.Solution.Data));
Console.WriteLine("Basilisk Solution Headers: " + string.Join(", ", basiliskResult.Solution.Headers));
}
}
