Basilisk - FaucetPay 验证码

CapMonster Cloud 默认通过内置代理工作——这些代理已包含在费用内。仅当网站不接受令牌或对内置服务的访问受限时,才需要指定您自己的代理。
如果代理按 IP 授权,请将地址 65.21.190.34 加入白名单。
请求参数
type<string>requiredCustomTask
class<string>requiredBasilisk
websiteURL<string>required解决验证码的主页地址。
websiteKey<string>required可以在验证码容器的data-sitekey属性中或在向 https://basiliskcaptcha.com/challenge/check-site发送的 POST 请求的 site_key字段中找到。
userAgent<string>optional浏览器的 User-Agent。
请仅传递当前 Windows 系统下的有效 UA。当前推荐值为:userAgentPlaceholder
proxyType<string>optionalhttp - 普通的 http/https 代理;
https - 仅在 "http" 不起作用时尝试(某些自定义代理服务器要求);
socks4 - socks4 代理;
socks5 - socks5 代理。
proxyAddress<string>optional代理 IP 地址 IPv4/IPv6。不允许:
- 使用透明代理(其中客户端 IP 可见);
- 使用来自本地网络的代理。
proxyPort<integer>optional代理端口。
proxyLogin<string>optional代理登录。
proxyPassword<string>optional代理密码。
创建任务方法
- CustomTask (无代理)
- CustomTask (使用代理)
https://api.capmonster.cloud/createTask
请求
{
"clientKey": "API_KEY",
"task": {
"type": "CustomTask",
"class": "Basilisk",
"websiteURL": "https://domain.io/account/register",
"websiteKey": "b7890hre5cf2544b2759c19fb2600897",
"userAgent": "userAgentPlaceholder"
}
}
响应
{
"errorId": 0,
"taskId": 407533072
}
https://api.capmonster.cloud/createTask
请求
{
"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"
}
}
响应
{
"errorId": 0,
"taskId": 407533072
}
获取任务结果方法
使用方法getTaskResult获取Basilisk解决方案。
https://api.capmonster.cloud/getTaskResult
要求
{
"clientKey":"API_KEY",
"taskId": 407533072
}
回应
{
"errorId":0,
"status":"ready",
"solution": {
"data": {
"captcha_response": "5620301f30daf284b829fba66fa9b3d0"
},
"headers": {
"User-Agent": "userAgentPlaceholder"
}
}
}
如何查找任务创建所需的所有参数
手动方式
- 请在浏览器中访问您的网站,该网站包含验证码功能。
- 右键点击验证码元素,选择 检查(Inspect)。
websiteKey
在 网络 (Network) 选项卡中,使用与验证码相关的关键词过滤请求,比如 site_key。这些请求会包含 site_key 参数——这是一个用于在验证码解决过程中识别网站的值:

