Android使用移动热点或USB tethering时如何设置代理?
实现方案(按连接场景分类)
场景1:Android手机通过USB tethering给Linux电脑供网
该场景下手机流量经USB通道流向Linux电脑,直接在Linux侧配置流量转发即可实现抓包,无需修改手机代理配置:
- 启动mitmproxy,监听Linux所有网卡的8080端口:
mitmproxy --listen-host 0.0.0.0 --listen-port 8080 - 执行
ip a命令找到USB tethering对应的网卡名称(通常为usb0或前缀为enp/enx的网卡),记为<TETHER网卡名> - 配置iptables NAT规则,把USB网卡传入的80、443端口流量强制转发到mitmproxy监听端口:
# 转发HTTP流量 sudo iptables -t nat -A PREROUTING -i <TETHER网卡名> -p tcp --dport 80 -j REDIRECT --to-port 8080 # 转发HTTPS流量 sudo iptables -t nat -A PREROUTING -i <TETHER网卡名> -p tcp --dport 443 -j REDIRECT --to-port 8080
- 提前将mitmproxy根证书安装到Android系统证书分区(Android 7及以上版本第三方APP默认不信任用户级证书,无root权限可通过VirtualXposed、平行空间等容器挂载证书)
场景2:Android手机开启Wifi热点给Linux电脑供网
该场景下手机是热点网关,有两种实现路径:
- 有root权限:手机端安装ProxyDroid等全局代理工具,直接将全局代理地址设置为Linux连接热点后的IP+mitmproxy监听端口即可
- 无root权限:和USB tethering配置逻辑一致,只需将上述iptables规则中的
<TETHER网卡名>替换为Linux连接热点对应的Wifi网卡名称,所有热点流量会自动转发到mitmproxy
抓包测试完成后执行
sudo iptables -t nat -F即可清空所有添加的NAT转发规则,恢复正常上网
内容的提问来源于stack exchange,提问作者fogma
相关产品推荐
相关产品推荐

