BaseProxy:异步http/https中间人 (2)

成员函数

def set_headers(self,headers) - headers:类型为dict - 用于设置头部 def get_header(self,key): - key:类型为str - 用于获取指定头部,返回str def get_headers(self): - 用于获取整个头部,返回为dict def set_header(self,key,value): - 头部 key,类型str - 头部 value,类型str - 用于设置头信息 def get_body_data(self): - 获取响应体内容,返回类型为bytes def set_body_data(self,body): - 设置响应体内容,body类型为bytes def get_body_str(self,decoding=None): - decoding:编码,默认为None,内部采用chardet探测 - 返回响应体,类型为str.如果无法解码,返回None def set_body_str(self,body_str,encoding=None): - encoding:编码,默认为None,内部采用chardet探测 - 设置响应体,body_str类型为str 注册拦截插件

将拦截类完成后,需要注册到baseproxy中,需要调用AsyncMitmProxy的register函数.示例如下:

from baseproxy.proxy import ReqIntercept, RspIntercept, AsyncMitmProxy __author__ = 'qiye' __date__ = '2018/6/21 23:35' class DebugInterceptor(ReqIntercept, RspIntercept): def deal_request(self, request): return request def deal_response(self, response): return response if __name__=="__main__": baseproxy = AsyncMitmProxy(https=False) baseproxy.register(DebugInterceptor) baseproxy.serve_forever() 小例子

将淘宝中的所有产品图片换成我公众号的二维码.代码在test文件夹的replace_image.py中,内容如下:

from baseproxy.proxy import RspIntercept, AsyncMitmProxy class ImageInterceptor( RspIntercept): def deal_response(self, response): if response.get_header("Content-Type") and 'image' in response.get_header("Content-Type"): with open("../img/qiye2.jpg",'rb') as f: response.set_body_data(f.read()) return response if __name__ == "__main__": baseproxy = AsyncMitmProxy(https=True) baseproxy.register(ImageInterceptor) baseproxy.serve_forever()

效果如下:

BaseProxy:异步http/https中间人

参考项目

MitmProxy
proxy2

福利大放送

关注公众号:七夜安全博客

回复【1】:领取 Python数据分析 教程大礼包

回复【2】:领取 Python Flask 全套教程

回复【3】:领取 某学院 机器学习 教程

回复【4】:领取 爬虫 教程

知识星球已经50人了,随着人数的增多,价格之后会上涨,越早关注越多优惠。星球的福利有很多:

比如上面的教程,已经提前在知识星球中分享

可以发表一些问题,大家一块解决

我之后写的电子书,录制的教学视频,对于知识星球的朋友都是优惠的(基本上免费)

一些节假日会给大家发个红包或者赠书

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpgdfp.html