为什么公共IP从凌空不同于浏览器接收?

时间:2016-12-11 14:02:23

标签: android android-volley

我设法创建了一个Android应用程序,可以使用这个网站http://v4.ipv6-test.com/api/myip.php通过volley.Im获取设备公共IP。

当我使用浏览器浏览网站时,我得到了这个IP 64.233.173.15但是当我使用凌空请求它时,它返回此ip 123.136.111.227。

我已经尝试了以下但失败了:

  • 使用不同的网站进行排球

  • 主持自己的脚本以获取公共IP

会发生什么?如何返回与浏览器相同的IP?

已编辑1

IpResolver Class

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(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","");
            }
        });

编辑2

我试图通过谷歌跟踪ip的来源,结果成为我的ISP。我在局域网里面还是什么?但是为什么浏览器能够显示这个ip 64.233.173.15但是当我使用凌空请求它时,它返回此ip 123.136.111.227。

https://ipinfo.io/123.136.107.48

1 个答案:

答案 0 :(得分:0)

我刚刚找到了答案。 IP与Volley显示的结果不同,因为我的Chrome浏览器启用了Data Saver。似乎流量已经重新路由到他们的服务器或某种代理。当我禁用数据保存时,我能够获得与Volley提供的相同的IP