我在Mac上使用mitmproxy.我想通过指定网址过滤流量."拦截"功能允许我在注意到过滤网址时暂停通信.我的问题是 - 如何在不暂停通信的情况下过滤流量?我希望它继续更新,而无需推送"a"或"A".
我的系统:
Ubuntu 16.04
Mitmproxy version 3.0.4
Python version 3.5.2
Run Code Online (Sandbox Code Playgroud)
我已从mitmproxy服务器上的docs.mitmproxy.org成功安装。但现在我很困惑如何将日志 mitmproxy 保存到文件?我尝试使用mitmdump --mode transparent --showhost -p 9001 -w output_file
当我打开时output_file,它不是人类可读的。我阅读了文档并尝试了来自 mitmproxy 的 Github 的脚本,但没有任何线索。
有人知道如何将日志 mitmproxy 保存到文件中,但人类可读吗?
谢谢你!
我正在尝试在我的Mac OS X Lion(10.7.5)上设置透明代理,因此我可以使用mitmproxy(拦截来自Android应用程序的SSL流量).我按照mitmproxy文档中的步骤在Mac OS X上使用pf设置端口转发,它们都没有任何错误:
$ sudo sysctl -w net.inet.ip.forwarding=1
Password:
net.inet.ip.forwarding: 0 -> 1
$ sudo pfctl -f pf.conf
No ALTQ support in kernel
ALTQ related functions disabled
$ sudo pfctl -e
No ALTQ support in kernel
ALTQ related functions disabled
pf enabled
Run Code Online (Sandbox Code Playgroud)
但它似乎没有任何影响.当我在浏览器中访问网站时,它会发出直接请求,并且不会通过我指定的端口.这是pf.conf文件(en1是我的wifi):
rdr on en1 inet proto tcp to any port 80 -> 127.0.0.1 port 4500
rdr on en1 inet proto tcp to any port 443 -> 127.0.0.1 …Run Code Online (Sandbox Code Playgroud) 由于微软决定将Xbox Live用户的个人资料页面置于登录墙之后,出于某些愚蠢的原因,我不得不寻找其他方法来确定Xbox Live用户是否在线.
为此,我使用了mitmproxy来确定iOS版Xbox One Smartglass应用程序的请求.似乎对于任何需要身份验证的请求,应用程序使用"XBL3.0 x = {computed auth token}"填充"身份验证"标头字段.
我已想出的是,应用程序通过执行一个POST请求来获取接入令牌https://login.live.com/oauth20_token.srf并传递形式的编码数据,其中所述属性中的一个是用户的"refresh_token".您可以通过使用mitmproxy查看任何这些请求来获取此刷新令牌.
然后,应用程序继续向https://user.auth.xboxlive.com/user/authenticate发送POST请求,传递我无法确定其来源的各种信息.以下是此请求的示例JSON有效内容:
{
"Properties": {
"AuthMethod": "RPS",
"RpsHeader": "<data removed for safety>",
"RpsTicket": "<data removed for safety>",
"SiteName": "user.auth.xboxlive.com"
},
"RelyingParty": "http://auth.xboxlive.com",
"TokenType": "JWT"
}
Run Code Online (Sandbox Code Playgroud)
此请求的响应包含以下JSON:
{
"DisplayClaims": {
"xui": [
{
"uhs": "<data removed for safety>"
}
]
},
"IssueInstant": "2014-08-02T23:44:56.5868148Z",
"NotAfter": "2014-08-16T23:44:56.5868148Z",
"Token": "<data removed for safety>"
}
Run Code Online (Sandbox Code Playgroud)
连接在一起的"uhs"和"token"的内容似乎是"XBL3.0 x ="授权标头中缺少的身份验证令牌.
问题是我对微软的网络堆栈完全不熟悉,经过几个小时的搜索,我无法弄清楚"RpsHeader"和"RpsTicket"的价值来自哪里.
我已经安装了mitmproxy(macOS Mojave)来通过浏览器监控完整的流量。但浏览器停止连接各个网页并给出警告
Did Not Connect: Potential Security Issue
Run Code Online (Sandbox Code Playgroud)
我无法继续。我怎样才能禁用这个块?我怎样才能作为例外继续浏览?
或者是否有其他更容易处理的工具来监控网络流量?
我正试图通过mitmproxy在另一个docker容器中运行来路由docker容器的所有流量.为了mitmproxy工作,我必须更改原始docker容器的网关IP.
这是我想要做的一个例子,但是我想把它限制在docker容器内部.
有关我如何能够做到这一点的任何想法?另外,我想避免在特权模式下运行两个docker容器中的任何一个.
我正在尝试设置 mitmproxy,以便我可以从浏览器发出请求并让它从在http://localhost:3000https://{my-domain}运行的本地服务器返回响应,但我无法获取 https 请求来到达我的本地服务器。我看到来自 mitmproxy 的调试语句。另外,我可以让它适用于 http 流量,但不适用于 https。
我阅读了mitmproxy 插件文档和api 文档 ,我已经安装了证书,并且可以通过代理监控 https。
我正在使用 Mitmproxy:4.0.4 和 Python:3.7.4
这是我的插件(local-redirect.py)以及我如何运行 mitmproxy:
from mitmproxy import ctx
import mitmproxy.http
class LocalRedirect:
def __init__(self):
print('Loaded redirect addon')
def request(self, flow: mitmproxy.http.HTTPFlow):
if 'my-actual-domain-here' in flow.request.pretty_host:
ctx.log.info("pretty host is: %s" % flow.request.pretty_host)
flow.request.host = "localhost"
flow.request.port = 3000
flow.request.scheme = 'http'
addons = [
LocalRedirect()
]
Run Code Online (Sandbox Code Playgroud)
$ mitmdump -s local-redirect.py | grep pretty
Run Code Online (Sandbox Code Playgroud)
当我访问服务器上的 url 时,我看到了日志记录语句,但我的浏览器挂在请求上,并且没有向我的本地服务器发出请求。
from mitmproxy.options import Options
from mitmproxy.proxy.config import ProxyConfig
from mitmproxy.proxy.server import ProxyServer
from mitmproxy.tools.dump import DumpMaster
import threading
import asyncio
import time
class Addon(object):
def __init__(self):
self.num = 1
def request(self, flow):
flow.request.headers["count"] = str(self.num)
def response(self, flow):
self.num = self.num + 1
flow.response.headers["count"] = str(self.num)
print(self.num)
# see source mitmproxy/master.py for details
def loop_in_thread(loop, m):
asyncio.set_event_loop(loop) # This is the key.
m.run_loop(loop.run_forever)
if __name__ == "__main__":
options = Options(listen_host='0.0.0.0', listen_port=8080, http2=True) …Run Code Online (Sandbox Code Playgroud) 当我在命令行中运行mitmproxy命令时,我收到以下错误.
% mitmproxy
Traceback (most recent call last):
File "/usr/local/bin/mitmproxy", line 7, in <module>
from libmproxy.main import mitmproxy
File "/usr/local/lib/python3.5/site-packages/libmproxy/main.py", line 5, in <module>
import thread
ImportError: No module named 'thread'
Run Code Online (Sandbox Code Playgroud)
我google了这个错误,发现了这个stackoverflow问答页面.
pydev importerror:没有名为thread的模块,pydev升级后调试不再有效
根据上面的页面,发生错误是因为模块thread" _thread"在python3中被重命名为" ".
所以,我知道是什么导致了这个错误,但那又是什么?
我现在不知道该怎么做才能摆脱这个错误.
我是python的新手.我刚刚安装了Python并pip进入我的mac OSX,如下所示,因为我想使用mitmproxy.
% which pip
/usr/local/bin/pip
% pip --version
pip 8.1.1 from /usr/local/lib/python3.5/site-packages (python 3.5)
% which python
/usr/bin/python
% which python3
/usr/local/bin/python3
% python --version
Python 2.7.10
% python3 --version
Python …Run Code Online (Sandbox Code Playgroud) 我是 mitmproxy 的新手。但我不知道如何在 python 脚本中使用它。
我想像库一样将 mitmproxy 放入我的 python 脚本中,并且还指定了端口或主机等所有内容,并在我的 python 脚本中对请求或响应进行了一些修改。所以当我像这样开始我的脚本时
python sample.py
Run Code Online (Sandbox Code Playgroud)
一切都将自动运行,而无需像这样从命令行运行 mitmproxy
mitmproxy -s sample.py
Run Code Online (Sandbox Code Playgroud)
谢谢阅读。