Android 为什么从截击中接收的公共IP不同于浏览器?
我成功地创建了一个android应用程序,它可以通过volley获得设备的公共ip。我正在使用这个网站 当我使用浏览器浏览网站时,我得到这个ip 64.233.173.15,但当我使用截击请求它时,它返回这个ip 123.136.111.227 我已尝试以下操作,但失败:Android 为什么从截击中接收的公共IP不同于浏览器?,android,android-volley,Android,Android Volley,我成功地创建了一个android应用程序,它可以通过volley获得设备的公共ip。我正在使用这个网站 当我使用浏览器浏览网站时,我得到这个ip 64.233.173.15,但当我使用截击请求它时,它返回这个ip 123.136.111.227 我已尝试以下操作,但失败: 使用不同的网站截击 托管自己的脚本以获取公共ip 发生了什么事?如何返回与浏览器相同的ip 编辑1 IpResolver类 public class PublicIPResolver { public stati
- 使用不同的网站截击
- 托管自己的脚本以获取公共ip
public class PublicIPResolver {
public static void getIPV4(Context context, Response.Listener<String> ip, Response.ErrorListener errorListener)
{
RequestQueue queue = Volley.newRequestQueue(context);
String url ="http://beta.oligococo.tk/api/ipv4.php";
// Request a string response from the provided URL.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url, ip,errorListener);
// Add the request to the RequestQueue.
queue.add(stringRequest);
}
}
公共类PublicIPResolver{
公共静态无效getIPV4(上下文上下文,Response.Listener ip,Response.ErrorListener ErrorListener)
{
RequestQueue=Volley.newRequestQueue(上下文);
字符串url=”http://beta.oligococo.tk/api/ipv4.php";
//从提供的URL请求字符串响应。
StringRequest StringRequest=新的StringRequest(Request.Method.GET、url、ip、errorListener);
//将请求添加到RequestQueue。
添加(stringRequest);
}
}
听众
PublicIPResolver.getIPV4(GooglePlayService.this, new Response.Listener<String>() {
@Override
public void onResponse(String ipv4) {
Toast.makeText(GooglePlayService.this, "IP Resolved! n my ip is : " +ipv4, Toast.LENGTH_LONG).show();
myPref.saveToPref("Got_Internet","true");
myPref.saveToPref("MyIP",ipv4);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Toast.makeText(GooglePlayService.this,volleyError.getMessage(),Toast.LENGTH_SHORT).show();
myPref.saveToPref("Got_Internet","false");
myPref.saveToPref("MyIP","");
}
});
PublicIPResolver.getIPV4(GooglePlayService.this,new Response.Listener()){
@凌驾
公共void onResponse(字符串ipv4){
Toast.makeText(GooglePlayService.this,“IP解析!n我的IP是:“+ipv4,Toast.LENGTH_LONG).show();
myPref.saveToPref(“获得互联网”、“真实”);
myPref.saveToPref(“MyIP”,ipv4);
}
},new Response.ErrorListener(){
@凌驾
公共错误响应(截击错误截击错误){
Toast.makeText(GooglePlayService.this,volleyError.getMessage(),Toast.LENGTH_SHORT.show();
myPref.saveToPref(“Got_Internet”,“false”);
myPref.saveToPref(“MyIP”,即“);
}
});
编辑2
我试图通过谷歌追踪ip的来源,结果发现是我的ISP。我在他们的局域网里还是什么?但为什么浏览器能够显示此ip 64.233.173.15,但当我使用截击请求时,它返回此ip 123.136.111.227
我刚找到答案。IP与Volley显示的结果不同,因为我的chrome浏览器启用了数据保护程序。似乎流量已被重新路由到其服务器或某种代理。当我禁用数据保存时,我能够获得与截击相同的IP,我刚刚找到了答案。IP与Volley显示的结果不同,因为我的chrome浏览器启用了数据保护程序。似乎流量已被重新路由到其服务器或某种代理。当我禁用数据保存时,我能够获得与Volley提供的相同的IP在真实设备上进行测试,如果您正在模拟上进行测试,或者在真实设备上进行了尝试。它在浏览器上显示为64.*.*.*时,返回123.19.*.**显示代码您是如何操作的?您好,我刚刚用代码更新了我的问题。感谢您在真实设备上测试它,如果您正在模拟上测试,请在真实设备上尝试。它在浏览器上显示为64.*.*.*时,返回123.19.*.**显示代码您是如何操作的?您好,我刚刚用代码更新了我的问题。谢谢