YYPOST群发软件 发表于 2025-10-28 08:23:09

AIWROK软件技术分享苹果IOS系统获取外部IP

AIWROK软件技术分享苹果IOS系统获取外部IP










/**
* AIWROK软件安卓交流QQ群711841924
* 苹果内测软件QQ群648461709
* 适用于苹果IOS系统里面用,可以获取外部IP
*/

// =============================================================================
// 快速获取外网IP苹果是ES6语法
// =============================================================================

function getExternalIPQuick() {
    printl("=== 快速获取外网IP(避免SSL问题) ===");
   
    // 尝试使用OkHttp(首字母大写)而不是okHttp
    var http = new OkHttp();
   
    // 设置简单的请求头
    http.setHeader("User-Agent", "QuickIP/1.0");
    http.setHeader("Accept", "text/plain");
    http.setHeader("Connection", "close");
   
    // 专门针对您的网络环境选择的HTTP服务(优先可靠的服务)
    var quickServices = [
      {
            name: "HTTPBin",
            url: "http://httpbin.org/ip",
            timeout: 3
      },
      {
            name: "IPify",
            url: "http://api.ipify.org",
            timeout: 3
      },
      {
            name: "MyIP",
            url: "http://api.my-ip.io/ip",
            timeout: 3
      },
      {
            name: "ICanHazIP",
            url: "http://ipv4.icanhazip.com",
            timeout: 3
      },
      {
            name: "AWS CheckIP",
            url: "http://checkip.amazonaws.com",
            timeout: 5
      }
    ];
   
    for (var i = 0; i < quickServices.length; i++) {
      var service = quickServices;
      
      try {
            printl("尝试服务: " + service.name + " (" + service.url + ")");
            
            // 设置较短的超时时间
            http.setTimeout(service.timeout * 1000, service.timeout * 1000, service.timeout * 1000);
            
            var startTime = new Date().getTime();
            var response = http.get(service.url);
            var endTime = new Date().getTime();
            
            if (response && response.length > 0) {
                var ip = response.trim();
                var duration = endTime - startTime;
               
                printl("响应时间: " + duration + "ms");
                printl("原始响应: " + ip.substring(0, 100));
               
                // 特殊处理需要解析JSON的服务
                if (service.name === "HTTPBin") {
                  try {
                        var jsonResponse = JSON.parse(ip);
                        if (jsonResponse.origin) {
                            ip = jsonResponse.origin.split(',').trim(); // 可能包含多个IP,取第一个
                        }
                  } catch (parseError) {
                        printl("JSON解析失败: " + parseError);
                  }
                } else if (service.name === "IPify") {
                  try {
                        var jsonResponse = JSON.parse(ip);
                        if (jsonResponse.ip) {
                            ip = jsonResponse.ip;
                        }
                  } catch (parseError) {
                        // 如果不是JSON格式,就直接使用原始响应
                        printl("非JSON响应,使用原始内容");
                  }
                }
               
                // 验证IP格式
                if (isValidIPQuick(ip)) {
                  printl("✓ 成功获取IP: " + ip + " (耗时: " + duration + "ms)");
                  printl("使用的服务: " + service.name);
                  return ip;
                } else {
                  printl("✗ 响应格式无效");
                }
            } else {
                printl("✗ 无响应或空内容");
            }
            
      } catch (error) {
            var errorMsg = error.toString();
            printl("✗ 连接失败: " + errorMsg.substring(0, 80));
            
            // 分析错误类型
            if (errorMsg.indexOf('SSL') > -1) {
                printl("原因: SSL握手失败");
            } else if (errorMsg.indexOf('timeout') > -1) {
                printl("原因: 连接超时");
            } else if (errorMsg.indexOf('Connection reset') > -1) {
                printl("原因: 连接被重置");
            }
      }
      
      // 短暂延迟后尝试下一个
      // sleep.millisecond(300); // 注释掉可能不存在的函数
    }
   
    printl("所有快速服务都失败了");
    return null;
}


/**
* 简化的IP验证方法
*/
function isValidIPQuick(ip) {
    if (!ip || typeof ip !== 'string') {
      return false;
    }
   
    // 清理IP字符串
    ip = ip.trim().replace(/\n/g, '').replace(/\r/g, '');
   
    // 简单的IPv4验证
    var parts = ip.split('.');
    if (parts.length !== 4) {
      return false;
    }
   
    for (var i = 0; i < parts.length; i++) {
      var num = parseInt(parts);
      if (isNaN(num) || num < 0 || num > 255) {
            return false;
      }
    }
   
    return true;
}

