设置手动代理后Android应用无法打开及请求发送问题解决方案咨询
我来帮你一步步排查这个问题,这种情况我之前帮不少开发者解决过,主要是代理服务、网络连通性、应用安全策略这几个方面的问题,下面是具体的解决步骤:
1. 先确认代理服务本身是否正常工作
- 先在运行代理工具的电脑上,用浏览器访问
http://localhost:8181(换成你实际使用的端口),看看代理工具(比如Charles、Fiddler)能不能正常抓到浏览器的请求。如果连浏览器的请求都抓不到,那大概率是代理服务没启动,或者端口被其他程序占用了。 - 检查端口占用情况:
- Windows系统:打开命令提示符,输入
netstat -ano | findstr :8181,如果有结果,说明端口被占用,要么换个端口,要么杀掉对应的进程(任务管理器里找PID对应的进程)。 - Mac/Linux系统:打开终端,输入
lsof -i :8181,同样看是否有进程占用端口,处理方式同上。
- Windows系统:打开命令提示符,输入
2. 确保手机和代理服务器在同一局域网且连通
- 手机和运行代理的电脑必须连接同一个WiFi(或者同一个内网),而且代理的主机地址要填电脑的局域网IP,不能填
localhost或者127.0.0.1(这两个是本地回环地址,手机访问不到)。 - 验证网络连通性:可以在手机上用终端模拟器(或者通过
adb shell进入手机命令行),输入ping 你的电脑局域网IP,比如ping 192.168.1.100。如果丢包或者不通,先排查网络问题,比如电脑的防火墙是否允许局域网访问。
3. 处理应用的网络安全限制
- 很多现代Android应用(targetSdkVersion >=28)默认会拒绝明文HTTP请求,并且不信任用户安装的证书(代理工具需要证书才能抓HTTPS请求):
- 如果是你自己开发的应用,在
res/xml目录下创建network_security_config.xml,添加以下配置:
然后在<network-security-config> <debug-overrides> <trust-anchors> <certificates src="user" /> </trust-anchors> </debug-overrides> </network-security-config>AndroidManifest.xml的application标签里加上:android:networkSecurityConfig="@xml/network_security_config"。 - 如果是第三方应用,你需要把代理工具的证书安装到系统证书目录(不是用户目录),这通常需要手机root;或者用Frida/Xposed模块(比如JustTrustMe)来绕过应用的证书校验。
- 如果是你自己开发的应用,在
4. 检查应用是否绕过了代理
- 有些应用会硬编码网络配置,或者检测到代理就拒绝连接,可以试试:
- 用adb命令强制设置全局代理:打开电脑终端,输入
adb shell settings put global http_proxy 你的电脑IP:8181,设置完成后重启应用试试。 - 如果应用用了OkHttp等网络库,可能需要在代理工具里配置对应的请求规则,或者用Frida hook应用的网络请求逻辑,强制走代理。
- 用adb命令强制设置全局代理:打开电脑终端,输入
5. 排查系统层面的限制
- 部分定制ROM(比如小米、华为)的“私人DNS”功能会干扰代理,试试关闭它:进入手机设置→网络和互联网→私人DNS,选择“关闭”。
- 检查手机的安全软件、防火墙,看看是否拦截了代理端口的网络请求。
6. 确认代理工具的配置正确
- 确保代理工具允许局域网设备连接:比如Charles需要在
Proxy → Proxy Settings里勾选Allow remote computers to connect;Fiddler需要在Tools → Options → Connections里勾选Allow remote computers to connect。 - 如果测试HTTPS请求,必须在手机上安装代理工具的根证书:比如Charles可以通过手机访问
http://chls.pro/ssl下载安装,安装后要在系统设置里信任该证书。
内容的提问来源于stack exchange,提问作者Vidya




