做App联调或者数据对接的人,多半碰过这种需求:想让手机发出去的请求从一个指定的出口走,看看服务端返回的内容有没有差别。电脑浏览器上配个代理几分钟的事,到了安卓手机上,很多人就卡住了——网上一搜,一半教程让你先root,另一半是几年前的老截图,菜单路径根本对不上。
其实从安卓6.0之后,系统自带的WiFi代理功能就够用了,不用root,也不用装来路不明的工具。这篇文章把三条路都走一遍:手动填、PAC自动配置、再加一小段服务端脚本,让手机每次连上WiFi都自动用上还活着的代理IP。
动手前先弄懂:安卓的"全局代理"是什么范围
先说清楚一件事:安卓没有一个像电脑系统代理那样的总开关,管住所有应用的全部流量。系统里的代理是挂在WiFi上的——你给A网络配了代理,只有连着A网络时生效;关掉WiFi用流量,代理就不管了。所以"免root全局代理"实际能做到的是:当前WiFi下,遵守系统代理设置的应用全部走代理。浏览器基本都认,用常见网络库开发的App默认也认;少数自己管连接的应用会绕开,这是安卓机制决定的,跟root不root没关系。
在这个前提下,免root配置有三条路,先看整体对比:
| 方式 | 生效范围 | IP过期后怎么办 | 适合谁 |
|---|---|---|---|
| WiFi手动代理 | 当前WiFi | 重新长按WiFi手填一遍 | 用长效静态IP的人 |
| PAC自动配置 | 当前WiFi | 改服务端脚本,手机不动 | 用短效动态IP的人 |
| 脚本定时刷新+PAC | 当前WiFi | 全自动,无感更新 | 长时间跑数据对接的人 |
准备工作:先把代理IP和端口拿到手
不管走哪条路,都得先有一组能用的"IP+端口"。以神龙HTTP为例,注册后在个人中心创建提取链接,浏览器里打开这个链接,就能拿到一行一个、格式为"IP:端口"的可用列表。提取时可以按城市定位拿对应地区的IP,它有300+城市级精准定位,想模拟哪个城市的出口就选哪个。
拿到列表后,先看协议和端口要对应。安卓WiFi代理认的是HTTP代理,神龙HTTP同时支持HTTP、HTTPS和SOCKS5,配置时填HTTP方式对应的那个端口,别拿SOCKS5的端口往里塞。
再看有效期。短效动态IP的有效期只有几分钟,适合配合后面的PAC自动更新;想填一次用很久,就选长效静态IP,两种在同一个后台都能取到。
最后想好验证方式。安卓的代理输入框不支持填账号密码,所以要么用白名单验证(把当前出口IP加进白名单),要么直接找服务商要适配方案。神龙HTTP的文档里有各端示例代码,技术支持7×24小时在线,卡住的时候直接问,比自己瞎试快得多。
方法一:WiFi手动代理,两分钟填完
这是最直接的方式,原生安卓的路径如下,其他系统的入口大同小异:
1. 打开"设置",进"WLAN"(有的机型叫"网络和互联网");
2. 长按当前连接的WiFi名称,弹出"修改网络";部分机型是点WiFi名称右侧的箭头进详情页;
3. 展开"高级选项",把"代理"从"无"改成"手动";
4. "代理主机名"填IP,"代理端口"填端口;"不使用代理"一栏可以填网关地址(比如192.168.1.1),让路由器管理页不走代理;
5. 保存,然后浏览器随便打开一个查IP的网页,显示的地址变成代理IP就说明通了。
两个容易踩的坑:端口填错的表现是"连着WiFi却上不了网",把代理改回"无"就能恢复;排除列表别乱填,填多了该走代理的请求反而直连出去了。
方法二:PAC自动配置,更新IP不用碰手机
手动方式最大的痛点是短效IP:几分钟过期一次,一天重填几十遍,谁受得了。PAC(代理自动配置)就是冲着这个问题来的——手机不再记住某个固定IP,而是记住一个脚本地址,每次联网时去拉这个脚本,脚本说走哪个代理就走哪个。
配置步骤:
1. 按方法一走到"代理"那一步,选项改成"代理自动配置";
2. 填入PAC文件的URL,注意用http开头的地址,部分机型对https的PAC支持不好;
3. 保存后把WiFi断开重连一次,触发手机拉取脚本。
PAC文件本身就是一个文本文件,内容长这样,存成proxy.pac放到任何能被http访问到的地方:
function FindProxyForURL(url, host) {
// 局域网地址直连,不走代理
if (isInNet(host, "192.168.0.0", "255.255.0.0")) {
return "DIRECT";
}
// 走代理;分号后的DIRECT是兜底,代理失效时直连
return "PROXY 123.45.67.89:8000; DIRECT";
}
两个要点:PROXY后面跟的就是"IP:端口";要不要留DIRECT兜底看需求,留着的话代理失效时请求会直连出去,对数据一致性要求高的场景反而要去掉。
方法三:加个小脚本,让IP自动保持新鲜
PAC真正的精髓在于:脚本放在服务端,改脚本不用动手机。配合神龙HTTP的API提取,就能做成全自动——找台服务器(公司内网随便一台机器都行)跑个定时任务,每隔几分钟调一次提取接口,获取新的IP并重写PAC文件:
#!/bin/bash
# update_pac.sh —— 获取新的IP并重写PAC文件
PROXY=$(curl -s "你的提取链接" | head -n 1)
cat > /var/www/html/proxy.pac <
再往crontab里加一行,五分钟执行一次:
*/5 * * * * /root/update_pac.sh
手机端从头到尾只配置一次PAC地址。之后每次连WiFi,拉到的都是几分钟内刚更新的、还活着的代理IP。做长时间数据对接或采集调试时,这套组合基本可以配完就忘。神龙HTTP的提取接口返回的就是标准的"IP:端口"文本,文档里有现成的示例代码,接进脚本也就几分钟的事。
配好了却不生效?按这张清单挨个排
1. IP过期了。短效动态IP有效期短,过期后请求全部失败。先手动提取一个新的验证链路,再考虑上PAC自动更新。
2. 端口填错了。同一家服务商,HTTP入口和SOCKS5入口的端口不一样,WiFi代理要填HTTP那个,去后台核对。
3. 认证没通过。安卓代理框填不了账号密码,改用白名单验证,或者换支持认证的客户端工具来跑。
4. 应用自己直连。个别App不理会系统代理,浏览器和大多数网络库都认,个别应用不认属于正常现象,不是你配错了。
5. 看的是流量网络。WiFi代理只对当前WiFi生效,关掉WiFi用流量,代理自然不工作。
6. PAC地址有问题。地址必须能用浏览器直接打开看到脚本内容;手机会缓存脚本,改完服务端文件后重连一次WiFi再测。
代理IP从哪来比较省心
自己搭代理服务器又贵又麻烦,绝大多数人直接用现成的服务商。挑的时候主要看三点:IP来源正不正规、可用率高不高、出了问题有没有人管。神龙HTTP这三点都拿得出手——国内三大运营商正规授权,3000万以上的代理IP储备,可用率标到99.9%;对安卓端配置来说最实用的是它的短效动态IP加API提取的组合,天然适配前面PAC自动更新的玩法,手机端全程零操作。文档和示例代码给得全,真卡住了,技术支持7×24小时都在。
常见问题
Q:用流量上网时也能走代理吗?
系统自带的代理功能只挂在WiFi上,流量上网不经过它。如果确实需要流量也走代理,得借助第三方的客户端工具来实现,选工具时注意看清它申请了哪些权限。
Q:安卓WiFi代理能直接填SOCKS5吗?
系统自带的输入框只认HTTP代理。SOCKS5的代理要看服务商是否提供HTTP方式的入口端口,比如神龙HTTP同时支持HTTP、HTTPS和SOCKS5,配置时用HTTP入口即可。
Q:没有服务器,PAC文件放哪?
任何能通过http直接访问到文件的地方都行:云服务器、对象存储、公司内网的机器都可以。只是临时测试的话,电脑上起个临时服务也能凑合,但长期用建议放固定地址,地址一变手机又得重配。
Q:配置代理后网速变慢正常吗?
有一点影响是正常的,请求毕竟多绕了一段路。慢得离谱就要查三样:先重新提取一个IP试试,排除单个IP质量差的可能;再核对端口和协议有没有填对;还不行就换服务商的接入方式对比测试。正规服务商在延迟和并发上都有优化,神龙HTTP标称低延迟高并发,正常使用体感不会明显卡顿。






