关于 V2EX 提供的 Android Captive Portal Server 地址的更新 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Livid
267.42D
572.64D

关于 V2EX 提供的 Android Captive Portal Server 地址的更新

  Livid
PRO
Sep 4, 2016 378268 views
This topic created in 3524 days ago, the information mentioned may be changed or developed.

最近,由于 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 
Supplement 1    Dec 10, 2016

如果你最近更新到了 Android 7.1.1,那么这个设置的语法稍有改变,请使用下面的指令重新设置:

adb shell "settings put global captive_portal_https_url https://captive.v2ex.co/generate_204"; 
Supplement 2    Jun 9, 2017

在 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"; 
132 replies    2020-06-07 11:12:16 +08:00
1  2  
kyze8439690
    1
kyze8439690  
   Sep 4, 2016   4
其实 www.google.cn 也有 204 的
```
adb shell "settings put global captive_portal_server www.google.cn"
```
dexbol
    2
dexbol  
   Sep 4, 2016
It works
BMW
    3
BMW  
   Sep 4, 2016 via iPhone
Tink
    4
Tink  
PRO
   Sep 4, 2016 via iPhone
mimzy
    5
mimzy  
   Sep 4, 2016   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 了。
regeditms
    6
regeditms  
   Sep 4, 2016 via Android
@kyze8439690 还是用 Google cn 的吧
xujialiang
    7
xujialiang  
   Sep 4, 2016 via iPhone
好奇,谁能科普下? 是不是像星巴克里的这种网页登陆?造成了不能访问 V2EX ?还是什么?
Google 了下,不知道是不是我说的这个?
AirSc
    8
AirSc  
   Sep 4, 2016 via Android
@regeditms Google.cn 最近有时候解析到美国去了。。然后就打不开了,好奇怪
lan894734188
    9
lan894734188  
   Sep 4, 2016 via Android
安利
204.bydisk.com
http https 都可以
regeditms
    10
regeditms  
   Sep 4, 2016
@AirSc 还会这样啊?
BROWNURSIDAE
    11
BROWNURSIDAE  
   Sep 4, 2016 via Android
@xujialiang 不是,即使换成了 v2 还是可以登录到 Starbucks 的
Livid
    12
Livid  
MOD
OP
PRO
   Sep 4, 2016   1
@xujialiang 默认情况下, Android 会时不时访问这个地址:

http://clients1.google.com/generate_204

用来探测网络状态。在每次连 Wi-Fi 时,也会需要需要访问一下这个地址。

但是就像你可能已经知道的那样,*.google.com 的访问在国内是有问题的。所以我们需要修改这个设置。
alangz
    13
alangz  
   Sep 4, 2016
现在这个无论 https 还是 http 都返回 301 ,难道我这边网络问题。/generate_204 的 https 返回是 204 。
Livid
    14
Livid  
MOD
OP
PRO
   Sep 4, 2016
@alanlhy 只有下面这个地址才会返回 204 :

http://captive.v2ex.co/generate_204

你如果直接访问 captive.v2ex.com 的话确实是 301 ,这是对的。
C0VN
    15
C0VN  
   Sep 4, 2016
刚好,我在我手机上查看了一下设置 `settings get global captive_portal_server ` 居然不知道什么时候被设置成了 www.qualcomm.cn 高通公司的中国官网, WTF ,明明我一直设置为 g.cn 的,于是又换回来了。
GoopleXD
    16
GoopleXD  
   Sep 5, 2016
/system/bin/sh: /system/bin/settings: /bin/sh: No such file or directory
这个怎么办?
lance6716
    17
lance6716  
   Sep 5, 2016 via Android
@xavierskip 我也是这样…目测每次重启都会重置的
ynyounuo
    18
ynyounuo  
   Sep 5, 2016
@GoopleXD
进去 adb shell 了之后,就不需要加「 adb shell 」的前缀了,直接用「 settings blah blah 」就行。
GoopleXD
    19
GoopleXD  
   Sep 5, 2016