自动方法
为了自动化获取所需参数,可以通过 浏览器(普通模式或 headless 模式,例如使用 Playwright)进行提取,或直接从 HTTP 请求中获取。由于动态参数的有效时间较短,建议在获取后尽快使用。
所提供的代码片段仅作为获取必要参数的基础示例。具体实现方式取决于包含验证码的网站、本身的页面结构,以及所使用的 HTML 元素和选择器。
- JavaScript
- Python
- C#
显示代码(浏览器中)
// 查找具有 data-sitekey 属性的元素
const captchaElement = document.querySelector('[data-sitekey]');
// 提取 sitekey 值
if (captchaElement) {
const siteKey = captchaElement.getAttribute('data-sitekey');
console.log('找到 site-key:', siteKey);
} else {
console.log('未找到 site-key');
}
显示代码(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);
// 查找具有 data-sitekey 属性的元素
const captchaElement = await page.$('[data-sitekey]');
// 提取 sitekey 值
if (captchaElement) {
const siteKey = await captchaElement.getAttribute('data-sitekey');
console.log('找到 site-key:', siteKey);
} else {
console.log('未找到 site-key');
}
await browser.close();
}
extractSiteKey();
显示代码
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)
# 查找具有 data-sitekey 属性的元素
captcha_element = await page.query_selector('[data-sitekey]')
# 如果找到元素则提取 sitekey 值
if captcha_element:
site_key = await captcha_element.get_attribute('data-sitekey')
print('找到 site-key:', site_key)
else:
print('未找到 site-key')
await browser.close()
asyncio.run(main())
显示代码
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);
// 查找具有 data-sitekey 属性的元素
var captchaElement = await page.QuerySelectorAsync("[data-sitekey]");
// 如果找到元素则提取 sitekey 值
if (captchaElement != null)
{
var siteKey = await captchaElement.GetAttributeAsync("data-sitekey");
Console.WriteLine("找到 site-key: " + siteKey);
}
else
{
Console.WriteLine("未找到 site-key");
}
await browser.CloseAsync();
}
}
使用 SDK 库
- JavaScript
- Python
- C#
显示代码(用于浏览器)
// https://github.com/ZennoLab/capmonstercloud-client-js
import { CapMonsterCloudClientFactory, ClientOptions, BasiliskRequest } from '@zennolab_com/capmonstercloud-client';
const API_KEY = "YOUR_API_KEY"; // 输入您的 CapMonster Cloud API 密钥
document.addEventListener("DOMContentLoaded", async () => {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// 基本示例,无需代理
// CapMonster Cloud 会自动使用它们的代理
let basiliskRequest = new BasiliskRequest({
websiteURL: "https://example.com", // Basilisk 页面 URL
websiteKey: "b3760bfe5cf4254b2759c19fg2698og"" // 替换为正确的值
});
// 使用您自己的代理的示例
// 如果想使用自己的代理,请取消注释以下代码块
/*
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"
});
*/
// 如有必要,可以检查余额
const balance = await client.getBalance();
console.log("Balance:", balance);
const result = await client.Solve(basiliskRequest);
console.log("Solution:", result);
});
显示代码 (Node.js)
// https://github.com/ZennoLab/capmonstercloud-client-js
import { CapMonsterCloudClientFactory, ClientOptions, BasiliskRequest } from '@zennolab_com/capmonstercloud-client';
const API_KEY = "YOUR_API_KEY"; // 输入您的 CapMonster Cloud API 密钥
async function solveBasilisk() {
const client = CapMonsterCloudClientFactory.Create(
new ClientOptions({ clientKey: API_KEY })
);
// 基本示例,无需代理
// CapMonster Cloud 会自动使用它们的代理
let basiliskRequest = new BasiliskRequest({
websiteURL: "https://example.com", // Basilisk 页面 URL
websiteKey: "b3760bfe5cf4254b2759c19fg2698og" // 替换为正确的值
});
// 使用您自己的代理的示例
// 如果想使用自己的代理,请取消注释以下代码块
/*
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"
});
*/
// 如有必要,可以检查余额
const balance = await client.getBalance();
console.log("Balance:", balance);
const result = await client.Solve(basiliskRequest);
console.log("Solution:", result);
}
solveBasilisk().catch(console.error);
显示代码
# 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 # 如果计划使用代理,请取消注释
API_KEY = "YOUR_API_KEY" # 输入您的 CapMonster Cloud API 密钥
async def solve_basilisk():
client_options = ClientOptions(api_key=API_KEY)
cap_monster_client = CapMonsterClient(options=client_options)
# 基本示例,无需代理
# CapMonster Cloud 会自动使用它们的代理
basilisk_request = BasiliskCustomTaskRequest(
websiteUrl="https://example.com", # Basilisk 页面 URL
websiteKey="b3760bfe5cf4254b2759c19fg2698og" # 替换为正确的值
)
# 使用您自己的代理的示例
# 如果想使用自己的代理,请取消注释以下代码块
# 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
# )
# 如有必要,可以检查余额
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())
显示代码
// 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)
{
// 输入您的 CapMonster Cloud API 密钥
var clientOptions = new ClientOptions
{
ClientKey = "YOUR_API_KEY"
};
var cmCloudClient = CapMonsterCloudClientFactory.Create(clientOptions);
// 基本示例,无需代理
// CapMonster Cloud 会自动使用它们的代理
var basiliskRequest = new BasiliskCustomTaskRequest
{
WebsiteUrl = "https://example.com", // Basilisk 页面 URL
WebsiteKey = "b3760bfe5cf4254b2759c19fg2698og" // 替换为正确的值
};
// 使用您自己的代理的示例
// 如果想使用自己的代理,请取消注释以下代码块
/*
basiliskRequest = new BasiliskCustomTaskRequest
{
WebsiteUrl = "https://example.com",
WebsiteKey = "b3760bfe5cf4254b2759c19fg2698og",
Proxy = new ProxyContainer(
"123.45.67.89",
8080,
ProxyType.Http,
"username",
"password"
),
UserAgent = "userAgentPlaceholder"
};
*/
// 如有必要,可以检查余额
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));
}
}
