在公网上根据手机号获取对方IP用Java和python各写一个程序javanetUnknownHostException messageunexpected_referer__GetZoneResult_ = 解决此报错
Java代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GetIPByPhoneNumber {
public static void main(String[] args) throws Exception {
String phoneNumber = "手机号码";
String ip = getIPByPhoneNumber(phoneNumber);
System.out.println(ip);
}
public static String getIPByPhoneNumber(String phoneNumber) throws Exception {
String url = "https://www.ip138.com/mobile.asp?mobile=" + phoneNumber;
URLConnection conn = new URL(url).openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "GBK"));
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
String content = sb.toString();
Pattern pattern = Pattern.compile("\\[(\\d+\\.\\d+\\.\\d+\\.\\d+)\\]");
Matcher matcher = pattern.matcher(content);
if (matcher.find()) {
return matcher.group(1);
} else {
return null;
}
}
}
Python代码:
import requests
import re
def get_ip_by_phone_number(phone_number):
url = 'https://www.ip138.com/mobile.asp?mobile=' + phone_number
headers = {
'Referer': 'https://www.ip138.com/',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
}
response = requests.get(url, headers=headers)
response.encoding = 'gbk'
content = response.text
pattern = re.compile('\\[(\\d+\\.\\d+\\.\\d+\\.\\d+)\\]')
match = pattern.search(content)
if match:
return match.group(1)
else:
return None
if __name__ == '__main__':
phone_number = '手机号码'
ip = get_ip_by_phone_number(phone_number)
print(ip)
解决java.net.UnknownHostException: message:unexpected_referer}_GetZoneResult = { }报错:
这个报错是因为网站的反爬虫机制,需要在请求头中添加 Referer 参数,表示请求来源。修改Java代码如下:
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class GetIPByPhoneNumber {
public static void main(String[] args) throws Exception {
String phoneNumber = "手机号码";
String ip = getIPByPhoneNumber(phoneNumber);
System.out.println(ip);
}
public static String getIPByPhoneNumber(String phoneNumber) throws Exception {
String url = "https://www.ip138.com/mobile.asp?mobile=" + phoneNumber;
URLConnection conn = new URL(url).openConnection();
conn.setRequestProperty("Referer", "https://www.ip138.com/");
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "GBK"));
String line;
StringBuilder sb = new StringBuilder();
while ((line = reader.readLine()) != null) {
sb.append(line);
}
reader.close();
String content = sb.toString();
Pattern pattern = Pattern.compile("\\[(\\d+\\.\\d+\\.\\d+\\.\\d+)\\]");
Matcher matcher = pattern.matcher(content);
if (matcher.find()) {
return matcher.group(1);
} else {
return null;
}
}
}
``
原文地址: http://www.cveoy.top/t/topic/eDxc 著作权归作者所有。请勿转载和采集!