From f06a592dd1a7e995bf313ccb5efe7dff73ccfc4e Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期三, 12 四月 2023 18:25:52 +0800
Subject: [PATCH] 增加本地获取IP归属地/广告优化

---
 src/main/java/com/yeshi/buwan/util/IPUtil.java |  234 ++++++++--------------------------------------------------
 1 files changed, 33 insertions(+), 201 deletions(-)

diff --git a/src/main/java/com/yeshi/buwan/util/IPUtil.java b/src/main/java/com/yeshi/buwan/util/IPUtil.java
index 02a1879..c24b684 100644
--- a/src/main/java/com/yeshi/buwan/util/IPUtil.java
+++ b/src/main/java/com/yeshi/buwan/util/IPUtil.java
@@ -1,13 +1,16 @@
 package com.yeshi.buwan.util;
 
+import com.google.gson.Gson;
 import com.show.api.ShowApiRequest;
 import net.sf.json.JSONObject;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpException;
 import org.apache.commons.httpclient.methods.GetMethod;
+import org.lionsoul.ip2region.xdb.Searcher;
 
 import javax.servlet.http.HttpServletRequest;
 import java.io.BufferedInputStream;
+import java.io.File;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.net.URL;
@@ -15,6 +18,19 @@
 import java.net.URLEncoder;
 
 public class IPUtil {
+    private static Searcher searcher;
+
+    static {
+        try {
+            URL url = IPUtil.class.getClassLoader().getResource("ip2region.xdb");
+            String path = new File(url.toURI()).getAbsolutePath();
+            byte[] vIndex = Searcher.loadVectorIndexFromFile(path);
+            searcher = Searcher.newWithVectorIndex(path, vIndex);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     // http://verx.daili666.com/ip/?tid=558287898012218&num=1&operator=2
     public static void changeIp() {
         System.getProperties().setProperty("proxySet", "true"); // 濡傛灉涓嶈缃紝鍙浠g悊IP鍜屼唬鐞嗙鍙f纭�,姝ら」涓嶈缃篃鍙互
@@ -57,177 +73,6 @@
         return result;
     }
 
-    // 娌℃湁鎵惧埌浠g悊IP
-    // 閲嶅簡
-    public static String getDaiLiIP(String area) {
-        HttpClient client = new HttpClient();
-        GetMethod get = null;
-        try {
-            get = new GetMethod(
-
-                    "http://verx.daili666.com/ip/?tid=559511877530791&num=1&operator=2&filter=on&area="
-                            + URLEncoder.encode(area, "UTF-8") + "");
-        } catch (UnsupportedEncodingException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-
-        try {
-            client.executeMethod(get);
-            String result = get.getResponseBodyAsString();
-            sendNoticeEmail(result);
-            LogUtil.i(result);
-            if (!result.contains("娌℃湁鎵惧埌"))
-                return result;
-            else
-                return null;
-        } catch (HttpException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    public static String getDaiLiIP1(String area) {
-        HttpClient client = new HttpClient();
-        GetMethod get = null;
-        try {
-            get = new GetMethod(
-
-                    "http://verx.daili666.com/ip/?tid=559186334744019&num=1&area=" + URLEncoder.encode(area, "UTF-8")
-                            + "");
-        } catch (UnsupportedEncodingException e1) {
-            e1.printStackTrace();
-        }
-        try {
-            client.executeMethod(get);
-            String result = get.getResponseBodyAsString();
-            sendNoticeEmail(result);
-            LogUtil.i(result);
-            if (!result.contains("娌℃湁鎵惧埌"))
-                return result;
-            else
-                return null;
-        } catch (HttpException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    // 鎴愰兘
-
-    public static String getDaiLiIP2(String area) {
-        HttpClient client = new HttpClient();
-        GetMethod get = null;
-        try {
-            get = new GetMethod("http://verx.daili666.com/ip/?tid=558287898012218&num=1&filter=on&area="
-                    + URLEncoder.encode(area, "UTF-8"));// &area="+
-            // URLEncoder.encode(area,
-            // "UTF-8") + "
-        } catch (Exception e1) {
-            e1.printStackTrace();
-        }
-        try {
-            client.executeMethod(get);
-            String result = get.getResponseBodyAsString();
-            sendNoticeEmail(result);
-            LogUtil.i(result);
-            if (!result.contains("娌℃湁鎵惧埌"))
-                return result;
-            else
-                return null;
-        } catch (HttpException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    public static String getDaiLiIP3(String area) {
-        HttpClient client = new HttpClient();
-        GetMethod get = null;
-        try {
-            get = new GetMethod("http://verx.daili666.com/ip/?tid=557489926231876&num=1&filter=on&area="
-                    + URLEncoder.encode(area, "UTF-8") + "");
-        } catch (UnsupportedEncodingException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        try {
-            client.executeMethod(get);
-            String result = get.getResponseBodyAsString();
-            sendNoticeEmail(result);
-            LogUtil.i(result);
-            if (!result.contains("娌℃湁鎵惧埌"))
-                return result;
-            else
-                return null;
-        } catch (HttpException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    public static String getDaiLiIP4(String area) {
-        HttpClient client = new HttpClient();
-        GetMethod get = null;
-        try {
-            get = new GetMethod("http://verx.daili666.com/ip/?tid=556436495975069&num=1&area="
-                    + URLEncoder.encode(area, "UTF-8") + "");
-        } catch (UnsupportedEncodingException e1) {
-            // TODO Auto-generated catch block
-            e1.printStackTrace();
-        }
-        try {
-            client.executeMethod(get);
-            String result = get.getResponseBodyAsString();
-            sendNoticeEmail(result);
-            LogUtil.i(result);
-            if (!result.contains("娌℃湁鎵惧埌"))
-                return result;
-            else
-                return null;
-        } catch (HttpException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
-    public static String getDaiLiIP5(String area) {
-        HttpClient client = new HttpClient();
-        GetMethod get = null;
-        try {
-            get = new GetMethod("http://verx.daili666.com/ip/?tid=559418280288916&num=1&filter=on&area="
-                    + URLEncoder.encode(area, "UTF-8") + "");
-
-        } catch (UnsupportedEncodingException e1) {
-            e1.printStackTrace();
-        }
-        try {
-            client.executeMethod(get);
-            String result = get.getResponseBodyAsString();
-            LogUtil.i(result);
-            sendNoticeEmail(result);
-            if (!result.contains("娌℃湁鎵惧埌"))
-                return result;
-            else
-                return null;
-        } catch (HttpException e) {
-            e.printStackTrace();
-        } catch (IOException e) {
-            e.printStackTrace();
-        }
-        return null;
-    }
-
     private static void sendNoticeEmail(String get) {
         if (get != null && get.contains("璁㈠崟鍓╀綑鏁伴噺涓嶈冻")) {
             /*
@@ -268,37 +113,12 @@
         return request.getRemotePort();
     }
 
-    public static String getIPContry(String ip) {
-        IPInfo ipInfo = getIPInfo(ip);
-        return ipInfo == null ? "" : ipInfo.getCountry();
+    public static IPInfo getLocalIPInfo(String ip) throws Exception {
+        String info = searcher.search(ip);
+        String[] infos = info.split("\\|");
+        IPInfo ipInfo = new IPInfo(infos[0], infos[2], infos[3]);
+        return ipInfo;
     }
-
-    public static String getIPProvince(String ip) {
-        IPInfo ipInfo = getIPInfo(ip);
-        return ipInfo == null ? "" : ipInfo.getProvince();
-    }
-
-    public static IPInfo getIPInfo(String ip) {
-        try {
-            String res = new ShowApiRequest("http://route.showapi.com/2152-1", "49053", "983e020ce60042cd95f39b3ebd4b9563")
-                    .addTextPara("ip", ip)
-                    .post();
-            JSONObject json = JSONObject.fromObject(res);
-            if (json.optInt("showapi_res_code") == 0) {
-                JSONObject body = json.optJSONObject("showapi_res_body");
-                if (body != null) {
-                    String country = body.optString("country");
-                    String state = body.optString("state");
-                    String city = body.optString("city");
-                    return new IPInfo(country, state, city);
-                }
-            }
-        } catch (Exception e) {
-
-        }
-        return null;
-    }
-
 
     public static class IPInfo {
         private String province;
@@ -336,4 +156,16 @@
         }
     }
 
+    public static void main(String[] args) {
+        try {
+            IPInfo info =     getLocalIPInfo("113.250.254.8");
+            System.out.println(new Gson().toJson(info));
+            info = getLocalIPInfo("193.112.35.168");
+            System.out.println(new Gson().toJson(info));
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+    }
+
 }

--
Gitblit v1.8.0