|
|
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[i];
-
- try {
- printl("³¢ÊÔ·þÎñ: " + service.name + " (" + service.url + ")");
-
- // ÉèÖý϶̵ij¬Ê±Ê±¼ä
- 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(',')[0].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[i]);
- 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🎉 ³É¹¦»ñÈ¡ÄúµÄÍâÍøIP: " + myIP);
- } else {
- // ·½·¨2£º³¬¼¶¼ò»¯°æ±¾
- printl("\n--- ·½·¨2: ³¬¼¶¼ò»¯Ä£Ê½ ---");
- myIP = getIPUltraSimple();
-
- if (myIP && !isPrivateIPQuick(myIP)) {
- printl("\n🎉 ³É¹¦»ñÈ¡ÄúµÄÍâÍø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();
¸´ÖÆ´úÂë
|
|