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