V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
V2EX  ›  Android

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

  Livid · 2016-09-04 21:58:42 +08:00 · 337861 次点击
这是一个创建于 2963 天前的主题,其中的信息可能已经有所发展或是发生改变。

最近,由于 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
第 1 条附言  ·  2016-12-10 17:38:29 +08:00

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

adb shell "settings put global captive_portal_https_url https://captive.v2ex.co/generate_204"; 
第 2 条附言  ·  2017-06-09 11:02:40 +08:00

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

http://clients1.google.com/generate_204

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

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

http://captive.v2ex.co/generate_204

你如果直接访问 captive.v2ex.com 的话确实是 301 ,这是对的。
xavierskip
    15
xavierskip  
   2016-09-04 23:54:18 +08:00
刚好,我在我手机上查看了一下设置 `settings get global captive_portal_server ` 居然不知道什么时候被设置成了 www.qualcomm.cn 高通公司的中国官网, WTF ,明明我一直设置为 g.cn 的,于是又换回来了。
GoopleXD
    16
GoopleXD  
   2016-09-05 00:23:42 +08:00
/system/bin/sh: /system/bin/settings: /bin/sh: No such file or directory
这个怎么办?
lance6716
    17
lance6716  
   2016-09-05 00:31:35 +08:00 via Android
@xavierskip 我也是这样…目测每次重启都会重置的
ynyounuo
    18
ynyounuo  
   2016-09-05 00:47:25 +08:00
@GoopleXD
进去 adb shell 了之后,就不需要加「 adb shell 」的前缀了,直接用「 settings blah blah 」就行。
GoopleXD
    19
GoopleXD  
   2016-09-05 00:58:14 +08:00
@ynyounuo 我在手机终端上同样不能用 setting 命令,应该是 rom 有问题 能不能直接手动修改文档来修改 global captive_portal_server?
Lentin
    20
Lentin  
   2016-09-05 08:33:35 +08:00
@xavierskip 鸟笼官网的地址也能当作验证用啊= =
hewwcn
    21
hewwcn  
   2016-09-05 08:36:37 +08:00
xujialiang
    22
xujialiang  
   2016-09-05 08:45:23 +08:00 via iPhone
@Livid get ~~~~
pmgh10
    23
pmgh10  
   2016-09-05 09:20:05 +08:00 via Android
站长提供的都是通用好方法,感谢!
breaklayer
    24
breaklayer  
   2016-09-05 09:32:38 +08:00
我用的是这个: 5.0.appinn.com
nashxk
    25
nashxk  
   2016-09-05 11:49:01 +08:00
Perfect !现在用之前的 www.v2ex.com 还是可以的。。
vitovan
    26
vitovan  
   2016-09-05 12:03:05 +08:00
感谢!
wenymedia
    27
wenymedia  
   2016-09-05 12:11:18 +08:00   ❤️ 1
mokee 的 ROM 用的 v2 的检测地址 影响范围还真不小...
mine260309
    28
mine260309  
   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
faywong8888
    29
faywong8888  
   2016-09-05 23:09:58 +08:00
It works!
Vicer
    30
Vicer  
   2016-09-06 07:28:46 +08:00 via Android
Get it!
EricInBj
    31
EricInBj  
   2016-09-06 15:08:00 +08:00
@kyze8439690 感谢, google.cn 的速度比较快
Love4Taylor
    32
Love4Taylor  
   2016-09-06 19:42:09 +08:00
@wenymedia ? mokee 不是自己有么
wenymedia
    33
wenymedia  
   2016-09-07 12:28:04 +08:00 via Android
@Love4Taylor mokee 前两天公告里 之前 merge 一个有用 v2 版本分支……
Showfom
    34
Showfom  
   2016-09-10 17:26:16 +08:00
Nexus 5X 终于到了,顺手已经改了 v2 的 嘿嘿 准备自己搭建个去
chenshaoju
    35
chenshaoju  
   2016-09-18 18:37:42 +08:00
