如何发现未记录的mimdump内联脚本参数?

时间:2015-04-18 19:27:58

标签: mitmproxy

我正在尝试使用内联脚本和mitmdump来解析请求和响应头的不同元素。某些功能没有记录。我将发布回答这个问题的经验教训。

2 个答案:

答案 0 :(得分:2)

为什么不使用官方文档?

http://mitmproxy.org/doc/scripting/inlinescripts.html

  

规范API文档是代码,您可以在本地或我们的GitHub仓库中浏览。您可以使用pydoc(默认情况下与Python一起安装)查看API文档,如下所示:

pydoc libmproxy.protocol.http.HTTPRequest

提供更好的输出。

答案 1 :(得分:0)

在内联脚本中使用dir()会显示可用于解析的所有可变数据。

def response(context, flow):
       print dir(flow)
       print dir(flow.request)
for cookie in flow.response.headers["Set-Cookie"]:
            print "%s:\t%s" % (flow.request.host, cookie)

dir(流量)的结果

['__class__', '__delattr__', '__dict__', '__doc__', '__eq__', '__format__', '__getattribute__', '__hash__', 
'__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', 
'__str__', '__subclasshook__', '__weakref__', '_backup', '_stateobject_attributes', 
'_stateobject_long_attributes', 'accept_intercept', 'backup', 'client_conn', 'copy', 'error', 'from_state', 
'get_state', 'id', 'intercept', 'intercepting', 'kill', 'live', 'load_state', 'match', 'modified', 'replace', 
'reply', 'request', 'response', 'revert', 'server_conn', 'type']

dir(flow.request)的结果

['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__',
'__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', 
'__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_assemble_first_line', '_assemble_head', 
'_assemble_headers', '_stateobject_attributes', '_stateobject_long_attributes', 'anticache', 'anticomp', 
'assemble', 'constrain_encoding', 'content', 'copy', 'decode', 'encode', 'form_in', 'form_out', 'from_state', 
'from_stream', 'get_cookies', 'get_decoded_content', 'get_form_urlencoded', 'get_path_components', 
'get_query', 'get_state', 'headers', 'host', 'httpversion', 'is_replay', 'load_state', 'method', 'path', 
'port', 'pretty_host', 'pretty_url', 'replace', 'scheme', 'set_form_urlencoded', 'set_path_components', 
'set_query', 'size', 'stickyauth', 'stickycookie', 'timestamp_end', 'timestamp_start', 'update_host_header', 
'url']

dir的结果(flow.response)

['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', 
'__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', 
'__str__', '__subclasshook__', '__weakref__', '_assemble_first_line', '_assemble_head', '_assemble_headers', 
'_refresh_cookie', '_stateobject_attributes', '_stateobject_long_attributes', 'assemble', 'code', 'content', 
'copy', 'decode', 'encode', 'from_state', 'from_stream', 'get_cookies', 'get_decoded_content', 'get_state', 
'headers', 'httpversion', 'is_replay', 'load_state', 'msg', 'refresh', 'replace', 'size', 'stream', 
'timestamp_end', 'timestamp_start']