zoukankan      html  css  js  c++  java
  • 伪装虽易测试不易之微信浏览器

    前言

         众所周知,微信项目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方式请求该URL
    31           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),请尊重他人的辛勤劳动成果,谢谢!

  • 相关阅读:
    程序员的自我修养---------一个程序员应该懂点什么
    Duilib的圆环形 进度条 实现(网易云信版本)
    位定义,用于判断是否包含某属性
    Duilib的圆角矩形 抗锯齿优化 弥补RoundRect不足(网易云信borderround版本)
    exe、msi、dos、bat等静默运行,后台运行,不弹窗的解决办法
    删除桌面上有文件但提示项目不存在的方法
    MyBatis插入语句返回主键值
    django学习之Model(二)
    TCP三四次握手
    django学习之Model(一)
  • 原文地址:https://www.cnblogs.com/Codenewbie/p/3643684.html
Copyright © 2011-2022 走看看