@ynyounuo 我在手机终端上同样不能用 setting 命令,应该是 rom 有问题 能不能直接手动修改文档来修改 global captive_portal_server?
Lentin
    20
Lentin  
   Sep 5, 2016
@xavierskip 鸟笼官网的地址也能当作验证用啊= =
hewwcn
    21
hewwcn  
   Sep 5, 2016
xujialiang
    22
xujialiang  
   Sep 5, 2016 via iPhone
@Livid get ~~~~
pmgh10
    23
pmgh10  
   Sep 5, 2016 via Android
站长提供的都是通用好方法,感谢!
breaklayer
    24
breaklayer  
   Sep 5, 2016
我用的是这个: 5.0.appinn.com
nashxk
    25
nashxk  
   Sep 5, 2016
Perfect !现在用之前的 www.v2ex.com 还是可以的。。
vitovan
    26
vitovan  
   Sep 5, 2016
感谢!
wenymedia
    27
wenymedia  
   Sep 5, 2016   1
mokee 的 ROM 用的 v2 的检测地址 影响范围还真不小...
mine260309
    28
mine260309  
   Sep 5, 2016   1
注意 Android7.0 之前用的都是 HTTP ,而 7.0 之后默认用的是 HTTPS 的 URL 。
测试过 captive.v2ex.co 同时支持 HTTP 和 HTTPS 了,赞一个!

另外,写了篇博客解释了一下: https://mine260309.me/archives/1587
faywong8888
    29
faywong8888  
   Sep 5, 2016
It works!
Vicer
    30
Vicer  
   Sep 6, 2016 via Android
Get it!
EricInBj
    31
EricInBj  
   Sep 6, 2016
@kyze8439690 感谢, google.cn 的速度比较快
love4taylor
    32
love4taylor  
PRO
   Sep 6, 2016
@wenymedia ? mokee 不是自己有么
wenymedia
    33
wenymedia  
   Sep 7, 2016 via Android
@Love4Taylor mokee 前两天公告里 之前 merge 一个有用 v2 版本分支……
Showfom
    34
Showfom  
PRO
   Sep 10, 2016
Nexus 5X 终于到了,顺手已经改了 v2 的 嘿嘿 准备自己搭建个去
chenshaoju
    35
chenshaoju  
   Sep 18, 2016
我说怎么之前的地址不工作了,抓包看了一下返回了 301 ,搜了一下原帖,原来换了。。。

感谢。
mirtest
    36
mirtest  
   Sep 20, 2016 via Android
之前一直是用的小狐狸自带..7.x 老感叹号现在换这个试试..然后原来 g.cn 解析飞了
palxex
    37
palxex  
   Sep 21, 2016
@EricInBj 感谢推荐。确实快好多,本地实测 http 快 20 倍, https 快 5 倍。
chenyiping1995
    38
chenyiping1995  
   Oct 9, 2016
@mirtest 7.0 下 g.cn 疑似是因为 HTTPS 的原因不再能使用了。
datou
    39
datou  
   Oct 20, 2016
nexus 5X 用了一年了

电信和联通默认都没叹号

移动有叹号
airqj
    40
airqj  
   Oct 21, 2016
7.1.1 beta 按照命令设置无效.....
J735KILnHi7q49cv
    41
J735KILnHi7q49cv  
   Oct 31, 2016
wow..
isbase
    42
isbase  
PRO
   Nov 3, 2016 via Android
@mimzy 多谢,用了好久 JuiceSSH ,竟然没注意到可以登录 local shell
VampireSH
    43
VampireSH  
   Nov 23, 2016 via Android
@airqj 咱也是,无论设置什么都不行
Zohar
    44
Zohar  
   Nov 30, 2016 via Android   1
chenyiping1995
    45
chenyiping1995  
   Dec 3, 2016
