Flutter VPN检测插件check_vpn的使用

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

Flutter VPN检测插件check_vpn的使用

关于

这是一个非官方的VPNAPI.io插件。此插件帮助您打击IP欺诈等非法行为。该应用程序使用来自VPNAPI.io的API来阻止应用中的非法操作。

功能

VPNAPI.io在全网收集数据,其算法可以检测代理、VPN和Tor节点。它为开发者和企业提供了安心保障,当涉及到检测和阻止与代理、VPN和Tor节点相关的IP地址时。到目前为止,他们已经与世界各地的开发者合作,这些开发者使用他们的API来实施地理封锁、防止购物或点击欺诈、减少虚假账户和垃圾信息、防止机器人和恶意软件等!

先决条件

在网站上注册以获取API密钥。 在仪表板的账户详情部分,您可以查看API密钥。复制该密钥并存储在某个地方。

安装

运行以下Flutter命令:

flutter pub add check_vpn

或者,在您的pubspec.yaml文件中添加如下行(并隐式执行flutter pub get):

dependencies:
  check_vpn: ^0.0.1

开始使用

现在在您的Dart代码中,可以这样使用:

import "package:check_vpn/check_vpn.dart";
await CheckVPN.instance.getInfo(
  apiKey: "YOUR KEY HERE", // 替换为您自己的API密钥
  onSuccessResult: (res) {
    // 成功结果处理
  },
  onFailureResult: (err) {
    // 失败结果处理
  },
);

使用示例

// 这是一个基类,有子类:Security, Location, Network 等
SuccessResult successResult = SuccessResult();
// 这是一个基类,没有子类,除了一个变量
FailureResult failureResult = FailureResult();

await CheckVPN.instance.getInfo(
  apiKey: "YOUR KEY HERE", // 替换为您自己的API密钥
  onSuccessResult: (res) {
    // 将结果赋值给本地变量
    successResult = res;
  },
  onFailureResult: (err) {
    // 将错误赋值给本地变量
    failureResult = err;
  },
);

// 访问成功结果:
print(successResult.ip);               // 显示当前分配的IP地址
print(successResult.security?.vpn);    // 判断是否连接了VPN
print(successResult.location?.city);   // 显示IP地址对应的城市名称
print(successResult.network?.network); // 显示IP所属的网络

// 访问失败结果:
print(failureResult.message);         // 显示包出错的原因

额外信息

onSuccessResult的数据类型是SuccessResult。在这个类中,您可以提取关于IP地址、安全、位置、网络(ISP)等的信息。 onFailureResult的数据类型是FailureResult。在这个类中,您可以查找失败原因(例如未提供API密钥等)。

预览

预览图片

示例代码

以下是一个完整的示例demo:

import "dart:developer";

import "package:check_vpn/check_vpn.dart";
import "package:flutter/material.dart";

void main() async {
  WidgetsFlutterBinding.ensureInitialized(); // 确保Flutter绑定已初始化
  await gatherInformation(); // 调用方法获取信息
  runApp(const MyApp()); // 启动应用
}

Future<void> gatherInformation() async {
  SuccessResult successResult = SuccessResult(); // 初始化成功结果对象
  FailureResult failureResult = FailureResult(); // 初始化失败结果对象

  await CheckVPN.instance.getInfo(
    apiKey: "YOUR KEY HERE", // 替换为您自己的API密钥
    onSuccessResult: (SuccessResult res) {
      successResult = res; // 将结果赋值给本地变量
    },
    onFailureResult: (FailureResult err) {
      failureResult = err; // 将错误赋值给本地变量
    },
  );

  log("IP: ${successResult.ip}"); // 打印IP地址
  log("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
  log("Security: ${successResult.security?.toJson()}"); // 打印安全信息
  log("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
  log("Location: ${successResult.location?.toJson()}"); // 打印位置信息
  log("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
  log("Network: ${successResult.network?.toJson()}"); // 打印网络信息
  log("- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ");
  log("Error message: ${failureResult.message}"); // 打印错误信息
  return Future<void>.value(); // 返回空的Future
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "Check VPN Example", // 应用标题
      theme: ThemeData(
        useMaterial3: true,
        brightness: Brightness.light,
        colorSchemeSeed: Colors.blue, // 主题颜色
      ),
      darkTheme: ThemeData(
        useMaterial3: true,
        brightness: Brightness.dark,
        colorSchemeSeed: Colors.blue, // 暗黑模式主题颜色
      ),
      home: const Scaffold(), // 主界面
      debugShowCheckedModeBanner: false, // 隐藏调试模式横幅
    );
  }
}

更多关于Flutter VPN检测插件check_vpn的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter VPN检测插件check_vpn的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter应用中,检测VPN连接状态是一个常见的需求,特别是在需要确保数据安全和隐私的应用场景中。check_vpn 插件可以帮助你实现这一功能。以下是如何在Flutter项目中使用 check_vpn 插件的示例代码。

1. 添加依赖

首先,你需要在你的 pubspec.yaml 文件中添加 check_vpn 插件的依赖。

dependencies:
  flutter:
    sdk: flutter
  check_vpn: ^最新版本号  # 请替换为插件的最新版本号

然后运行 flutter pub get 来获取依赖。

2. 导入插件

在你的 Dart 文件中导入 check_vpn 插件。

import 'package:check_vpn/check_vpn.dart';

3. 使用插件检测VPN状态

你可以通过调用 CheckVpn.check() 方法来检测当前的VPN状态。这个方法返回一个 Future<bool>,表示是否连接到了VPN。

下面是一个简单的示例,展示如何在Flutter应用中检测VPN状态并显示结果。

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'VPN Detection Example',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: VpnDetectionScreen(),
    );
  }
}

class VpnDetectionScreen extends StatefulWidget {
  @override
  _VpnDetectionScreenState createState() => _VpnDetectionScreenState();
}

class _VpnDetectionScreenState extends State<VpnDetectionScreen> {
  String vpnStatus = "Checking VPN status...";

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

  Future<void> _checkVpnStatus() async {
    bool isVpnConnected = await CheckVpn.check();
    setState(() {
      vpnStatus = isVpnConnected ? "VPN is connected" : "VPN is not connected";
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('VPN Detection Example'),
      ),
      body: Center(
        child: Text(vpnStatus),
      ),
    );
  }
}

4. 运行应用

确保你的开发环境已经配置好,然后运行 flutter run 来启动你的应用。你应该能看到应用显示当前的VPN连接状态。

注意事项

  • 请注意,VPN检测可能受到操作系统和设备设置的影响,某些情况下可能无法准确检测。
  • 在实际应用中,处理VPN状态变化可能需要更复杂的逻辑,比如监听VPN状态的变化,这可能需要结合原生代码实现。
  • 使用VPN检测功能时,请确保遵守相关法律法规和隐私政策。

希望这个示例代码能帮助你在Flutter应用中实现VPN检测功能。

回到顶部