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

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

  Livid · 325 天前 · 41107 次点击
这是一个创建于 325 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

http://clients1.google.com/generate_204

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

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

http://captive.v2ex.co/generate_204

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

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

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

电信和联通默认都没叹号

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

刚才已经续上了。

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

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

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

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

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

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

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

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

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

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

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

504 Gateway Time-out

nginx/1.11.9

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

因为供应商的网络问题,之前出现了一些故障。现在已经恢复。
    81
chenshaoju   63 天前   ♥ 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   47 天前
7.1.1 有效,多谢楼主。
    83
loveq1991   44 天前
7.1.1 有效 +1 感谢大佬
    84
noisyfox   24 天前   ♥ 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   5 天前
7.1.2 更改 captive portal http url 无效。如果关掉,肯定会影响正常的 captive portal 服务。
DigitalOcean
关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   594 人在线   最高记录 3541   ·  
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.7.5 · 82ms · UTC 18:49 · PVG 02:49 · LAX 11:49 · JFK 14:49
♥ Do have faith in what you're doing.
沪ICP备16043287号-1