最近,由于 V2EX 主站部署了全站 SSL ,所以导致了之前的 /generate_204 地址上出现了跳转而无法使用。这是我们在部署这个更改之前没有考虑周到的地方,造成的不便向大家道歉。
因此,我们现在会提供一个专用的 Captive Portal Server 地址,这个地址会按照适合 Android 的方式进行配置,并且不会受到 V2EX 主站安全策略升级的影响。目前互联网上已经有了很多 Captive Portal Server ,如果你已经在使用一个稳定的,那么你是没有必要更改的。我们提供的这个地址只是希望能够让大家可以有多一种选择而已。
captive.v2ex.co
你可以使用 adb 命令行工具这样设置:
adb shell "settings put global captive_portal_server captive.v2ex.co"
adb ( Android Debug Bridge )是一个功能强大的命令行工具,属于 Google 官方的 Android 开发工具之一。你可以使用它来修改 Android 手机的一些核心设置。
如果使用的是 OS X ,那么你可以通过 Homebrew 获取 adb :
brew install android-platform-tools
如果使用使用的是 Windows ,那么可以使用下面这个帖子里提到的快速安装 adb 的工具:
http://forum.xda-developers.com/showthread.php?p=48915118#post48915118
如果你使用的是 Ubuntu/Debian ,那么你可以在添加一个 PPA 包之后,通过 apt-get 获得 adb :
sudo add-apt-repository ppa:phablet-team/tools && sudo apt-get update
sudo apt-get install android-tools-adb android-tools-fastboot
如果你已经完整安装了 Android Studio 的最新版本,那么 adb 命令行工具也可以在 sdk/platform-tools 目录下找到。
你可以把下面的这个地址加入到 $PATH 中:
~/Library/Android/sdk/platform-tools
如果你最近更新到了 Android 7.1.1,那么这个设置的语法稍有改变,请使用下面的指令重新设置:
adb shell "settings put global captive_portal_https_url https://captive.v2ex.co/generate_204"; 
在 Android 7.1.1 上需要执行两条指令:
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";
|  |      1kyze8439690      2016-09-04 22:02:29 +08:00  4 | 
|  |      2dexbol      2016-09-04 22:05:34 +08:00 It works | 
|      3BMW      2016-09-04 22:07:49 +08:00 via iPhone @kyze8439690 👍 | 
|  |      4Tink PRO | 
|  |      5mimzy      2016-09-04 22:26:14 +08:00  2 如果你的手机已经 root ,可以安装 JuiceSSH (地址 https://play.google.com/store/apps/details?id=com.sonelli.juicessh 或其他终端) ,选择「本地设备」先执行 su 再执行 settings put global captive_portal_server captive.v2ex.co ,这样就不必安装 adb 了。 | 
|  |      6regeditms      2016-09-04 22:30:30 +08:00 via Android @kyze8439690 还是用 Google cn 的吧 | 
|      7xujialiang      2016-09-04 22:37:32 +08:00 via iPhone 好奇,谁能科普下? 是不是像星巴克里的这种网页登陆?造成了不能访问 V2EX ?还是什么? Google 了下,不知道是不是我说的这个? | 
|  |      9lan894734188      2016-09-04 22:40:02 +08:00 via Android | 
|  |      11BROWNURSIDAE      2016-09-04 22:53:08 +08:00 via Android @xujialiang 不是,即使换成了 v2 还是可以登录到 Starbucks 的 | 
|  |      12Livid MOD OP PRO  1 @xujialiang 默认情况下, Android 会时不时访问这个地址: http://clients1.google.com/generate_204 用来探测网络状态。在每次连 Wi-Fi 时,也会需要需要访问一下这个地址。 但是就像你可能已经知道的那样,*.google.com 的访问在国内是有问题的。所以我们需要修改这个设置。 | 
|      13alangz      2016-09-04 23:11:03 +08:00 现在这个无论 https 还是 http 都返回 301 ,难道我这边网络问题。/generate_204 的 https 返回是 204 。 | 
|  |      14Livid MOD OP PRO @alanlhy 只有下面这个地址才会返回 204 : http://captive.v2ex.co/generate_204 你如果直接访问 captive.v2ex.com 的话确实是 301 ,这是对的。 | 
|  |      15C0VN      2016-09-04 23:54:18 +08:00 刚好,我在我手机上查看了一下设置 `settings get global captive_portal_server ` 居然不知道什么时候被设置成了 www.qualcomm.cn 高通公司的中国官网, WTF ,明明我一直设置为 g.cn 的,于是又换回来了。 | 
|  |      16GoopleXD      2016-09-05 00:23:42 +08:00 /system/bin/sh: /system/bin/settings: /bin/sh: No such file or directory 这个怎么办? | 
|  |      17lance6716      2016-09-05 00:31:35 +08:00 via Android @xavierskip 我也是这样…目测每次重启都会重置的 | 
|  |      18ynyounuo      2016-09-05 00:47:25 +08:00 @GoopleXD  进去 adb shell 了之后,就不需要加「 adb shell 」的前缀了,直接用「 settings blah blah 」就行。 | 
|  |      19GoopleXD      2016-09-05 00:58:14 +08:00 @ynyounuo 我在手机终端上同样不能用 setting 命令,应该是 rom 有问题   能不能直接手动修改文档来修改 global captive_portal_server? | 
|  |      20Lentin      2016-09-05 08:33:35 +08:00 @xavierskip 鸟笼官网的地址也能当作验证用啊= = | 
|  |      21hewwcn      2016-09-05 08:36:37 +08:00 | 
|      22xujialiang      2016-09-05 08:45:23 +08:00 via iPhone @Livid get ~~~~ | 
|  |      23pmgh10      2016-09-05 09:20:05 +08:00 via Android 站长提供的都是通用好方法,感谢! | 
|  |      24breaklayer      2016-09-05 09:32:38 +08:00 我用的是这个: 5.0.appinn.com | 
|  |      25nashxk      2016-09-05 11:49:01 +08:00 Perfect !现在用之前的 www.v2ex.com 还是可以的。。 | 
|  |      26vitovan      2016-09-05 12:03:05 +08:00 感谢! | 
|  |      27wenymedia      2016-09-05 12:11:18 +08:00  1 mokee 的 ROM 用的 v2 的检测地址 影响范围还真不小... | 
|      28mine260309      2016-09-05 13:27:08 +08:00  1 注意 Android7.0 之前用的都是 HTTP ,而 7.0 之后默认用的是 HTTPS 的 URL 。 测试过 captive.v2ex.co 同时支持 HTTP 和 HTTPS 了,赞一个! 另外,写了篇博客解释了一下: https://mine260309.me/archives/1587 | 
|  |      29faywong8888      2016-09-05 23:09:58 +08:00 It works! | 
|  |      30Vicer      2016-09-06 07:28:46 +08:00 via Android Get it! | 
|      31EricInBj      2016-09-06 15:08:00 +08:00 @kyze8439690 感谢, google.cn 的速度比较快 | 
|  |      32love4taylor PRO @wenymedia ? mokee 不是自己有么 | 
|  |      33wenymedia      2016-09-07 12:28:04 +08:00 via Android @Love4Taylor mokee 前两天公告里 之前 merge 一个有用 v2 版本分支…… | 
|  |      34Showfom PRO Nexus 5X 终于到了,顺手已经改了 v2 的 嘿嘿 准备自己搭建个去 | 
|  |      35chenshaoju      2016-09-18 18:37:42 +08:00 我说怎么之前的地址不工作了,抓包看了一下返回了 301 ,搜了一下原帖,原来换了。。。 感谢。 | 
|  |      38chenyiping1995      2016-10-09 21:05:10 +08:00 | 
|  |      39datou      2016-10-20 14:46:10 +08:00 nexus 5X 用了一年了 电信和联通默认都没叹号 移动有叹号 | 
|  |      40airqj      2016-10-21 18:53:27 +08:00 7.1.1 beta 按照命令设置无效..... | 
|  |      41J735KILnHi7q49cv      2016-10-31 10:39:30 +08:00 wow.. | 
|  |      42isbase PRO @mimzy 多谢,用了好久 JuiceSSH ,竟然没注意到可以登录 local shell | 
|  |      44Zohar      2016-11-30 17:51:06 +08:00 via Android  1 | 
|  |      45chenyiping1995      2016-12-03 22:19:49 +08:00 不好意思挖个坟(不知道是不是算? 证书到期了麻烦续一下谢谢。。。 Android 7.0 上不受信任的证书不能 pass | 
|  |      46chenyiping1995      2016-12-03 22:20:08 +08:00 | 
|  |      48Livid MOD OP PRO | 
|  |      49jasonchao      2016-12-04 10:38:59 +08:00 THX | 
|  |      51KyonLi      2016-12-06 12:27:38 +08:00 Android 7.1.1 字段变为 captive_portal_https_url 值为完整 URL ,不拼接 generate_204 https://android.googlesource.com/platform/frameworks/base/+/android-7.1.1_r4/services/core/java/com/android/server/connectivity/NetworkMonitor.java#611 | 
|  |      5221grams      2016-12-06 13:17:34 +08:00  2 @VampireSH  @airqj @KyonLi 7.1.1 的方法: adb shell "settings put global captive_portal_https_url https://captive.v2ex.co/generate_204" | 
|      54Wicheol      2016-12-08 17:22:43 +08:00 今天下午失效了? | 
|      56Laygle      2016-12-09 13:58:18 +08:00 貌似失效了 | 
|  |      57zachX      2016-12-10 11:21:00 +08:00 貌似最近有时候会失效? | 
|  |      58zachX      2016-12-10 11:38:34 +08:00  1 | 
|  |      60Showfom PRO | 
|  |      61reorx      2017-01-04 06:17:34 +08:00 我都是直接关了的: ``` adb shell settings put global captive_portal_detection_enabled 0 ``` | 
|  |      62milltronics      2017-01-05 10:38:28 +08:00 @xavierskip captive_portal_server 被自动改回的问题最后有没有解决? 我也遇到相同问题。 | 
|  |      63C0VN      2017-01-05 13:01:34 +08:00 @milltronics 没有解决。反正 www.qualcomm.cn 又没被墙。 | 
|  |      64rrfeng      2017-02-06 18:46:06 +08:00 @Tink  Pixel 使用了 https://http204.sinaapp.com 这个之后,在办公室的 WiFi 环境下持续断网。回到家里 WiFi 就没有问题,其他 WiFi 也没有问题。 3G/4G 也没有问题。 一直怀疑是 AP 和 Pixel 兼容性有问题…… 今天换了自己的 204 服务,结果就没问题了,一直没往这方面想。 可以查一下我们出口 IP 的访问记录吗? 124.65.149.46 | 
|      65lavazawinul      2017-02-07 14:36:14 +08:00 7.1.2 beta 又不行了? | 
|      66lavazawinul      2017-02-07 14:36:46 +08:00 @lavazawinul 没了叹号,变成叉号了。 | 
|  |      67fenglipop29      2017-02-12 19:03:04 +08:00 发现叉叉要过一两分钟后才消失。 | 
|  |      68GavinHua      2017-02-16 10:22:27 +08:00 @Livid captive.v2ex.co 打不开了 | 
|  |      69zlhdd108      2017-02-16 10:59:49 +08:00 好像有问题了,打不开,感叹号又出来了,换了一个地址就好了…… | 
|  |      70bruce55      2017-02-16 11:14:23 +08:00 >curl -v https://captive.v2ex.co/generate_204 * Trying 162.221.6.250... * TCP_NODELAY set * connect to 162.221.6.250 port 443 failed: Timed out * Failed to connect to captive.v2ex.co port 443: Timed out * Closing connection 0 curl: (7) Failed to connect to captive.v2ex.co port 443: Timed out 然后……东京打不开主站 | 
|  |      72Livid MOD OP PRO @bruce55 captive.v2ex.co 和主站在日本的流量策略刚刚已经做了调整,现在应该恢复了。谢谢反馈。 | 
|  |      77chenshaoju      2017-03-16 11:03:47 +08:00 | 
|      78KevinHsiun      2017-03-16 12:09:14 +08:00 今天不行了,出现感叹号。 504 Gateway Time-out @Livid | 
|      79maodahua      2017-03-16 20:27:51 +08:00 今天早上是不是翻水水了哦 | 
|  |      80Livid MOD OP PRO  3 | 
|  |      81chenshaoju      2017-05-24 16:15:56 +08:00  2 今天调试 Logcat 的时候,发现仍然有一个 HTTP 的 probe 走的是 http://connectivitycheck.gstatic.com/generate_204 (已经可以在中国大陆直接访问了)。 那个 captive_portal_server 早已失效,而 captive_portal_https_url 只涵盖了 HTTPS 的 probe。 查阅代码 ( http://androidxref.com/7.1.1_r6/xref/frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java#614 )后,发现还有一个名为 CAPTIVE_PORTAL_HTTP_URL 的参数,因此在 Android 7.x 中,实际上有两个 probe 的地址,需要使用两条命令来设置: 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"; | 
|  |      82wuzhizhemu569      2017-06-09 10:50:44 +08:00 7.1.1 有效,多谢楼主。 | 
|  |      83loveq1991      2017-06-12 11:25:05 +08:00 7.1.1 有效 +1 感谢大佬 | 
|  |      84noisyfox      2017-07-02 13:49:31 +08:00  1 7.1.2 更改了禁用检测的设置。 现在需要设置"captive_portal_mode"这个参数,禁用的话设置为 0。 具体可以参考 https://github.com/Noisyfox/NoExclamation/issues/2 另外打个广告~完整分析在 https://www.noisyfox.io/android-captive-portal.html 叹号杀手已经更新支持 7.1.2,可以在 github 上下载。 | 
|  |      85vvtommy      2017-07-21 16:28:20 +08:00 7.1.2 更改 captive portal http url 无效。如果关掉,肯定会影响正常的 captive portal 服务。 | 
|  |      86bclerdx      2017-08-13 23:23:50 +08:00 via Android 现在正需要呢,感谢! | 
|  |      87xiaojunzi      2017-09-05 13:57:28 +08:00 最近连接老是出问题呀 经常叉号就回来了 等会又好了 是升级 8.0 的原因还是什么呢 | 
|  |      88zlhdd108      2017-12-27 17:21:59 +08:00 貌似又链接不上了哦 curl -v https://captive.v2ex.co/generate_204 * About to connect() to captive.v2ex.co port 443 (#0) * Trying 23.251.125.132... * Connection timed out * Failed connect to captive.v2ex.co:443; Connection timed out * Closing connection 0 curl: (7) Failed connect to captive.v2ex.co:443; Connection timed out | 
|  |      92chenshaoju      2018-01-03 23:46:24 +08:00  1 | 
|  |      93Livid MOD OP PRO  1 @chenshaoju 非常感谢。那个 IP 确实有问题。已经调整到了一个更健壮的 CNAME。 | 
|  |      94chenshaoju      2018-04-26 11:16:23 +08:00  1 在 Android 8.x 后,加入了两个 fallback 的 Captive portal server 参数: CAPTIVE_PORTAL_FALLBACK_URL CAPTIVE_PORTAL_OTHER_FALLBACK_URLS 同样可以使用 settings 命令进行设置,格式为: adb shell "settings put global captive_portal_fallback_url http://captive.v2ex.co/generate_204"; adb shell "settings put global captive_portal_other_fallback_urls http://captive.v2ex.co/generate_204"; 源码详见: http://androidxref.com/8.0.0_r4/xref/frameworks/base/services/core/java/com/android/server/connectivity/NetworkMonitor.java#675 | 
|  |      95Livid MOD OP PRO @chenshaoju 谢谢。最近我们会为这个地址加上 IPv6 支持。 | 
|  |      96fenglipop29      2018-05-10 18:32:14 +08:00 有没有人使用的移动手机卡?我发现我在开移动 4g 的时候会有感叹号,但是打开 wifi 接电信网络的时候就完全正常     | 
|      98JinChen      2018-10-17 21:07:50 +08:00 刚刚发现 Pixel Experience 也是用的 V2EX 的服务 | 
|      99EricInBj      2018-11-22 13:43:19 +08:00 为啥设置完了 WIFI 图标上还是有 X 呢? Android 8.1 通过 Fiddler 抓包看,已经是请求我指定的 gen_204 url 并且返回 204 了啊。 | 
|      100EricInBj      2018-11-22 13:47:38 +08:00 把代理去掉 X 就没了。。 |