range

If there were you, the world would be just right

需求:抓取一些App的某排行榜的数据并存到我们的数据库中的,这里使用了Mitmproxy(为了能够抓取 Https 请求,需要安装证书)。

首先是安装mitmproxy:

除了python3-dev 应该还用到以下库
apt-get install libffi-dev libssl-dev libxml2-dev libxslt1-dev
pip install mitmproxy

CA证书的安装
当初次运行mitmproxy时,会在 ~ 目录生成 .mitmproxy 文件夹,其中该文件下包含4个文件,就是我们要的证书了

mitmproxy-ca.pem 私钥
mitmproxy-ca-cert.pem 非windows平台使用
mitmproxy-ca-cert.p12 windows上使用
mitmproxy-ca-cert.cer 与mitmproxy-ca-cert.pem相同,android上使用

这里只讲我常用到的2种,其他的如果需要,请自行百度

  • chrome上安装

       设置-高级设置-HTTPS/SSL-管理证书-受信任的根证书颁发机构-导入mitmproxy-ca-cert.pem
  • Android上安装

       将 mitmproxy-ca-cert.cer 放到根目录下
       方法一:设置——WiFi——高级设置——安装证书
       方法二:设置——更多设置——系统安全——从存储设备安装证书
       方法三:选择设置-安全和隐私-从存储设备安装证书(有些手机是可以直接点击安装的)
    

使用代理到目标机器

  • 打开到wifi设置(前提是手机跟代理机是一个网络的哈),点开wifi的后面那个感叹号设置-代理设置,填写代理机ip与端口

此时就可以通过代理机执行 mitmproxy 去监控你的手机请求,并且能抓取到https的请求信息


接下来的可能的是一些骚操作
在我的ubuntu虚拟机中,使用的时候竟然找不到可以复制抓取到的信息,网上找了半天也没找到,官方文档是英文,看不懂。后来瞎摸,发现原来按住shift键,然后就可以通过选择复制内容到粘贴板。
对于post请求的接口,建议可以使用postman工具,可以方便地测试接口。

  1. q是代表返回
  2. 大写C代表清除抓包结果(不知为何我不生效)
  3. 回车可以直接看抓包内容结果
  4. tab键可以在“Request”和“Response”之间切换
  5. 当发现“Response”的信息比较乱的时候,我们可以选择合适的形式来展示,这个时候我们只要输入“m”便可以看到mitmproxy提供的不同展现形式,输入对应高亮的字母便可以看到相应的结果(例如输入“s”便可以以json形式展示)
    关于拦截,我没用到,也是走马观花,就不多说。

关于 Content-Type:application/x-gzip 类型的请求
huawei.png

我这里使用的是php语言,此时想要通过curl 获取gzip请求的数据,我们需要以下的2个操作

  1. 设置下CURLOPT_HTTPHEADER 这个值(header信息),此处的值也就是图中的request信息(最主要是加Content-Type:application/x-gzip)。
  2. 把图中[decoded gzip] Raw ,gzip加密前的参数,进行gzencode加密作为我们curl进行post的参数
  3. 当然对返回的参数我们也是需要进行gzdecode解密

添加新评论 »

在这里输入你的评论...