SukkaW / Koolshare-Clash

:cat: Run Clash Tunnel on Koolshare OpenWrt
https://koolclash.js.org
GNU General Public License v3.0
1.33k stars 241 forks source link

关于 YouTube 不能播放的问题 #56

Open SukkaW opened 5 years ago

SukkaW commented 5 years ago

36

使用 KoolClash 后 YouTube 不能播放属于已知、且可以稳定复现的问题。这个问题由上游 Clash 导致、与 KoolClash 无关。关于「切换节点后中断已建立的 TCP 连接」的相关提案已经向 Clash 开发者提出。如果你需要解决这个问题,请要求 Clash 开发者实现连接管理器等特性,或由你亲自向 Clash 提交 Pull Request 实现相关特性。

TL; DR

更换节点后,IP 不会实时更新。

复现步骤

问题分析

在更换节点后,Clash 不会终止任何现有的 TCP 连接,因此已经建立的 TCP 连接将会继续使用之前的节点。现代浏览器为了提升性能,都会复用并维持 TCP 连接,在刷新 www.youtube.com 时,与 www.youtube.com 建立的 TCP 连接一般不会重新建立,因此即使更换节点后,www.youtube.com 仍然在通过之前的节点;但是由于不同的视频、CDN 域名一般不同,因此会重新建立 TCP 连接,此时加载视频使用的是更换后的节点。由于请求 www.youtube.com 以及主站其它 API 和请求视频 CDN 的节点不同、IP 不同,触发了 YouTube 视频 CDN 的防盗链机制,阻止了视频的播放。这一防盗链机制可能由托管 Google 全球边缘节点的运营商部署、并非 Google / YouTube 的行为,因此在 YouTube 网页或客户端中可能不会出现防盗链相关提示。

解决方案

Dora21122020 commented 4 years ago

修复有望么?