去掉原生或类原生 Android 系统的 Wi-Fi 叹号
后知后觉 暂无评论

原生系统在中国大陆使用的时候连接 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_204V2EX2019.08.01
https://wave.red/generate_204Vndroid2019.08.01
https://www.google.cn/generate_204Google2019.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;
}

附录

参考链接

本文撰写于一年前,如出现图片失效或有任何问题,请在下方留言。博主看到后将及时修正,谢谢!
禁用 / 当前已拒绝评论,仅可查看「历史评论」。