不好意思挖个坟(不知道是不是算?
证书到期了麻烦续一下谢谢。。。 Android 7.0 上不受信任的证书不能 pass
chenyiping1995
    46
chenyiping1995  
   Dec 3, 2016
kmahyyg
    47
kmahyyg  
   Dec 4, 2016 via Android
@Livid 请续签 let's encrypt.证书到期了
Livid
    48
Livid  
MOD
OP
PRO
   Dec 4, 2016
@chenyiping1995
@kmahyyg

刚才已经续上了。

抱歉,今天有一个自动脚本没有按照预期那样工作。
jasonchao
    49
jasonchao  
   Dec 4, 2016
THX
21grams
    50
21grams  
   Dec 6, 2016
@airqj
@VampireSH
对啊, 7.1 貌似不行了,怎么设都有个叉
KyonLi
    51
KyonLi  
   Dec 6, 2016
21grams
    52
21grams  
   Dec 6, 2016   2
@VampireSH
@airqj
@KyonLi

7.1.1 的方法:
adb shell "settings put global captive_portal_https_url https://captive.v2ex.co/generate_204"
rainsho
    53
rainsho  
   Dec 7, 2016
@21grams tks ,昨天升了 7.1.1 ,成功消除叉叉
Wicheol
  &nsp; 54
Wicheol  
   Dec 8, 2016
今天下午失效了?
Livid
    55
Livid  
MOD
OP
PRO
   Dec 8, 2016 via Android
@Wicheol 最近没有任何异常。
Laygle
    56
Laygle  
   Dec 9, 2016
貌似失效了
zachX
    57
zachX  
   Dec 10, 2016
貌似最近有时候会失效?
zachX
    58
zachX  
   Dec 10, 2016   1
t/325630

找到原因了, 7.1.1 参考这个帖子
Livid
    59
Livid  
MOD
OP
PRO
   Dec 10, 2016
@Laygle
@zachX

谢谢,关于 Android 7.1.1 的新设置已经在附言中补充。
Showfom
    60
Showfom  
PRO
   Dec 11, 2016
可以试试我赞助的

adb shell "settings put global captive_portal_https_url https://204.io/generate_204";
reorx
    61
reorx  
   Jan 4, 2017
我都是直接关了的:

```
adb shell settings put global capive_portal_detection_enabled 0
```
milltronics
    62
milltronics  
   Jan 5, 2017
@xavierskip captive_portal_server 被自动改回的问题最后有没有解决?
我也遇到相同问题。
C0VN
    63
C0VN  
   Jan 5, 2017
@milltronics 没有解决。反正 www.qualcomm.cn 又没被墙。
rrfeng
    64
rrfeng  
   Feb 6, 2017
@Tink
Pixel 使用了 https://http204.sinaapp.com 这个之后,在办公室的 WiFi 环境下持续断网。回到家里 WiFi 就没有问题,其他 WiFi 也没有问题。 3G/4G 也没有问题。

一直怀疑是 AP 和 Pixel 兼容性有问题……

今天换了自己的 204 服务,结果就没问题了,一直没往这方面想。

可以查一下我们出口 IP 的访问记录吗?

124.65.149.46
lavazawinul
    65
lavazawinul  
   Feb 7, 2017
7.1.2 beta 又不行了?
lavazawinul
    66
lavazawinul  
   Feb 7, 2017
@lavazawinul 没了叹号,变成叉号了。
fenglipop29
    67
fenglipop29  
   Feb 12, 2017
发现叉叉要过一两分钟后才消失。
GavinHua
    68
GavinHua  
   Feb 16, 2017
@Livid captive.v2ex.co 打不开了
zlhdd108
    69
zlhdd108  
   Feb 16, 2017
好像有问题了,打不开,感叹号又出来了,换了一个地址就好了……
bruce55
    70
bruce55  
   Feb 16, 2017
>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

然后……东京打不开主站
Livid
    71
Livid  
MOD
OP
PRO
   Feb 16, 2017
@GavinHua
@zlhdd108

感谢反馈,已经做了调整,现在恢复了。
Livid
    72
Livid  
MOD
OP
PRO
   Feb 16, 2017
@bruce55 captive.v2ex.co 和主站在日本的流量策略刚刚已经做了调整,现在应该恢复了。谢谢反馈。
zlhdd108
    73
zlhdd108  
   Feb 16, 2017
@Showfom 貌似是美国的 ip ,不过访问速度很快啊,不知道是怎么优化的
ivanchou
    74
ivanchou  
   Feb 20, 2017
@Livid 貌似又不行了, 7.1.1
snail1126
    75
snail1126  
   Mar 16, 2017
@Livid 貌似今天不行了,用科学上网工具和 4G 网络都是感叹号
snail1126
    76
snail1126  
   Mar 16, 2017
提示 504 Gateway Time-out
@Livid
chenshaoju
    77
chenshaoju  
   Mar 16, 2017
http://captive.v2ex.co/generate_204

504 Gateway Time-out

nginx/1.11.9

@Livid
KevinHsiun
    78
KevinHsiun  
   Mar 16, 2017
今天不行了,出现感叹号。 504 Gateway Time-out @Livid
maodahua
    79
maodahua  
   Mar 16, 2017
今天早上是不是翻水水了哦
Livid
    80
Livid  
MOD
OP
PRO
   Mar 17, 2017   3
@snail1126
@chenshaoju
@KevinHsiun
@maodahua

因为供应商的网络问题,之前出现了一些故障。现在已经恢复。
chenshaoju
    81
chenshaoju  
   May 24, 2017   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";
wuzhizhemu569
    82
wuzhizhemu569  
   Jun 9, 2017
7.1.1 有效,多谢楼主。
loveq1991
    83
loveq1991  
   Jun 12, 2017
7.1.1 有效 +1 感谢大佬
noisyfox
    84
noisyfox  
   Jul 2, 2017   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 上下载。
vvtommy
    85
vvtommy  
   Jul 21, 2017
7.1.2 更改 captive portal http url 无效。如果关掉,肯定会影响正常的 captive portal 服务。
bclerdx
    86
bclerdx  
   Aug 13, 2017 via Android
现在正需要呢,感谢!
xiaojunzi
    87
xiaojunzi  
   Sep 5, 2017
最近连接老是出问题呀 经常叉号就回来了 等会又好了 是升级 8.0 的原因还是什么呢
zlhdd108
    88
zlhdd108  
   Dec 27, 2017
貌似又链接不上了哦
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
Livid
    89
Livid  
MOD
OP
PRO
   Dec 27, 2017
@zlhdd108 感谢反馈。马上解决。
zlhdd108
    90
zlhdd108  
   Dec 27, 2017
@Livid 辛苦了
Livid
    91
Livid  
MOD
OP
PRO
   Dec 27, 2017
@zlhdd108 已经做了切换。谢谢。
chenshaoju
    92
chenshaoju  
   Jan 3, 2018   1
@Livid 域名好像做了 DNS 轮询,有两个 IP,但是有一个服务器可能挂了,有时间的话请帮忙查看一下,谢谢。

Livid
    93
Livid  
MOD
OP
PRO
   Jan 4, 2018   1
@chenshaoju 非常感谢。那个 IP 确实有问题。已经调整到了一个更健壮的 CNAME。
chenshaoju
    94
chenshaoju  
   Apr 26, 2018   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
Livid
    95
Livid  
MOD
OP
PRO
   Apr 26, 2018
@chenshaoju 谢谢。最近我们会为这个地址加上 IPv6 支持。
fenglipop29
    96
fenglipop29  
   May 10, 2018
有没有人使用的移动手机卡?我发现我在开移动 4g 的时候会有感叹号,但是打开 wifi 接电信网络的时候就完全正常

volks
    97
volks  
   Aug 4, 2018
改成 google.cn 的地址以后 GCM 可以收到推送了,是我的错觉吗……
JinChen
    98
JinChen  
   Oct 17, 2018
刚刚发现 Pixel Experience 也是用的 V2EX 的服务
EricInBj
    99
EricInBj  
   Nov 22, 2018
为啥设置完了 WIFI 图标上还是有 X 呢?
Android 8.1
通过 Fiddler 抓包看,已经是请求我指定的 gen_204 url 并且返回 204 了啊。
EricInBj
    100
EricInBj  
   Nov 22, 2018
把代理去掉 X 就没了。。