Flutter反验证码插件dart_anticaptcha的使用

发布于 1周前 作者 wuwangju 来自 Flutter

Flutter反验证码插件dart_anticaptcha的使用

要解决验证码问题,需要通过资源网站的工作人员来完成,即 https://anti-captcha.com。要解决验证码问题,你需要在该资源网站上注册并充值。

文档参见:https://anti-captcha.com/apidoc

安装

dart pub add dart_anticaptcha

或者在 pubspec.yaml 文件中添加依赖:

dependencies:
  dart_anticaptcha: ^1.1.5

使用

imageToText

使用该库最简单的方法是使用 memoryImageToBase64() 函数。此函数用于将图像转换为 base64 编码,然后上传到资源网站以解决验证码问题。同样,从网站获取 base64 图像需要使用 networkImageToBase64() 函数。

import 'package:dart_anticaptcha/dart_anticaptcha.dart';

void main() async {
  String key = 'YOUR_TOKEN'; // 替换为你的 API token
  String memoryImage = 'captcha.jpeg'; // 可替换为本地图片路径
  String networkImage = 'https://api.vk.com/captcha.php?sid=1'; // 可替换为网络图片 URL

  AntiCaptcha anticaptcha = AntiCaptcha(key);

  String? imgbase64 = await anticaptcha
      .networkImageToBase64(networkImage); // 或者使用 memoryImage

  Map headers = {
    "clientKey": key,
    "task": {"type": "ImageToTextTask", "body": imgbase64}
  };

  dynamic result = await anticaptcha.imageToText(headers);
  print(result['solution']['text']); // 输出解码后的文本
}

recaptchaV2TaskProxyless

recaptchaV2Demo 是一个登录页面地址。它可以位于网站的任何位置,包括订阅者无法访问的部分。我们的员工不会实际访问网站,而是模拟访问该页面。

websiteKey 是 ReCAPTCHA 的密钥。更多详情可参见:https://anti-captcha.com/apidoc/articles/how-to-find-the-sitekey

import 'package:dart_anticaptcha/dart_anticaptcha.dart';

void main() async {
  String recaptchaV2Demo = 'https://patrickhlauke.github.io/recaptcha/'; // 替换为 ReCAPTCHA 登录页面地址
  String websiteKey = 'YOUR_WEBSITE_KEY'; // 替换为你的 ReCAPTCHA 密钥
  String key = 'YOUR_TOKEN'; // 替换为你的 API token

  AntiCaptcha antiCaptcha = AntiCaptcha(key);

  Map header = {
    "clientKey": key,
    "task": {
      "type": "RecaptchaV2TaskProxyless",
      "websiteURL": recaptchaV2Demo,
      "websiteKey": websiteKey
    }
  };

  Map response = await antiCaptcha.recaptchaV2TaskProxyless(header);
  print(response['solution']['gRecaptchaResponse']); // 输出 gRecaptchaResponse
}

更多关于Flutter反验证码插件dart_anticaptcha的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter反验证码插件dart_anticaptcha的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter项目中,使用dart_anticaptcha插件可以帮助你实现反验证码功能。以下是一个基本的使用案例,展示了如何在Flutter应用中集成并使用dart_anticaptcha插件。

首先,确保你已经在pubspec.yaml文件中添加了dart_anticaptcha依赖:

dependencies:
  flutter:
    sdk: flutter
  dart_anticaptcha: ^latest_version  # 请替换为实际的最新版本号

然后,运行flutter pub get命令来安装依赖。

接下来,你可以在Flutter应用中按如下方式使用dart_anticaptcha插件:

import 'package:flutter/material.dart';
import 'package:dart_anticaptcha/dart_anticaptcha.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String resultText = '';

  @override
  void initState() {
    super.initState();
    _solveCaptcha();
  }

  Future<void> _solveCaptcha() async {
    try {
      // 初始化AnticaptchaClient
      AnticaptchaClient client = AnticaptchaClient(apiKey: 'YOUR_API_KEY');

      // 假设你要解决的是ReCaptcha v2
      String siteKey = 'YOUR_SITE_KEY';
      String pageUrl = 'YOUR_PAGE_URL';

      // 调用solveReCaptchaV2方法
      ReCaptchaV2Result result = await client.solveReCaptchaV2(siteKey: siteKey, pageUrl: pageUrl);

      // 更新UI
      setState(() {
        resultText = 'Captcha solved! Token: ${result.gRecaptchaResponse}';
      });
    } catch (e) {
      // 错误处理
      setState(() {
        resultText = 'Error solving captcha: $e';
      });
    }
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Anticaptcha Example'),
        ),
        body: Center(
          child: Text(resultText),
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几件事:

  1. 导入必要的包:我们导入了flutter/material.dartdart_anticaptcha/dart_anticaptcha.dart
  2. 定义主应用MyApp是一个有状态的Widget,它在其initState方法中调用_solveCaptcha函数。
  3. 初始化AnticaptchaClient:在_solveCaptcha函数中,我们创建了一个AnticaptchaClient实例,并传入了你的API密钥。
  4. 解决ReCaptcha v2:我们调用solveReCaptchaV2方法,传入siteKey和pageUrl,然后等待结果。
  5. 更新UI:如果成功解决验证码,我们将结果更新到UI上;如果失败,则显示错误信息。

请注意,你需要替换YOUR_API_KEYYOUR_SITE_KEYYOUR_PAGE_URL为实际的值。

这个示例只是一个简单的演示,实际应用中你可能需要更复杂的错误处理和UI更新逻辑。同时,确保你遵守Anticaptcha服务的使用条款和条件。

回到顶部