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() {@Overridepublic void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {}@Overridepublic 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
Okttp模拟PC浏览器发送http请求相关推荐
- 微信浏览器发送ajax请求执行多次解决方法
微信浏览器发送ajax请求执行多次解决方法 参考文章: (1)微信浏览器发送ajax请求执行多次解决方法 (2)https://www.cnblogs.com/hmhhz/p/8940145.html ...
- 解决ie浏览器发送ajax请求的缓存问题
由于ie浏览器的缓存问题,我们使用ie浏览器发送ajax请求,修改服务器js代码后,再次发送该ajax请求,ie浏览器会从缓存中查找该请求的数据,这样会导致ie显示的数据并不是最新的. 1.服务器代码 ...
- 浏览器发送http请求过程分析
https://segmentfault.com/a/1190000010156898 请求过程整体流程: 域名解析 --> 发起TCP的3次握手 --> 建立TCP连接后发起http请求 ...
- Scrapy框架的学习(12. scrapy中的模拟登陆,发送post请求模拟登陆)
1.在有的网站的的登录的界面上,有用户名以及输入密码的输入框 然后输入账号和密码进去,点击登录,后台就会把得到的数据发送过去,验证之后然后就登录成功了,就会跳转到 响应的登录之后的网站 2. 我们可以 ...
- python模拟浏览器请求的库_基于Python模拟浏览器发送http请求
1.使用 urllib2 实现 #! /usr/bin/env python # -*- coding=utf-8 -*- import urllib2 url="https://www.b ...
- java模拟servlet_Java应用程序模拟向Servlet发送POST请求
在某些情况下,需要用Java applicatioin来模拟form,向服务器(本文以servlet为例)发送http post请求,包括提交表单域中的数据以及上传文件.如果仅仅是传递form中的数据 ...
- springboot接收浏览器发送delete请求( method not allowed 405解决方法)
[README] 浏览器使用form提交信息的时候只支持GET和POST,如果需要在浏览器上使用PUT和DELETE请求方式的话,只能使用欺骗的方式了,SpringMvc提供了HiddenHttpMe ...
- 微信一次发两个ajax请求,微信浏览器发送ajax请求执行多次解决方法
一次sql排序的问题. select date, count(fail) as fail,count(win) as win from (select date,(case (result) when ...
- 计算机网络 浏览器发送http请求的过程分析
https://segmentfault.com/a/1190000010156898 这篇提到了在域名解析时的各级缓存查找: http://2277259257.iteye.com/blog/202 ...
最新文章
- Akka的Actor编程
- Sherri Sparks
- (SpringMVC)数据处理及跳转
- Kali下JDK1.8的安装过程
- r8169驱动下载linux,CentOS自带R8169驱动与R8168网卡之间的烦恼
- 2017/3/8 函数指针/事件/委托....
- Linux 4.15 rc7,Linux学习之十五(sed命令)-2017-4-23
- Nature重磅:发现延长女性生育寿命的新基因
- 校园表白墙-带后台源码
- SQL语句中exists/not exists的用法分析
- 软考历程(4)——安全问题之病毒
- 计算机ip保留地址,分类ip地址中,保留地址有哪些?具体点说说,作业。
- CAj格式文件打开方法
- Win10 电脑磁盘分区
- 记录Magisk面具root,并使用HttpCanary获取APP或小程序请求 (一)
- 刀片服务器装linux,刀片服务器硬盘启动Linux独立安装
- msp430单片机复习内容
- 满满干货!送给想学生物竞赛的同学们一份入门指南
- 微机原理与接口技术[第三版]——第五章课后习题答案
- 复数java实验_java实验 复数
热门文章
- 17-面向对象之语法(2)
- python获取当前时间、今天零点、23时59分59秒、昨天的当前时间、明天的当前时间
- Linux系统下如何查看Nvidia显卡芯片型号的两种方法
- python刷视频挣钱_薅羊毛--使用python+adb实现自动刷视频点赞
- 计算机表演赛分赛区决赛,国际儿童节计算机表演赛 天津分赛区决赛开始
- mac安装win7之后鼠标失灵_苹果电脑装WIN7鼠标不能动怎么处理
- 安全组设置IP段 -- 示列
- ta点读笔客户端_点读笔到底哪支好?12款点读笔评测:看完不再稀里糊涂
- lumen 项目根目录_Lumen 初体验(二)
- 有计划,坚决执行——写给大三犹豫的女生