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

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

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

最近,由于 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 条附言  ·  289 天前

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

adb shell "settings put global captive_portal_https_url https://captive.v2ex.co/generate_204"; 
第 2 条附言  ·  108 天前

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

http://clients1.google.com/generate_204

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

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

http://captive.v2ex.co/generate_204

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

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

电信和联通默认都没叹号

移动有叹号
    40
airqj   339 天前
7.1.1 beta 按照命令设置无效.....
    41
langjun   329 天前
wow..
    42
isbase   326 天前 via Android
@mimzy 多谢,用了好久 JuiceSSH ,竟然没注意到可以登录 local shell
    43
VampireSH   306 天前 via Android
@airqj 咱也是,无论设置什么都不行
    44
Zohar   299 天前 via Android   ♥ 1
    45
chenyiping1995   296 天前
不好意思挖个坟(不知道是不是算?
证书到期了麻烦续一下谢谢。。。 Android 7.0 上不受信任的证书不能 pass
    46
chenyiping1995   296 天前
    47
kmahyyg   296 天前 via Android
@Livid 请续签 let's encrypt.证书到期了
    48
Livid   V2EX Moderator   295 天前
@chenyiping1995
@kmahyyg

刚才已经续上了。

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

7.1.1 的方法:
adb shell "settings put global captive_portal_https_url https://captive.v2ex.co/generate_204";
    53
rainsho   292 天前
@21grams tks ,昨天升了 7.1.1 ,成功消除叉叉
    54
Wicheol   291 天前
今天下午失效了?
    55
Livid   V2EX Moderator   291 天前 via Android
@Wicheol 最近没有任何异常。
    56
Laygle   290 天前
貌似失效了
    57
zachX   289 天前
貌似最近有时候会失效?
    58
zachX   289 天前   ♥ 1
https://www.v2ex.com/t/325630

找到原因了, 7.1.1 参考这个帖子
    59
Livid   V2EX Moderator   289 天前
@Laygle
@zachX

谢谢,关于 Android 7.1.1 的新设置已经在附言中补充。
    60
Showfom   289 天前
可以试试我赞助的

adb shell "settings put global captive_portal_https_url https://204.io/generate_204";
    61
reorx   264 天前
我都是直接关了的:

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

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

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

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

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

然后……东京打不开主站
    71
Livid   V2EX Moderator   221 天前
@GavinHua
@zlhdd108

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

504 Gateway Time-out

nginx/1.11.9

@Livid
    78
KevinHsiun   193 天前
今天不行了,出现感叹号。 504 Gateway Time-out @Livid
    79
maodahua   193 天前
今天早上是不是翻水水了哦
    80
Livid   V2EX Moderator   192 天前   ♥ 3
@snail1126
@chenshaoju
@KevinHsiun
@maodahua

因为供应商的网络问题,之前出现了一些故障。现在已经恢复。
    81
chenshaoju   124 天前   ♥ 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";
    82
wuzhizhemu569   108 天前
7.1.1 有效,多谢楼主。
    83
loveq1991   105 天前
7.1.1 有效 +1 感谢大佬
    84
noisyfox   85 天前   ♥ 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 上下载。
    85
vvtommy   66 天前
7.1.2 更改 captive portal http url 无效。如果关掉,肯定会影响正常的 captive portal 服务。
    86
bclerdx   43 天前 via Android
现在正需要呢,感谢!
    87
xiaojunzi   20 天前
最近连接老是出问题呀 经常叉号就回来了 等会又好了 是升级 8.0 的原因还是什么呢
DigitalOcean
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   535 人在线   最高记录 3541   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.7.5 · 75ms · UTC 20:41 · PVG 04:41 · LAX 13:41 · JFK 16:41
♥ Do have faith in what you're doing.
沪ICP备16043287号-1