原生系统在中国大陆使用的时候连接 Wi-Fi 后会弹出提示,该热点无网络连接,且在 WiFi 信号图标上显示叉号,但是实际上此网络是可使用的。
刨根问底
这是因为原生系统或者类原生系统(如索尼一加等品牌的系统)连接网络连接后会向 https://www.google.com/generate_204
发送请求,此链接无返回内容,服务器只会返回 204 状态码表示网络可用。
因为众所周知的原因此地址无法访问,导致系统认为网络不可用。
因地制宜
Android 7 及之后版本
在 Android 7.1.1 版本后策略有所变化,无法使用之前的方法。
使用 ADB 进行配置即可,ADB 配置方式本文不再赘述,macOS 使用方式参考相关链接。
连接手机到电脑,然后在手机上允许进行 USB 调试。
adb devices
显示出设备后即可进行操作
adb shell "settings put global captive_portal_http_url http://www.google.cn/generate_204";
adb shell "settings put global captive_portal_https_url https://www.google.cn/generate_204";
小贴士:经过测试,大部分机型只需要配置 HTTPS 的即可解决问题,不过谨慎起见还是推荐全部替换。
Android 6 及之前版本
adb shell "settings put global captive_portal_server www.google.cn"
通用方案
注意:此方案适配全部版本的手机,但是需要有 ROOT 权限,实际原理和上文同理。
下载叹号杀手,按照提示进行操作即可。
多嘴多舌
其他可用源
地址 | 提供者 | 测试通过 | 测试时间 |
---|---|---|---|
https://www.noisyfox.cn/generate_204 | 小狐狸 | × | 2021.09.21 |
https://captive.v2ex.co/generate_204 | V2EX | √ | 2019.08.01 |
https://wave.red/generate_204 | Vndroid | √ | 2019.08.01 |
https://g.cn/generate_204 | √ | 2019.08.01 | |
https://connect.rom.miui.com/generate_204 | 小米 | √ | 2020.01.01 |
https://connectivitycheck.platform.hicloud.com/generate_204 | 华为 | √ | 2020.01.01 |
https://wifi.vivo.com.cn/generate_204 | VIVO | √ | 2020.01.01 |
小贴士:还有其他可用源可在评论区留下,有空补充。
除了上述几个地址外,还有几个国内国外都能使用的节点,在大陆会解析至北京节点,在海外会解析至海外节点。
地址 | 测试通过 |
---|---|
https://connectivitycheck.gstatic.com/generate_204 | √ |
https://ssl.gstatic.com/generate_204 | √ |
https://www.gstatic.com/generate_204 | √ |
自建源
实际上就是让服务器给某个特定链接返回 204 码即可,因此可以使用 Apache Httpd 或者 NGINX 进行实现。
Apache Httpd
<IfModule mod_rewrite.c>;
RewriteEngine On
RewriteCond %{REQUEST_URI} /generate_204$
RewriteRule $ / [R=204]
</IfModule>;
小贴士:需要安装 rewrite 模块,然后在 .htaccess 中添加以上内容即可。
NGINX
location /generate_204 {
return 204;
}
附录
参考链接
- 关于 V2EX 提供的 Android Captive Portal Server 地址的更新 - V2EX
- 关于 ANDROID 5.0-7.1.2 网络图标上的感叹号及其解决办法 - 狐狸的小小窝
- 解决 Android/安卓原生 ROM 出现网络连接受限 - CNBLOGS
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2024-08-08 19:25 PM