java 伪装浏览器_[Java教程]伪装虽易测试不易之微信浏览器
[Java教程]伪装虽易测试不易之微信浏览器
0 2014-04-03 20:00:38
前言 众所周知,微信项目html5界面的开发时间会相对较长(为什么这么说就不解释了),以及在微信浏览器内会出现一些无法在web端检测出的问题,笔者有了模拟微信浏览器的想法,google之后,发现有方法来伪装浏览器,也就是利用浏览器的user Agent,(每款浏览器都有自己不同的user Agent ,而且通过user Agent可以判断浏览器版本、所用的操作系统等参数,当用户通过浏览器向服务器发起请求时,请求头(header)中就会包含User Agent,服务器端可以获取该值)。
插件下载:笔者以火狐为例来详解如何模拟微信浏览器:
首先,下载火狐浏览器的User Agent Switcher 插件,下载地址:https://addons.mozilla.org/zh-CN/firefox/addon/user-agent-switcher/ 插件如图:
安装成功后可在工具选项中看到Default User Agent选项,如下图:
获取微信浏览器的 User Agent
经笔者的测试,MicroMessenger 是微信浏览器特定的标识,所以上图中的if语句即可判断请求是否为微信浏览器发起。
注意一下上图中的agent,下文中要用到
搭建微信浏览器笔者用自己的GT-I9300获取的agent为:Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; GT-I9300 Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.2.380
打开Default User Agent下的
添加新的user agent
将user agent切换为刚建的GT-9300 进行测试:
自己比较一下www.baidu.com原来的样子,如图算是添加成功了。
模拟微信浏览器请求
这是笔者之前所用的方法,基本作用跟前文差不多,希望对各位有所帮助
1 package sedion.wq.MonitorWechattest; 2 3 import org.apache.http.HttpEntity; 4 import org.apache.http.HttpResponse; 5 import org.apache.http.HttpStatus; 6 import org.apache.http.client.HttpClient; 7 import org.apache.http.client.methods.HttpGet; 8 import org.apache.http.impl.client.DefaultHttpClient; 9 import org.apache.http.util.EntityUtils;10 11 /**12 * 模拟微信浏览器请求13 */14 public class MonitorWechatBrowser {15 public static void main(String[] args) {16 String url = "http://www.where is your need.com";17 String userAgent="Mozilla/5.0 (Linux; U; Android 4.1.2; zh-cn; GT-I9300 Build/JZO54K) "+18 "AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.2.380";19 String html = getHttpClientHtml(url, "UTF-8");20 System.out.println(html);21 }22 23 24 /**25 * 根据URL获得所有的html信息26 */27 public static String getHttpClientHtml(String url,String code,String userAgent) {28 String html = null;29 HttpClient httpClient = new DefaultHttpClient();// 创建httpClient对象30 HttpGet httpget = new HttpGet(url);// 以get方式请求该URL31 httpget.setHeader("User-Agent",userAgent );32 try {33 // 得到responce对象34 HttpResponse responce = httpClient.execute(httpget);35 // 返回码36 int returnCode = responce.getStatusLine().getStatusCode();37 // 是200证明正常 其他就不对38 if (returnCode== HttpStatus.SC_OK) {39 // 获得相应实体40 HttpEntity entity = responce.getEntity();41 if (entity != null) {42 html = new String(EntityUtils.toString(entity));// 获得html源代码43 }44 }45 } catch (Exception e) {46 System.out.println("出现出现异常");47 e.printStackTrace();48 } finally {49 httpClient.getConnectionManager().shutdown();50 }51 return html;52 }53 }
总结
本文只是自我的一个总结,如果对你有所帮助是我的荣幸,文章不妥之处希望指正,大神勿喷,请通过留言或关注微信公众帐号codenewbie来支持小八哥!若有不妥之处,欢迎指点。
转帖请注明本文出自小八哥的博客(http://www.cnblogs.com/Codenewbie),请尊重他人的辛勤劳动成果,谢谢! 本文网址:http://www.shaoqun.com/a/87667.html
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。
浏览器
0
java 伪装浏览器_[Java教程]伪装虽易测试不易之微信浏览器相关推荐
- video.js兼容微信浏览器,(播放.m3u8视频源)解决微信浏览器黑屏问题
video.js兼容微信浏览器,(播放.m3u8视频源)解决微信浏览器黑屏问题 一.问题描述: 在h5做根据视频源直播功能时,在浏览器能打开视频,但是在部分安卓机和苹果机在微信浏览器打开会出现黑屏的状 ...
- Java代码制作ie浏览器_[Java教程]判断IE浏览器代码实例
[Java教程]判断IE浏览器代码实例 0 2015-08-12 01:00:19 判断IE浏览器代码实例: 由于当下浏览器类型众多,并且对同一段代码的解读有时候各有不同,所以要根据浏览器的类型来执行 ...
- java小朋友猜拳_[Java教程]Java猜拳小游戏(剪刀、石头、布)
[Java教程]Java猜拳小游戏(剪刀.石头.布) 0 2015-09-29 08:00:04 import java.util.Random;import java.util.Scanner;pu ...
- java星空屏幕_[Java教程]窗口设置_星空网
窗口设置 2016-04-13 0 /** * 这个是GUI的事例程序: * */ package w160412.wang.main;import java.awt.Color; import ja ...
- java取负数_[Java] 告别“CV 工程师”码出高效!(基础篇)
作为一名资深的 CV 工程师,某天,当我再一次日常看见满屏的报错信息与键盘上已经磨的泛白的 Ctrl.C.V 这三个按键时,我顿悟了. 百度谷歌复制粘贴虽然很香,但是总是依靠前人种树,终会有一天失去乘 ...
- java控制语句练习题_[Java初探实例篇02]__流程控制语句知识相关的实例练习
本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...
- java 文本压缩_[Java基础]Java使用GZIP进行文本压缩
import java.io.IOException; import java.util.zip.GZIPOutputStream; import org.apache.commons.io.outp ...
- java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...
笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...
- java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件
注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...
最新文章
- es6 匿名函数求阶乘
- python——类和对象之__str__方法的使用
- windows命令行无法启动redis_Win10 3分钟简单、快速安装Redis
- linux用户和组、权限常用命令
- 实例讲解策略产品经理工作内容
- 病毒侵袭持续中(HDU-3065)
- 购买原装三星内存注意事项
- 前端组件化的三种方案:
- 树莓派无法安装mariadb_RaspberryPi(树莓派)安装 MariaDB 数据库没有办法远程访问...
- python圈出车牌字符_Python+OpenCV实现车牌字符分割和识别
- 50 行代码,看 Python + OpenCV 玩转实时图像处理!
- latex max下面标注怎么写
- 网络基础知识之报文格式介绍
- 正则表达式 REGEX-Regular Expression
- Leetcode 441. 排列硬币(Python)
- mysql创建新闻发布时间_基于PHP+mysql实现新闻发布系统的开发
- arch使用create_ap创建wifi热点
- alpine linux 简介
- 常见算法:C语言求素数的问题
- 直播RMVB!iPLAYER影音卡全国首发评测
热门文章
- java.security.cert.Certificate:No subject alternative DNS name matching api.exmail.qq.com found.解决方法
- 直播系统具备哪些模块才能完整运用于课堂直播、远程教育等方面?
- Java中对象和类的关系
- 16届本科毕业,从车间到互联网,转行Python工程师,年薪20W+
- 完成机器人创意项目的好处
- bp神经网络预测城市某线路公交车在每一站的日客流量中,输入的特征可以有哪些...
- 微信小程序 顶部搜索框滑动伸缩效果的实现
- 关于微信小程序体验版可以执行某个请求,正式版却执行不了的原因之一
- 湖北科研院所、企业、高校注意!科技重大专项评定条件、申报范围以及奖补金额已出
- synchronized /ˈsɪŋkrənaɪzd/ 关键字