您的当前位置:首页正文

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

来源:图艺博知识网

环境安装

Mono安装

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

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

接下来如果想要运行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运行

打开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

</figure>

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

记住这边的端口号(8888)

image

</figure>

开始抓吧

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

  2. 打开fiddle

  3. 获取电脑ip

  4. 打开cmd命令行

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

image.png

</figure>

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

  2. 我当前链接的是Xiaomi_E172_5G

image

</figure>

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

</figure>

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

  2. 我的是192.168.31.146:8888

  3. 点击框框处安装证书

image

</figure>

  1. 设置fiddle监听所有请求

  2. 选择all process

image

</figure>

  1. 打开摩拜单车app

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

image

</figure>

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

</figure>

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

</figure>

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

</figure>

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

</figure>

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

</figure>

  1. 参数如下图
image

</figure>

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

</figure>

  1. 那么直接模拟发送吧

  2. 直接看代码吧。。。

  3. import requests

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

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

    }

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

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

image

</figure>

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

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

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

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

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

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

总结

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

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

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

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

reference:

Top