我在之前一篇博客《网络抓包工具Charles的介绍与使用》中简单介绍了Charles的安装破解,以及进行简单的Charles抓包配置的介绍。今天我们来详细介绍下使用Charles进行http抓包,关于https抓包,我将会在另一篇博客中介绍。

(1)http抓包的配置,请参考《网络抓包工具Charles的介绍与使用》这篇博客。

(2)为了使抓包的结果清晰,便于调试,我写了一个简单的网络请求,通过点击按钮请求查询号码归属地,代码如下:

#import "ViewController.h"@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];}- (IBAction)networkRequestPressed:(id)sender {NSString *urlAsString = [@"http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=18888888888&userId=" stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];NSURL *url = [NSURL URLWithString:urlAsString];NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];[urlRequest setTimeoutInterval:30];[urlRequest setHTTPMethod:@"GET"];//推荐使用这种请求方法;NSURLSession *session = [NSURLSession sharedSession];__block  NSString *result = @"";NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:urlRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {if (!error) {//没有错误,返回正确;result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];NSLog(@"返回正确:%@",result);}else{//出现错误;NSLog(@"错误信息:%@",error);}}];[dataTask resume];}@end

(3)点击按钮进行网络请求后,返回结果如下:

(4)下面开始进行抓包(如何配置请参考:网络抓包工具Charles的介绍与使用)。注意哦:需要在真机上测试!进行网络请求后,Charles输出如下:

我现在对上面的http抓包结果进行详解。

【1】

左侧是显示结构:Structure是树状结构显示,Sequence是水平结构显示。两者基本类似,我以树状结构来进行介绍。左侧的树状结构是我进行网络请求的url链接,每一个层级表示了以“/”隔开的子域名。通过上述的代码也可以看到我GET请求的url链接是:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx/getMobileCodeInfo?mobileCode=18888888888&userId=    ;与树状结构中显示的一致。

【2】

右侧是详情页,其中第一个Overview是概览。我对一些字段进行介绍:

(1)URL:我进行网络请求的链接;

(2)Status:当前状态,complete表示请求完成;

(3)Responce Code:返回码。不同的接口,不同的请求结果,返回码都不同;

(4)Protocol:使用的协议;

(5)Method:请求方式,如GET请求,POST请求等;

(6)Kept Alive:判断当前是否正在链接(活跃);

(7)Content-Type:发送的内容类型,如这里用的是XML文本,以UTF8的方式发送;

(8)Client Address:客户端的IP地址;

(9)Remote Address:远程服务器的IP;

Timing:

(10)Request Start Time:请求开始的时间;

(11)Request End Time:请求结束的时间;

(12)Response Start Time:返回开始的时间;

(13)Response End Time:返回结束的时间;

Size:

(14)Request Header :请求的头部大小;

(15)Request Header:返回的头部大小;

(16)Request : 请求发送的大小;

(17)Response:返回数据的大小;

(18)Total:所有数据大小;

(19)Request Compression :请求压缩;

(20)Response Compression: 返回压缩;

【3】

第二个页面是关于请求发送的。下面的Headers,Query String,Raw。

(1)Headers:发送请求的头部信息;

(2)Query String:发送参数列表;

(3)Raw:发送的原生数据,包括了头部和参数;

【4】

右侧的Response的是关于所有返回信息的。

(1)Headers:是返回的头部信息;

(2)Text:返回信息(除去头部)后的文本;

(3)Hex:返回信息的16进制表示;

(4)XML:我返回的数据是XML。如果你返回的是JSON,这里就会显示JSON;

(5)XML Text:如果你返回JSON,这里会显示JSON Text;

(6)Raw:返回的所有原生数据,包括头部;

【5】

里面是发送数据的一些简要信息。

【6】

是一些简要信息的图表表示。

现在我对Charles顶部的一些常用的工具栏做一个介绍:

(1)New Session:新建一个会话。也就是在一个新的Charles界面查看网络情况;

(2)Open Session:打开一个之前保存的会话;

(3)Close the current Session:关闭当前的会话;

(4)Save the current Session:保存当前的会话;

(5)Clear the current Session:清空当前的会话(比较方便,常用);

(6)Find Text in the current session:相当于查找功能;

总结,通过Charles来抓包网络请求,让我们对项目的流程有一个大概的认识,这对于入手一个复杂的项目很有帮助。这也有利于我们测试网络情况,调试程序,监测性能。同时,网络抓包也不仅限于iOS的开发,也可以用在其他的开发领域中。当然,可能某些App存在所谓的后门,窃取你手机上的隐私,你是不是也可以通过抓包来判断呢?我将在下一篇博客中介绍如何进行Charles的https抓包。

github主页:https://github.com/chenyufeng1991  。欢迎大家访问!

