目的
最近在做电商项目,里面有裂变红包。一些羊毛党防不胜防,全是境外的ip,为了防止羊毛党,我们需要对ip进行限制。
直接上代码
package com.example.study.service;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.*;
/**
* @description: 直接调用dididi()即可
**/
@Service
public class GetHTMLService {
private static final Logger log = LoggerFactory.getLogger(GetHTMLService.class);
//HttpURLConnection获取中国地区IP
public String dididi() {
Map<String,String> map = request("http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest");
String s = parseOnline(map.get("result"));
return s;
}
//获取页面内容
private static Map<String,String> request(String url) {
Map<String,String> response = new HashMap<String, String>();
try{
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
//设置请求方式
con.setRequestMethod("GET");
con.setDoOutput(true);
int responseCode = con.getResponseCode();
response.put("code",responseCode + "");
if (responseCode == 200) {
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer responseBuffer = new StringBuffer();
while((inputLine = in.readLine())!=null){
responseBuffer.append(inputLine).append("\n");
}
in.close();
response.put("result",responseBuffer.toString());
}else{
response.put("result","");
}
}catch (Exception e){
response.put("result","failed");
}
return response;
}
//筛选中国区域的IP
private static String parseOnline(String str1){
String lists[] = str1.split("\n");
StringBuilder sb = new StringBuilder();
try {
for (String str:lists) {
if (str.startsWith("apnic") && str.contains("|CN|ipv4|")){
String a[] = str.split("\\|");
Integer mask = 32-(int)(Math.log(Double.valueOf(a[4]))/Math.log(2));
sb.append(a[3]).append("/").append(mask).append('\n');
}
}
} catch (Exception e) {
e.printStackTrace();
}
return sb.toString();
}
}