为了方便,本文以 iOS 系统来进行演示。

使用代理

移动操作系统中都有可以设定系统代理的设置,比如在 iOS 中可以通过 Settings->WLAN 看到很多 Networks,通过点击它们后面的 Info 图标来设置代理:

点击 Info 图标

设置代理

这样的话,所有的请求就会先到我们设置的代理服务器,然后才有代理转发给目标服务器。于是我们就有机会在代理服务器上获取到请求的内容。

这里我使用的代理服务器是 Charles,在安装并打开了 Charles 之后,Charles 就已经在后台建立了一个代理服务了。我们可以通过 ifconfig 命令找到自己的局域网 IP,Charles 默认的代理端口是 8888。现在像上面的截图那样,在移动端中进行配置以使用我们的 Charles 代理。

现在你可以在移动端发起一些网络请求,当然最好是 HTTP 的,因为我不清楚 Charles 是否支持其他的协议类型。为了方便,我们可以使用 Safari 打开一段网址,比如 http://news.baidu.com (注意目前只是 HTTP 的,关于如何操作 HTTPS 下面会讲到)。题外话,正如你所见的,百度的最常用的功能就是检查网络服务的连通情况,比如 ping baidu.com,哈。

如果不出意外,那么你会在 Charles 左边栏中看到类似下图的情况:

 

那么说明我们的配置已经工作了,如果你点击它们中的一个,右边的界面中就会显示对应的请求内容:

 

很好,Charles 已经为我们做了很多事,现在我们可以轻松的知道发生了哪些请求以及请求的内容了。

HTTPS

现在我们试一试在 safari 中输入 www.baidu.com,我们知道百度在 www 子域中使用了 HTTPS,并且当发现用户使用的不是 HTTPS 访问此子域时,会自动的 redirect,于是我们到了 https://www.baidu.com

现在再来看看 Charles 中的情况,我们发现 https://www.baidu.com 前面多了一把小锁:

 

并且右边没有给出请求的内容,但是有一条提示 - 对于 SSL 代理需要进行额外的设置。

下面我就简单解释一下为什么对于 HTTPS 而言 Charles 就暂时罢工了。更加具体的内容,可以见我的这篇文章 非对称加密和数字证书

HTTPS 就是 HTTP over TLS,就是在原本的 HTTP 请求之前,客户端和服务器先进行 TLS 握手并建立一个 TLS 链接,然后在此链接之上进行 HTTP 协议的内容。这样就使得我们的明文请求变成加密的。但是这里还是有一个缺陷,就是 TLS 握手阶段是明文的,那么为了解决这种鸡生蛋蛋生鸡的问题,出现了证书 (Certificate) 和证书颁发机构 (Certificate Authority)。

于是在 TLS 握手阶段,多了一个校验证书的步骤,服务端会返回 CA 颁发给其的证书,而客户端对证书的真实性进行校验。由于现在的请求内容已经被加密,所以作为代理的 Charles 无法知道其中的内容,于是为了使得 Charles 可以解析 HTTPS 的内容,我们就必须协助其完成 Man-in-the-middle 攻击,攻击的对象就是我们自己。

攻击的方式很简单,在手机上安装上 Charles 的 CA 证书即可,所谓 CA 证书就是 CA 机构的证书,来证明 CA 机构的真实性,一些权威的 CA 机构的证书都是内置在我们的操作系统中的。现在我们在移动端上安装了 Charles 的 CA 证书之后,Charles 就变成了 CA 了,于是它就可以颁发一个伪造的证书来欺骗移动端中的应用。

如果你不想了解其中的原理的话,要实现这个攻击还是很简单的,Charles 也提供了很多的便利,按照下面的步骤就行了。

我们在 Charles 的菜单中找到 :

 

点击一下就会看到:

 

在移动端的 safari 中输入地址 http://charlesproxy.com/getssl 后,跟着下面的截图来将 Charles 制作的 CA 证书安装到移动端中:

 

 

 

 

 

到目前为止,Charles 制作的 CA 证书已经安装到了你的移动端,如果你希望删除它的话,可以通过 Settings->General->Profile 来找到它并删除,另外如果你不信任 Charles 自制的 CA 证书的话,它也是支持你使用自己的 CA 证书的。

再回到 Charles 进行一些设置,添加一下 SSL 规则:

 

Paste_Image.png

 

现在,再回到移动端,在 safari 中访问 www.baidu.com,然后再看看 Charles 中的结果,你会发现:

 

现在我们已经可以解析来自移动端的 HTTPS 请求了。

暂时就先写这么多吧

