[转]Mac下Fiddler的安装、配置与使用

环境安装

Mono安装

首先,Mac下需要使用.Net编译后的程序,需要用到跨平台的方案Mono(现阶段微软已推出跨平台的方案.Net Core,不过暂时只支持控制台程序)。安装程序可以从http://www.mono-project.com/download/#download-mac�地址下载。

安装完后,在Terminal里执行以下命令:

/Library/Frameworks/Mono.framework/Versions//bin/mozroots --import --sync

此步是为了从Mozilla LXR上下载所有受信任的root证书,存于Mono的证书库里。root证书能用于请求https地址。

接下来如果想要运行Fiddler,还需要把Mono加入到环境变量中。编辑.bash_profile文件:

sudo vi ~/.bash_profile

加入文本:

export MONO_HOME=/Library/Frameworks/Mono.framework/Versions/5.0.1
export PATH=$PATH:$MONO_HOME/bin

保存后重新打开Terminal,Mono环境已装好。

Fiddler的安装

从Fiddler官网https://www.telerik.com/download/fiddler下载fiddler-mac.zip的压缩包。解压到非中文字符的路径下。

Fiddler运行

打开Terminal,进入到刚才解压的Fiddler路径,执行命令运行:

sudo mono Fiddler.exe

由于64位不支持图形界面,需设定为32位:

sudo mono --arch=32 Fiddler.exe

是不是跟Windows下的界面一样好看?

image.png

一些问题

现在Fiddler在Mac下还只是Beta1版,所以会有很多问题,比如:

  • 界面拉伸或缩小,视图不会自动重新渲染
  • 有些HTTPS站点无法访问
  • TLS 1.1和1.2无法支持
  • SSL/TLS的握手不正常
  • 软件无法自动更新
  • 只有60天的使用期限,到期后需要重新更新

使用

  1. 点击tool->telerik fiddler options...
image

2. 点击connections,然后勾选 “allow remote computers to connect”

记住这边的端口号(8888)

image

开始抓吧

  1. 首先确保电脑和手机连在同一个WiFi下面

  2. 打开fiddle

  3. 获取电脑ip

  4. 打开cmd命令行

  5. 输入ifconfig,如图所示,192.168.31.146就是我的ip地址

image.png

  1. 打开手机WiFi设置,找到你当前链接的WiFi

  2. 我当前链接的是Xiaomi_E172_5G

image

  1. 设置代理服务器为你电脑的ip,端口号为上面设置的端口号(默认为8888)
image

  1. 安装https证书

  2. 在手机浏览器上打开 你电脑ip:你设置的端口号

  3. 我的是192.168.31.146:8888

  4. 点击框框处安装证书

image

  1. 设置fiddle监听所有请求

  2. 选择all process

image

  1. 打开摩拜单车app

  2. 然后你会看到定位的时候一辆车也没有。。。

image

  1. 打开个人详情页还提示“抱歉,服务暂不可用。。。”
image

  1. 这是因为摩拜有防抓取限制(我猜是检测,如果有使用代理的话,直接让你用不了。。。)
  2. 那这样的话我们就没办法抓到么???
  3. 因为我之前还用过摩拜的小程序,所以我们抓抓微信小程序试试看
  4. 打开摩拜单车的小程序
  5. 我们看到已经定位了。。,并且把附件的单车都显示出来了
image

  1. 我们可以多移动我们的位置,然后等有把附近的车显示出来
  2. 可以看到fiddle上面已经有好多请求了
image

  1. 那么如何找到摩拜的那一条呢。。。
  2. 很简单,看单词就好。。。
image

  1. mobike-api。。。这很明显就是我们要找的请求
  2. 请求头如下图所示,方法是post
image

  1. 参数如下图
image

  1. 返回值因为我看到是json的格式了,所以直接以json的格式看。
image

  1. 那么直接模拟发送吧

  2. 直接看代码吧。。。

  3. import requests

    如果headers里面没有referer则会访问异常

    referer表示上一个页面是什么。

    headers = {
    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Mobile/14E304 MicroMessenger/6.5.7 NetType/WIFI Language/zh_CN',
    'Content-Type': 'application/x-www-form-urlencoded',
    'Referer': 'https://servicewechat.com/wx80f809371ae33eda/23/page-frame.html',
    }
    url = 'https://mwx.mobike.com/mobike-api/rent/nearbyBikesInfo.do'
    data = {
    'longitude':'121.1883',# 经度
    'latitude':'31.05147', # 纬度
    'citycode':'021',
    'errMsg':'getMapCenterLocation:ok'

    }

    下面必须加上verify=False,表示不验证ssl,要不然一直报错。。。

    z = requests.post(url,data=data,headers=headers,verify=False)

image

可以看到我们已经抓取了需要的数据,那么怎么抓取整个上海的摩拜单车情况呢??

只要获取上海的所有经纬度,然后替换上面data中的经度及纬度就可以了。。。

那么怎么获取上海的所有经纬度。。。

我发现挺难的。。。(有人拿到了请告诉我一声,谢谢)

然后我用了高德地图api的搜索功能,搜索了上海的所有小区的经纬度。一共898个,

然后查了这898个小区附件的摩拜单车情况....

总结

看完本编文章,你应该学会“如何抓取手机app的包”

其实挺简单的(就是你手机通过电脑上网,然后这台电脑上所有的请求都被抓下来了,那么你手机的请求自然也被抓下来了)

大家还可以试着抓抓知乎客户端的包。。。

更多fiddle的使用技巧,请善用百度、Google

最后所有代码在https://github.com/kimg1234/pachong/blob/master/mobai.py

reference:

  • https://www.jianshu.com/p/57ec761cb5a3
  • https://zhuanlan.zhihu.com/p/26785815

你可能感兴趣的:([转]Mac下Fiddler的安装、配置与使用)