【环境配置】初试使用mitmproxy搭建网络代理

初试使用mitmproxy搭建网络代理

##1 参考文章
老版本的很多功能已经不能用了,用新的版本研究了一下
参考文章
https://mitmproxy.org/
http://www.freebuf.com/sectool/76361.html
案例及其源码参考:
https://github.com/mitmproxy/mitmproxy
##2 环境安装
使用ubuntu进行安装工作:

sudo apt-get install python3-dev python3-pip libffi-dev libssl-dev`
sudo pip3 install mitmproxy 

搭建手机代理,ubuntu或者kali的网络配置可参考

http://blog.csdn.net/zhy025907/article/details/54994221

手机端需要导入的证书:

浏览器访问:mitm.it
或者使用自定义证书:http://docs.mitmproxy.org/en/stable/certinstall.html

##3 测试demo

保存所有的response和request报文,一般这两个足够用了,后面再怎么加过滤条件,都可以根据需求做一点调整,注意数据流
flow -> httpflow ->(HTTPRequest,HTTPResponse)
启动并导入修改脚本

生成将报文保存到文件中

####测试脚本 test.py

	def response(flow):
	    ##查看源码获得的response字典
	    response_dic = {
	        'http_version' : None,
	        'status_code' : None,
	        'reason' : None,
	        'headers' : None,
	        'content' : None,
	        'timestamp_start' : None,
	        'timestamp_end' : None,
	        'is_replay' : False
	    }
	    response_dic['http_version'] = flow.response.http_version
	    response_dic['status_code'] = flow.response.status_code
	    response_dic['reason'] = flow.response.reason
	    response_dic['headers'] = flow.response.headers
	    response_dic['content'] = flow.response.content
	    response_dic['timestamp_start'] = flow.response.timestamp_start
	    response_dic['timestamp_end'] = flow.response.timestamp_end
	    response_dic['is_replay'] = flow.response.is_replay
	    ###test
	    print(response_dic['http_version'])
	    ####
	    ####根据需求写正则表达式进行过滤
	    ####
	    print(flow.response.http_version)    
	    for key in response_dic:
	        fin = open("response_list.txt","a")
	        fin.write("handle response %s: %s\n" % (key,response_dic[key]))
	        fin.close()
	        
	def request(flow):
	    ##查看源码获得的request字典
	    request_dic = {
	        'first_line_format' : None,
	        'method' : None,
	        'scheme' : None,
	        'host' : None,
	        'port' : None,
	        'path' : None,
	        'http_version' : None,
	        'headers' : None,
	        'content' : None,
	        'timestamp_start' : None,
	        'timestamp_end' : None,
	    }
	    request_dic['first_line_format'] = flow.request.first_line_format
	    request_dic['method'] = flow.request.method
	    request_dic['scheme'] = flow.request.scheme
	    request_dic['host'] = flow.request.host
	    request_dic['port'] = flow.request.port
	    request_dic['path'] = flow.request.path
	    request_dic['http_version'] = flow.request.http_version
	    request_dic['headers'] = flow.request.headers
	    request_dic['content'] = flow.request.content
	    request_dic['timestamp_start'] = flow.request.timestamp_start
	    request_dic['timestamp_end'] = flow.request.timestamp_end
	    ####
	    ####根据需求写正则表达式进行过滤
	    ####
	    for key in request_dic:
	        fin = open("request_list.txt","a")
	        fin.write("handle request %s : %s\n" % (key,str(request_dic[key]).encode("gbk")))
	        fin.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章