/**
* 检查是否为内网IP
*/
function isPrivateIPQuick(ip) {
    if (!isValidIPQuick(ip)) {
      return false;
    }
   
    // 内网IP范围检查
    if (ip.indexOf('192.168.') === 0 ||
      ip.indexOf('10.') === 0 ||
      ip.indexOf('172.16.') === 0 ||
      ip.indexOf('172.17.') === 0 ||
      ip.indexOf('172.18.') === 0 ||
      ip.indexOf('172.19.') === 0 ||
      ip.indexOf('172.20.') === 0 ||
      ip.indexOf('172.21.') === 0 ||
      ip.indexOf('172.22.') === 0 ||
      ip.indexOf('172.23.') === 0 ||
      ip.indexOf('172.24.') === 0 ||
      ip.indexOf('172.25.') === 0 ||
      ip.indexOf('172.26.') === 0 ||
      ip.indexOf('172.27.') === 0 ||
      ip.indexOf('172.28.') === 0 ||
      ip.indexOf('172.29.') === 0 ||
      ip.indexOf('172.30.') === 0 ||
      ip.indexOf('172.31.') === 0 ||
      ip.indexOf('127.') === 0) {
      return true;
    }
   
    return false;
}

/**
* 超级简化版本(最后手段)
*/
function getIPUltraSimple() {
    printl("=== 超级简化版本(优先ip138) ===");
   
    // 尝试使用OkHttp(首字母大写)而不是okHttp
    var http = new OkHttp();
    http.setTimeout(3000, 3000, 3000); // 极短超时
   
    // 尝试AWS服务
    try {
      printl("尝试AWS CheckIP...");
      var response = http.get("http://checkip.amazonaws.com");
      if (response) {
            var ip = response.trim();
            if (isValidIPQuick(ip)) {
                printl("✓ AWS服务成功: " + ip);
                return ip;
            }
      }
    } catch (e) {
      printl("AWS服务失败: " + e);
    }
   
    // 备用方案
    try {
      printl("尝试备用服务...");
      var response = http.get("http://ipecho.net/plain");
      if (response) {
            var ip = response.trim();
            if (isValidIPQuick(ip)) {
                printl("✓ 备用服务成功: " + ip);
                return ip;
            }
      }
    } catch (e) {
      printl("备用服务也失败: " + e);
    }
   
    return null;
}

// =============================================================================
// 主执行程序
// =============================================================================

function main() {
    printl("========================================");
    printl("外网IP快速获取工具(SSL问题优化版)");
    printl("针对您的网络环境专门优化");
    printl("========================================");
   
    var myIP = null;
   
    try {
      // 方法1:快速获取
      printl("\n--- 方法1: 快速获取模式 ---");
      myIP = getExternalIPQuick();
      
      if (myIP && !isPrivateIPQuick(myIP)) {
            printl("\n&#127881; 成功获取您的外网IP: " + myIP);
      } else {
            // 方法2:超级简化版本
            printl("\n--- 方法2: 超级简化模式 ---");
            myIP = getIPUltraSimple();
            
            if (myIP && !isPrivateIPQuick(myIP)) {
                printl("\n&#127881; 成功获取您的外网IP: " + myIP);
            } else {
                printl("\n❌ 获取失败");
                printl("可能原因:");
                printl("1. 网络连接存在问题");
                printl("2. 防火墙阻止所有HTTP请求");
                printl("3. 代理服务器配置问题");
                printl("4. 网络环境限制过于严格");
               
                printl("\n建议:");
                printl("1. 检查网络连接状态");
                printl("2. 尝试关闭VPN或代理");
                printl("3. 切换到移动数据网络测试");
                printl("4. 联系网络管理员");
            }
      }
      
    } catch (error) {
      printl("程序执行异常: " + error);
    }
   
    printl("\n========================================");
    printl("程序执行完成");
    printl("========================================");
}

// 直接执行
main();

页: [1]
查看完整版本: AIWROK软件技术分享苹果IOS系统获取外部IP