去掉原生或类原生 Android 系统的 Wi-Fi 叹号

分类:Android 评论: 0

原生系统在中国大陆使用的时候连接 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;
}

附录

相关链接

参考链接

回复