<1> 使用“青花瓷”
- 手机和拦截的电脑要在同一个局域网中;
- 将手机上网的代理朊务器设置为电脑的IP,端口8888
- 看上部列表左侧可以知道请求方法类型,GET & POST
- 在下面点Response可以看到朊务器的响应结果,通常图片都是异步加载,一个Response对应一个图像
- 点下面的Requset可以看到发送给朊务器的请求
日常跟踪时,可以根据Response判断哪些请求是我们需要的,然后夊制对应的URL即可。
青花瓷只是跟踪数据,是一个抓包工具,上能依赖青花瓷去开发完整的应用程序,在日常工作中,这些JSON都是由公司后端程序员提供的。
<2>使用 HTTPScoop
- 首先确保你的机器安装了Java的SDK,没有可以去官网下载。
- 安装教程:http://www.7do.net/resources-2728-1-1.html
- 保证 iphone/android 和电脑在同一个网段2. 在 iphone Setting 设置电脑的 ip 地址 这里端口是随意写的 不过要保证>1024
- 启动 paros(首先你要把它下载下来,这个是个文件,使用它很简单,只需点击paros文件里面的可执行文件 run ,过几秒就会弹出下面界面了)我把paros放在了:https://github.com/ChengHuiHe/paros
- 点击代理 ,输入和 iphone 对应的 ip 和端口
- 然后运行 iphone 上程序就可以看到数据包了
数据分析:GET 协议分析
把GET 请求的数据复制下来:
“http://wbapp.mobile.sina.cn/interface/ninesquares/getsearchicon.php?udid=e4:ce:8f:7c:9c:41&uid=&wm=b207&posid=pos4f9ba29064868&from=6030093012”
- 这就是网址,可以直接放在浏览器中显示 也可以使用 ASI 直接获取
POST 协议分析
对于 POST 比较复杂一些。里面的参数需要你使用程序参数才能使用,比如http://api.maopao.com:80/maopao/v2.0/postlocationdeviceid=1dfe9be1f679d04ebcec86cf74d41813bcbc0daf&geolat=40.0340&geolong=116.3441
类似代码如下:
- (void) foo {
NSURL *url = [NSURLURLWithString:@"http://api.maopao.com:80/maopao/v2.0/postlocation"];
ASIFormDataRequest r = [ASIFormDataRequestrequestWithURL:url];
//deviceid=1dfe9be1f679d04ebcec86cf74d41813bcbc0daf&geolat=40.0340&geolong=116.3441 [rsetPostValue:@"1dfe9be1f679d04ebcec86cf74d41813bcbc0daf"forKey:@"deviceid"];
[rsetPostValue:@"40.0340" forKey:@"geolat"]; [r setPostValue:@"116.3441" forKey:@"geolong"]; [r setDelegate:self]; [r startAsynchronous];
}
对于图片上传使用
- (void)setData:(id)data withFileName:(NSString)fileName andContentType:(NSString *)contentTypeforKey:(NSString *)key
注意如果有请求头的办法:诸如下面这些就是请求头:
POST http://api.maopao.com:80/maopao/v2.0/postlocation HTTP/1.1Host:
api.maopao.com:80UserAgent:iPhone:6.0.1/maopaopaipai:1.3.6/source:mppp_I_app/deviceinfo:iPhone3,1Proxy-
Connection: keep-alive
Content-Type: application/x-www-form-urlencodedContent-Length: 81Accept-Language: zh-cnAccept: /
Connection: keep-aliveUser-Agent: mppp/1.3.6 CFNetwork/609 Darwin/13.0.0 Paros/3.2.13
给 ASI 设置请求头 - 代码如下:
r.requestHeaders = [NSMutableDictionarydictionaryWithObjectsAndKeys:
@"api.maopao.com:80",
@"Host",@"iPhone:6.0.1/maopaopaipai:1.3.6/source:mppp_I_app/deviceinfo:iPhone3,1",
@"UserAgent",
@"mppp/1.3.6 CFNetwork/609 Darwin/13.0.0Paros/3.2.13", @"User-Agent",
nil];