Okttp模拟PC浏览器发送http请求

有的网站为了不让app请求他们的API就做了限制,根据header判断是否是pc或者手机。如果是pc就让通过,如果是手机就返回错误。兵来将挡,水来土掩。我们可以把自己伪装成pc进行请求,这样就可以了。不过可不要拿来做坏事哦


首先网站后台端是如何做的区分,

通过判断用户的客户端的user-agent信息来区分用户设备,可以满足大部分用户的设备判断要求,若用户对自己的user-agent进行篡改,会导致当前的判断失效

String requestHeader = request.getHeader("user-agent");

      if (isMobileDevice(requestHeader)) {
           //移动设备
        }

public static boolean isMobileDevice(String requestHeader) {
        /**
         * android : 所有android设备 mac os : iphone ipad windows
         * phone:Nokia等windows系统的手机
         */
        String[] deviceArray = new String[] { "Android", "iPhone", "MQQBrowser", "UCWEB", "Windows Phone", "iPod", "iPad", "BlackBerry", "hp-tablet",
                "SymbianOS" };
        if (requestHeader == null)
            return false;
        requestHeader = requestHeader.toLowerCase();
        if (!requestHeader.contains("Windows NT".toLowerCase()) && !requestHeader.contains("Macintosh".toLowerCase())) {
            for (String device : deviceArray) {
                if (requestHeader.contains(device.toLowerCase())) {
                    return true;
                }
            }
        }
        return false;
    }


那么我们就知道如何修改了,下面具体实现

OKhttp的实现:

Request request = new Request.Builder()
                    .url(url)
                    .addHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 7.0; Windows 7)")
                    .get()
                    .build();
            Call call = okClient.newCall(request);


android-async-http的实现:

AsyncHttpClient client = new AsyncHttpClient();
        //设置USerAgent模拟PC访问
        client.setUserAgent("Mozilla/4.0 (compatible; MSIE 7.0; Windows 7)");
        client.get(url, new TextHttpResponseHandler() {
            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {

            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, String responseString) {
            }
        });



参考链接:

http://blog.csdn.net/ithouse/article/details/53230533

http://blog.csdn.net/bidewang_wolf/article/details/72689395

猜你喜欢

转载自blog.csdn.net/dreamsever/article/details/79309801