最近极客学院Wiki正在进行IT职业技能图谱的制定,我主要负责iOS方向,大家感兴趣的可以一起参加,有问题或者修改可以直接给我发issues或者pull request。https://github.com/chenyufeng1991/skillmap  。

iOS开发——使用Charles进行http网络抓包详解相关推荐

  1. iOS开发——使用Charles进行https网络抓包详解

    我在前面两篇博客中<网络抓包工具Charles的介绍与使用><iOS开发--使用Charles进行http网络抓包详解>对Charles的http抓包进行了详细的讲解.今天我们 ...

  2. wireshark网络抓包详解

    一.简介 Wireshark是一款非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息. 为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包. wir ...

  3. iOS 开发 Certificate和Code Signing--证书与签名--详解

    iOS 开发 Certificate和Code Signing–证书与签名–详解 1.Certificate-证书 iOS 开发 证书–根证书/申请证书/开发(发布)证书–详解 2.Code Sign ...

  4. Mac下使用Fiddler抓包详解(个人使用过程)

    Mac下使用Fiddler抓包详解(个人使用过程) 前言 1.VMware Fusion for Mac 2.win7镜像 3.windows版fiddler mac使用Windows fiddler ...

  5. 使用Charles和iPhone进行微信小程序抓包详解

    基于工作原因,需要对一款微信小程序进行测试.本次任务是纯黑盒方式,所以只有通过抓包的方式找到接口及参数列表,再逐一进行功能和性能测试. 一.使用工具 网络抓包工具:Charles 设备:iPhone6 ...

  6. 【iOS 开发】Objective-C 入门 Xcode 环境详解

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/38424965 一. Xcode 环境安装 与 工程创建 1. ...

  7. IOS 开发环境,证书和授权文件等详解

    (转自:http://blog.csdn.net/gtncwy/article/details/8617788) 一.成员介绍 1.    Certification(证书) 证书是对电脑开发资格的认 ...

  8. Charles抓包详解Xmind版(或存项目使用差异)

    本详解以所在项目实战为主 并非八股式 旨在突出工作中Charles使用核心 去掉不常用部分 目前只包含手机端 Web端后期会继续更新 如有任何疑惑 欢迎在评论区留言 !!

  9. Android使用HttpCanary或Fiddler工具抓包详解

    最近项目出现一些问题需要在抓包查看请求数据是否在发送途中发送了改变想到用Fiddler进行抓包 但是在学习使用的时候发现 还有一款Android抓包工具在手机端就可以使用无需其他设置,本文将详细讲述两 ...

最新文章

  1. 在线作图|2分钟绘制一张环状热图
  2. 一文读懂比特币现金(BCH)
  3. Linux下软件安装方法汇总
  4. UI产品设计流程中的14个要点
  5. 高光荣教授逝世:他是新中国首位MIT计算机博士,开创数据流体系结构
  6. Android中No resource found that matches android:TextAppearance.Material.Widget.Button.Inverse问题
  7. 事务与分布式事务原理与实现
  8. matlab简易编程,MATLAB简单编程
  9. python表单处理_python flask 表单处理Flask-WTF
  10. OJ1159: 最大的两个数(指针专题)(C语言)
  11. access 此程序未正确安装_SQLite简介与安装
  12. Jquery Dialog 详解(正在学习jquery,详解转载)
  13. 招投标系统简介 招投标系统源码 java招投标系统 招投标系统功能设计
  14. vue+element+springboot前后端分离项目整合pageoffice实现在线编辑Word和Excel跟签章等
  15. 天龙八部怀旧服服务器维护,新天龙八部怀旧服游戏2月4日全服更新维护公告
  16. 振荡中医学习感悟——姥姥的咳嗽
  17. 3DsMAX期末紧急复习
  18. unable to connect to 192.168.1.110:5555 解决办法
  19. centos 使用nslookup命令问题
  20. 相亲时, 如何向 TA 解释区块链? | 春哥区块链创业记

热门文章

  1. 如何编制试算平衡表_试算平衡表的编制步骤是什么?
  2. 利用python爬虫可视化分析当当网的图书数据
  3. 中国大学mooc 实用Python程序设计练习题
  4. [编程题]走斜线Java
  5. 【商业分析 01】商业分析网站汇总
  6. 2021万向区块链黑客马拉松圆满收官
  7. Kangle一键升级ENT商业版本
  8. 【Android楚君】【Python洪君】生成姓名: 根据性别、字数随机生成好听的名字
  9. 微型计算机系统实验总结(学习性实验:IO地址译码,可编程并行接口8255,交通灯控制实验 + 自主设计实验:汽车信号灯控制系统,电风扇控制器,洗衣机控制系统,霓虹灯,电梯控制系统)
  10. 基于STM32F103设计的智能门锁(支持多种开锁解锁方式)