https://www.txthinking.com/talks/
Updated at: 2023-05-21
因为很多 App 可以选择绕过系统代理。具体可以查看这边文章。
几年前我们单独出了一个 mitmproxy helper 应用,售价 $9.9。
现在 Brook 支持非常强大的脚本,可以通过脚本非常容易的实现与上面这个 App 相同的功能。帮你节省了 $9.9。
其实 Brook 也可以不依赖任何其他软件,自己单独进行抓包和修改包。可以查看这篇文章。
具体可以查看这边文章
mitmproxy -m socks5 --rawtcp --listen-port 8080
这会创建一个 socks5,端口是 8080
因为 mitmproxy 只支持 HTTP/1.1 和 HTTP/2 抓包;不支持 UDP 当然也不支持 HTTP/3。
所以我们要用脚本来阻断 domainaddress 的 UDP,以及让 ipaddress 的 UDP 直连或者阻断 UDP 两种选择,或者跳过一些不能抓的地址,实战时需要根据具体情况具体分析。
如下配置,然后连接 Brook
脚本:
text := import("text")
f := func(){
if in_dnsquery {
// block secure dns
if in_dnsquery.domain == "dns.google" {
return {block: true}
}
// block ipv6, if your server or local does not support ipv6
if in_dnsquery.type == "AAAA" {
return {block: true}
}
}
if in_address {
m := in_address
if m.ipaddress {
// block secure dns
if m.ipaddress == "8.8.8.8:853" || m.ipaddress == "8.8.8.8:443" || m.ipaddress == "8.8.4.4:853" || m.ipaddress == "8.8.4.4:443" || m.ipaddress == "[2001:4860:4860::8888]:853" || m.ipaddress == "[2001:4860:4860::8888]:443" || m.ipaddress == "[2001:4860:4860::8844]:853" || m.ipaddress == "[2001:4860:4860::8844]:443" {
return { "block": true }
}
// block or bypass udp
if m.network == "udp" {
return { bypass: true } // or { block : true }
}
}
if m.domainaddress {
// block secure dns
if text.has_prefix(m.domainaddress, "dns.google:") {
return { "block": true }
}
// block udp
if m.network == "udp" {
return { block: true }
}
}
}
}
out := f()
这个脚本阻断了安全 DNS,阻断了 IPv6 AAAA,防止 mitmproxy 拿不到域名,阻断了 domainaddress 的 UDP,让 ipaddress 的 UDP 直连了。脚本地址在这里。
手机先访问 http://mitm.it
来安装 mitmproxy 的 CA 证书
然后打开你要抓包的 App 即可
等有空了录一个 YouTube TODO