Flutter验证码识别插件captcha_solver的使用
Flutter验证码识别插件captcha_solver的使用
简介
captcha_solver
是一个用于Flutter的验证码识别插件,它可以帮助开发者自动解决各种类型的验证码,包括图片验证码、reCAPTCHA v2/v3、FunCAPTCHA和hCAPTCHA等。本文将详细介绍如何在Flutter项目中使用该插件。
准备工作
- 注册并登录到 scraptcha.com 并获取API密钥。
- 在
pubspec.yaml
文件中添加captcha_solver
依赖:
dependencies:
captcha_solver: ^1.0.4
使用示例
图片验证码 (Image to Text)
对于普通图片验证码,你可以使用 imageMemoryToText()
或 imageLinkToText()
方法来处理本地或远程图片。
import 'package:captcha_solver/captcha_solver.dart';
void main() async {
// 初始化查询属性
String apiKey = 'YOUR_API_KEY';
String imageMemory = 'lib/captcha.jpg'; // 本地图片路径
String imageLink = 'https://api.vk.com/captcha.php?sid=1'; // 远程图片链接
// 初始化CaptchaSolver
CaptchaSolver captchaSolver = CaptchaSolver(apiKey);
// 请求参数
Map inputs = {
"clientKey": apiKey,
"task": {
"type": "ImageToTextTask",
"body": imageMemory // 或者使用 imageLink
}
};
// 获取验证码解决方案
Map response = await captchaSolver.imageMemoryToText(inputs); // 或者使用 imageLinkToText()
print('response: $response');
if(response['status'] == 'ready') {
print(response['solution']['text']);
}
}
reCAPTCHA v2
对于reCAPTCHA v2,你需要提供网站URL和网站密钥。
import 'package:captcha_solver/captcha_solver.dart';
void main() async {
// 初始化查询属性
String apiKey = 'YOUR_API_KEY';
String websiteURL = 'http://mywebsite.com/recaptcha/test.php';
String websiteKey = 'YOUR_WEBSITE_KEY';
// 初始化CaptchaSolver
CaptchaSolver captchaSolver = CaptchaSolver(apiKey);
// 请求参数
Map inputs = {
"clientKey": apiKey,
"task": {
"type": "RecaptchaV2TaskProxyless",
"websiteURL": websiteURL,
"websiteKey": websiteKey,
"isInvisible": false
}
};
// 获取验证码解决方案
Map response = await captchaSolver.recaptcha(inputs);
print('response: $response');
if(response['status'] == 'ready') {
print(response['solution']['gRecaptchaResponse']);
}
}
reCAPTCHA v3
reCAPTCHA v3不需要用户交互,生成一个基于用户行为的分数。
import 'package:captcha_solver/captcha_solver.dart';
void main() async {
// 初始化查询属性
String apiKey = 'YOUR_API_KEY';
String websiteURL = 'http://mywebsite.com/recaptcha/test.php';
String websiteKey = 'YOUR_WEBSITE_KEY';
// 初始化CaptchaSolver
CaptchaSolver captchaSolver = CaptchaSolver(apiKey);
// 请求参数
Map inputs = {
"clientKey": apiKey,
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": websiteURL,
"websiteKey": websiteKey,
"minScore": 0.3,
"pageAction": "verify",
"isEnterprise": false
}
};
// 获取验证码解决方案
Map response = await captchaSolver.recaptcha(inputs);
print('response: $response');
if(response['status'] == 'ready') {
print(response['solution']['gRecaptchaResponse']);
}
}
FunCAPTCHA - Arkose Labs
FunCAPTCHA需要提供网站公钥和网站URL。
import 'package:captcha_solver/captcha_solver.dart';
void main() async {
// 初始化查询属性
String apiKey = 'YOUR_API_KEY';
String websiteURL = 'https://account.battle.net/creation/flow/creation-full';
String websitePublicKey = 'YOUR_WEBSITE_KEY';
// 初始化CaptchaSolver
CaptchaSolver captchaSolver = CaptchaSolver(apiKey);
// 请求参数
Map inputs = {
"clientKey": apiKey,
"task": {
"type": "FunCaptchaTaskProxyless",
"websitePublicKey": websitePublicKey,
"websiteURL": websiteURL
}
};
// 获取验证码解决方案
Map response = await captchaSolver.recaptcha(inputs);
print('response: $response');
if(response['status'] == 'ready') {
print(response['solution']['token']);
}
}
hCAPTCHA
hCAPTCHA是reCAPTCHA的一个替代方案,请求参数与reCAPTCHA类似。
import 'package:captcha_solver/captcha_solver.dart';
void main() async {
// 初始化查询属性
String apiKey = 'YOUR_API_KEY';
String websiteURL = 'https://hcaptcha.com/';
String websiteKey = 'YOUR_WEBSITE_KEY';
// 初始化CaptchaSolver
CaptchaSolver captchaSolver = CaptchaSolver(apiKey);
// 请求参数
Map inputs = {
"clientKey": apiKey,
"task": {
"type": "HCaptchaTaskProxyless",
"websiteURL": websiteURL,
"websiteKey": websiteKey
}
};
// 获取验证码解决方案
Map response = await captchaSolver.recaptcha(inputs);
print('response: $response');
if(response['status'] == 'ready') {
print(response['solution']['gRecaptchaResponse']);
}
}
结论
通过使用 captcha_solver
插件,你可以在Flutter应用中轻松集成多种验证码识别功能。请确保替换所有示例代码中的 YOUR_API_KEY
和其他占位符为你自己的实际值,并根据具体需求调整请求参数。更多详细信息,请参考 Scraptcha 官方文档。
更多关于Flutter验证码识别插件captcha_solver的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复