博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
伪装虽易测试不易之微信浏览器
阅读量:4972 次
发布时间:2019-06-12

本文共 3076 字,大约阅读时间需要 10 分钟。

前言

     众所周知,微信项目html5界面的开发时间会相对较长(为什么这么说就不解释了),以及在微信浏览器内会出现一些无法在web端检测出的问题,笔者有了模拟微信浏览器的想法,google之后,发现有方法来伪装浏览器,也就是利用浏览器的user Agent,(每款浏览器都有自己不同的user Agent ,而且通过user Agent可以判断浏
览器版本、所用的
操作系统等参数,当用户通过浏览器向服务器发起请求时,请求头(header)中就会包含
User Agent,服务器端可以获取该值)。

插件下载:

笔者以火狐为例来详解如何模拟微信浏览器:
首先,下载火狐浏览器的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 进行测试:
                              
自己比较一下 原来的样子,如图算是添加成功了。
 

模拟微信浏览器请求

这是笔者之前所用的方法,基本作用跟前文差不多,希望对各位有所帮助
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),请尊重他人的辛勤劳动成果,谢谢!

转载于:https://www.cnblogs.com/Codenewbie/p/3643684.html

你可能感兴趣的文章
传奇版本中利用NPC迅速给人物加血脚本制作
查看>>
ajax 实现修改功能
查看>>
Android drawable微技巧,你所不知道的drawable的那些细节
查看>>
两栏自适应布局延展到多栏自适应布局
查看>>
[Codeforces Round #162 (Div. 2)]C. Escape from Stones
查看>>
(最小路径覆盖) poj 2446
查看>>
Snapde和Excel、PowerPivot、WPS打开超大CSV文件性能比较
查看>>
MapReduce:超大机群上的简单数据处理
查看>>
深度图像特征在推荐和广告中的应用(一)
查看>>
环境搭建及创建对象方式及赋值(注入)
查看>>
【面向对象设计与构造】第四次博客作业
查看>>
Silverlight WCF RIA服务(四)如何添加和移除RIA Services Link
查看>>
C++对文件进行加密解密
查看>>
centos6.5安装apache2
查看>>
My code review
查看>>
Daily Scrum 2012/11/01
查看>>
Redis HyperLogLog
查看>>
容器,组件,面板
查看>>
常见HTML的!DOCTYPE声明
查看>>
※剑指offer系列37:求1+2+3……+n
查看>>