mitmproxy抓取pc接口及数据处理

喜你入骨 提交于 2020-01-26 01:17:55

前边已经写好了一个请求对象和返回对象,但是大家是否发现,即使我们通过一系列处理之后,好像还是没有得到我们想要的,我们现在仅仅是说吧这个东西运用于监听或者说抓包,也就是在我们的测试过程中,而且测试过程中更多的是用于我们内部的http或者说其他移动端,现在想测试我们web端的接口行不行呢,答案是,当然不行的,因为没有设置代理,那么怎么在web端设置代理呢,这里就需要简单进行一个设置

在这里插入图片描述

其实这里就可以抓取到数据了,但是肯定告诉你不安全,安装个证书即可,浏览器mitm.it,安装windows证书,一顿下一步,密码为空,然后就会出现下图,操作浏览器,例如百度

在这里插入图片描述
在这里插入图片描述
各种八卦出现,抓取pc接口成功,这时候整体就已经能都串联起来了,不过还是存在一定的问题,如果测接口时,我就想抓某个url的地址,因为我在测接口或者调试的时候不可能只有url,特别是浏览器会有很多其他的东西存在,咋整?

可见,上边我们已经拿到了request的url,那么我们可不可以使用与response的url呢,也就是说我下载拿request的url无外乎我们调试的时候request——url下的响应数据,更新代码

from mitmproxy import http
class GetData(object):
    def request(self,flow):
        request_data = flow.request
        self.request_url = request_data.url
        request_pr = request_data.query
        request_form = request_data.urlencoded_form
        print('url------------------>',self.request_url)
        print('pr--------------->',request_pr)
        print('form---------------->',request_form)

    def response(self,flow):
        if 'meituan' in self.request_url:
            response_data = flow.response
            response_header = response_data.headers
            content_type = response_header['Content-Type']
            if 'image' in content_type:
                print('这里返回的是图片')
            elif 'application/json' in content_type:
                print('content_type---------------->', content_type)
                print('code------------>', response_data.status_code)
                print('res_data-------------------->', response_data.text)
            else:
                print('格式非预期')


但是会发现,更改了代码后无法打印我们的数据信息
在这里插入图片描述

在我们的proxy运行机制中,如果是我们的类方法去运行,有一个条件,这时候你去运行会变成这个样子addons = [GetData()]把GetData拿过来实例化

在这里插入图片描述
这里就只会打印美团的数据,不会打印其他,完成了数据的过滤

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!