前边已经写好了一个请求对象和返回对象,但是大家是否发现,即使我们通过一系列处理之后,好像还是没有得到我们想要的,我们现在仅仅是说吧这个东西运用于监听或者说抓包,也就是在我们的测试过程中,而且测试过程中更多的是用于我们内部的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拿过来实例化
这里就只会打印美团的数据,不会打印其他,完成了数据的过滤
来源:CSDN
作者:Millet。
链接:https://blog.csdn.net/enemy_sprites/article/details/104055197