Android 为什么从截击中接收的公共IP不同于浏览器?

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

我成功地创建了一个android应用程序,它可以通过volley获得设备的公共ip。我正在使用这个网站

当我使用浏览器浏览网站时,我得到这个ip 64.233.173.15,但当我使用截击请求它时,它返回这个ip 123.136.111.227

我已尝试以下操作,但失败:

  • 使用不同的网站截击

  • 托管自己的脚本以获取公共ip

发生了什么事?如何返回与浏览器相同的ip

编辑1 IpResolver类

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.*.**显示代码您是如何操作的?您好,我刚刚用代码更新了我的问题。谢谢