我说怎么之前的地址不工作了,抓包看了一下返回了 301 ,搜了一下原帖,原来换了。。。

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

电信和联通默认都没叹号

移动有叹号
airqj
    40
airqj  
   2016-10-21 18:53:27 +08:00
7.1.1 beta 按照命令设置无效.....
langjun
    41
langjun  
   2016-10-31 10:39:30 +08:00
wow..
isbase
    42
isbase  
   2016-11-03 22:13:30 +08:00 via Android
@mimzy 多谢,用了好久 JuiceSSH ,竟然没注意到可以登录 local shell
VampireSH
    43
VampireSH  
   2016-11-23 15:42:54 +08:00 via Android
@airqj 咱也是,无论设置什么都不行
Zohar
    44
Zohar  
   2016-11-30 17:51:06 +08:00 via Android   ❤️ 1
chenyiping1995
    45
chenyiping1995  
   2016-12-03 22:19:49 +08:00
不好意思挖个坟(不知道是不是算?
证书到期了麻烦续一下谢谢。。。 Android 7.0 上不受信任的证书不能 pass
chenyiping1995
    46
chenyiping1995  
   2016-12-03 22:20:08 +08:00
kmahyyg
    47
kmahyyg  
   2016-12-04 00:51:07 +08:00 via Android
@Livid 请续签 let's encrypt.证书到期了
Livid
    48
Livid  
MOD
OP
   2016-12-04 10:37:33 +08:00
@chenyiping1995
@kmahyyg

刚才已经续上了。

抱歉,今天有一个自动脚本没有按照预期那样工作。
jasonchao
    49
jasonchao  
   2016-12-04 10:38:59 +08:00
THX
21grams
    50
21grams  
   2016-12-06 12:10:38 +08:00
@airqj
@VampireSH
对啊, 7.1 貌似不行了,怎么设都有个叉
KyonLi
    51
KyonLi  
   2016-12-06 12:27:38 +08:00
21grams
    52
21grams  
   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"
rainsho
    53
rainsho  
   2016-12-07 11:02:38 +08:00
@21grams tks ,昨天升了 7.1.1 ,成功消除叉叉
Wicheol
    54
Wicheol  
   2016-12-08 17:22:43 +08:00
今天下午失效了?
Livid
    55
Livid  
MOD
OP
   2016-12-08 18:39:34 +08:00 via Android
@Wicheol 最近没有任何异常。
Laygle
    56
Laygle  
   2016-12-09 13:58:18 +08:00
貌似失效了
zachX
    57
zachX  
   2016-12-10 11:21:00 +08:00
貌似最近有时候会失效?
zachX
    58
zachX  
   2016-12-10 11:38:34 +08:00   ❤️ 1
https://www.v2ex.com/t/325630

找到原因了, 7.1.1 参考这个帖子
Livid
    59
Livid  
MOD
OP
   2016-12-10 17:39:08 +08:00
@Laygle
@zachX

谢谢,关于 Android 7.1.1 的新设置已经在附言中补充。
Showfom
    60
Showfom  
   2016-12-11 03:50:05 +08:00
可以试试我赞助的

adb shell "settings put global captive_portal_https_url https://204.io/generate_204";
reorx
    61
reorx  
   2017-01-04 06:17:34 +08:00
我都是直接关了的:

```
adb shell settings put global captive_portal_detection_enabled 0
```
milltronics
    62
milltronics  
   2017-01-05 10:38:28 +08:00
@xavierskip captive_portal_server 被自动改回的问题最后有没有解决?
我也遇到相同问题。
xavierskip
    63
xavierskip  
   2017-01-05 13:01:34 +08:00
@milltronics 没有解决。反正 www.qualcomm.cn 又没被墙。
rrfeng
    64
rrfeng  
   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
lavazawinul
    65
lavazawinul  
   2017-02-07 14:36:14 +08:00
7.1.2 beta 又不行了?
lavazawinul
    66
lavazawinul  
   2017-02-07 14:36:46 +08:00
@lavazawinul 没了叹号,变成叉号了。
fenglipop29
    67
fenglipop29  
   2017-02-12 19:03:04 +08:00
发现叉叉要过一两分钟后才消失。
GavinHua
    68
GavinHua  
   2017-02-16 10:22:27 +08:00
@Livid captive.v2ex.co 打不开了
zlhdd108
    69
zlhdd108  
   2017-02-16 10:59:49 +08:00
好像有问题了,打不开,感叹号又出来了,换了一个地址就好了……
bruce55
    70
bruce55  
   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

然后……东京打不开主站
Livid
    71
Livid  
MOD
OP
   2017-02-16 12:10:23 +08:00
@GavinHua
@zlhdd108

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

504 Gateway Time-out

nginx/1.11.9

@Livid
KevinHsiun
    78
KevinHsiun  
   2017-03-16 12:09:14 +08:00
今天不行了,出现感叹号。 504 Gateway Time-out @Livid
maodahua
    79
maodahua  
   2017-03-16 20:27:51 +08:00
今天早上是不是翻水水了哦
Livid
    80
Livid  
MOD
OP
   2017-03-17 05:45:17 +08:00   ❤️ 3
@snail1126
@chenshaoju
@KevinHsiun
@maodahua

因为供应商的网络问题,之前出现了一些故障。现在已经恢复。
chenshaoju
    81
chenshaoju  
   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";
wuzhizhemu569
    82
wuzhizhemu569  
   2017-06-09 10:50:44 +08:00
7.1.1 有效,多谢楼主。
loveq1991
    83
loveq1991  
   2017-06-12 11:25:05 +08:00
7.1.1 有效 +1 感谢大佬
noisyfox
    84
noisyfox  
   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 上下载。
vvtommy
    85
vvtommy  
   2017-07-21 16:28:20 +08:00
7.1.2 更改 captive portal http url 无效。如果关掉,肯定会影响正常的 captive portal 服务。
bclerdx
    86
bclerdx  
   2017-08-13 23:23:50 +08:00 via Android
现在正需要呢,感谢!
xiaojunzi
    87
xiaojunzi  
   2017-09-05 13:57:28 +08:00
最近连接老是出问题呀 经常叉号就回来了 等会又好了 是升级 8.0 的原因还是什么呢
zlhdd108
    88
zlhdd108  
   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
Livid
    89
Livid  
MOD
OP
   2017-12-27 17:26:47 +08:00
@zlhdd108 感谢反馈。马上解决。
zlhdd108
    90
zlhdd108  
   2017-12-27 17:31:11 +08:00
@Livid 辛苦了
Livid
    91
Livid  
MOD
OP
   2017-12-27 17:35:54 +08:00
@zlhdd108 已经做了切换。谢谢。
chenshaoju
    92
chenshaoju  
   2018-01-03 23:46:24 +08:00   ❤️ 1
@Livid 域名好像做了 DNS 轮询,有两个 IP,但是有一个服务器可能挂了,有时间的话请帮忙查看一下,谢谢。

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

volks
    97
volks  
   2018-08-04 12:18:30 +08:00
改成 google.cn 的地址以后 GCM 可以收到推送了,是我的错觉吗……
JinChen
    98
JinChen  
   2018-10-17 21:07:50 +08:00
刚刚发现 Pixel Experience 也是用的 V2EX 的服务
EricInBj
    99
EricInBj  
   2018-11-22 13:43:19 +08:00
为啥设置完了 WIFI 图标上还是有 X 呢?
Android 8.1
通过 Fiddler 抓包看,已经是请求我指定的 gen_204 url 并且返回 204 了啊。
EricInBj
    100
EricInBj  
   2018-11-22 13:47:38 +08:00
把代理去掉 X 就没了。。
1  2  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1026 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 20:02 · PVG 04:02 · LAX 13:02 · JFK 16:02
Developed with CodeLauncher
♥ Do have faith in what you're doing.