分析移动端APP的网络请求抓包的更多相关文章

  1. 使用Charles进行网络请求抓包解析

    使用Charles进行网络请求抓包解析 0. 懒人的福音(⌐■_■)(破解版下载地址,记得安装java库支持) http://pan.baidu.com/s/1c08ksMW 1. 查看电脑的ip地址 ...

  2. 使用Fiddler针对Android手机网络请求抓包

    本文转载自大牛Trinea的博文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何利用Fiddler进行网络数据抓包,比如我们想抓某个应用(微博.微信. ...

  3. Android利用Fiddler进行网络数据抓包【怎么跟踪微信请求】

    主要介绍Android及IPhone手机上如何利用Fiddler进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信请求就可以利用这个方法. Mac 下请使用 Charles 代替 ...

  4. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

  5. Android利用Fiddler进行网络数据抓包,手机抓包工具汇总,使用mono运行filddler

    Fiddler抓包工具 Fiddler抓包工具很好用的,它可以干嘛用呢,举个简单例子,当你浏览网页时,网页中有段视频非常好,但网站又不提供下载,用迅雷下载你又找不到下载地址,这个时候,Fiddler抓 ...

  6. Android利用Fiddler进行网络数据抓包

    最新最准确内容建议直接访问原文:Android利用Fiddler进行网络数据抓包 主要介绍Android及IPhone手机上如何进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信 ...

  7. [转] Android利用Fiddler进行网络数据抓包

    主要介绍Android及IPhone手机上如何利用Fiddler进行网络数据抓包,比如我们想抓某个应用(微博.微信.墨迹天气)的网络通信请求就可以利用这个方法. Mac 下请使用 Charles 代替 ...

  8. MX2怎样利用Fiddler进行网络数据抓包

    首先须要保证PC与手机在同一局域网内或有独立公网IP, 下面以在同一局域网为例(保证手机能訪问到这台PC机器): 1. PC端配置 1). 安装Fiddler 2). 开启Fiddler下面功能:   ...

  9. Selenium爬虫实践(踩坑记录)之ajax请求抓包、浏览器退出

    上一篇: 使用Selenium截取网页上的图片 前言 最近在搞公司内部系统,累的一批,需要从另一个内部系统导出数据存到数据库做分析,有大量的数据采集工作,又没办法去直接拿到那个系统的接口,太难了,只能 ...

随机推荐

  1. union和union all用法

    工作中,遇到同事之前写的oracle语句中有一个union all,并且很多地方都用到了.便在网上查了一下用法,以下是自己的理解. union  (联合)将两个或者多个结果集合并. 在使用时,两个结果 ...

  2. Zookeeper(一)从抽屉算法到Quorum (NRW)算法

    一.抽屉算法 抽屉算法,又名鸽巢原理,它是德国数学家狄利克雷首先明确的提出来并用以证明一些数论中的问题,因此,也称为狄利克雷原则.它是组合数学中一个重要的原理. 具体算法讲的是: 第一抽屉算法: 如果 ...

  3. 【转】Linux常用命令大全

    原文地址:http://www.php100.com/html/webkaifa/Linux/2009/1106/3485.html 系统信息 arch 显示机器的处理器架构(1) uname -m ...

  4. Genymotion的安装与eclipse配置教程

    第一部分安装Genymotion和VirtualBox虚拟机 1,Genymotion模拟器可以在官网下载,但是下载前需要注册账号,账号注册后登陆,点击Download. 2,选择第一个with Vi ...

  5. Consul Windows 安装

    下载文件https://www.consul.io/downloads.html, 解压完毕后只有一个consul文件 consul 启动一个 Agent consul agent -server - ...

  6. 【转】SVN提交一般原则

    写在前面: 最近, 跳槽了. 来到了一家感觉QIAN景不错的创业公司. 由于是开始, 规模比较小, SVN的管理工作, 也有我来承担. 今天发生了一些相当不愉快的事情, 就是因为一个同事, ①签入代码 ...

  7. J2EE基础之JSP

    J2EE基础之JSP 1.JSP简介 JSP是JavaServer的缩写,是由Sun Microsystems公司倡导.许多公司参与一起建立的一种动态网页技术标准.在HTML文件中加入Java程序代码 ...

  8. poj1006 / hdu1370 Biorhythms (中国剩余定理)

    Biorhythms 题意:读入p,e,i,d 4个整数,已知(n+d)%23=p;   (n+d)%28=e;   (n+d)%33=i ,求n .        (题在文末) 知识点:中国剩余定理 ...

  9. JSONResult 封装

    import java.util.List; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson. ...

  10. Mysql优化系列(2)--通用化操作梳理

    前面有两篇文章详细介绍了mysql优化举措:Mysql优化系列(0)--总结性梳理Mysql优化系列(1)--Innodb引擎下mysql自身配置优化 下面分类罗列下Mysql性能优化的一些技巧,熟练 ...