原生系统在中国大陆使用的时候连接 Wi-Fi 后会弹出提示,该热点无网络连接,且在 WiFi 信号图标上显示叉号,但是实际上此网络是可使用的。
刨根问底
这是因为原生系统或者类原生系统(如索尼一加等品牌的系统)连接网络连接后会向 https://www.google.com/generate_204
发送请求,此链接无返回内容,服务器只会返回 204 状态码表示网络可用。
因为众所周知的原因此地址无法访问,导致此问题。
因地制宜
Android 7.1.1 及之后版本
在 Android 7.1.1 版本后策略有所变化,无法使用之前的方法。
使用 ADB 进行配置即可,ADB 配置方式本文不再赘述,macOS 使用方式参考相关链接
连接手机到电脑,然后在手机上允许进行 USB 调试。
$ adb devices
显示出设备后即可进行操作
$ adb shell "settings put global captive_portal_http_url http://captive.v2ex.co/generate_204";
$ adb shell "settings put global captive_portal_https_url https://captive.v2ex.co/generate_204";
小贴士:经过测试,大部分机型只需要配置 HTTPS 的即可解决问题,不过谨慎起见还是推荐全部替换。
Android 6 和更老的系统
$ adb shell "settings put global captive_portal_server captive.v2ex.co"
效果图
通用方案
注意:此方案适配全部版本的手机,但是需要有 ROOT 权限,实际原理和上文同理。
下载叹号杀手,按照提示进行操作即可。
多嘴多舌
其他可用源
地址 | 提供者 | 测试通过 | 测试时间 |
---|---|---|---|
https://www.noisyfox.cn/generate_204 | 小狐狸 | √ | 2019.08.01 |
https://captive.v2ex.co/generate_204 | V2EX | √ | 2019.08.01 |
https://wave.red/generate_204 | Vndroid | √ | 2019.08.01 |
小贴士:还有其他可用源可在评论区留下,有空补充。
自建源
实际上就是让服务器给某个特定链接返回 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;
}
附录
相关链接
参考链接
本文由 柒 创作,采用 知识共享署名4.0
国际许可协议进行许可。
转载本站文章前请注明出处,文章作者保留所有权限。
最后编辑时间: 2019-08-09 13:10 PM