如何检查用户是否可以使用 Javascript 访问 YouTube

How to check if a user can access YouTube with Javascript

我需要以编程方式检查用户是否可以访问 YouTube,因为 YouTube 在世界某些地区被屏蔽。我需要能够在 JavaScript.

中执行此操作

我尝试过的: 1) 动态创建图像并将源设置为 YouTube 域中的已知图像 - 我 运行 在这里讨论 CORS 问题 2) 使用 XMLHttpRequest 创建一个简单的 GET 请求(同样的问题) 3) 查看 YouTube API.. 它似乎没有公开可以告诉我 GET 请求是否成功的方法.. 当然,所有调用都通过 https://www.googleapis.com/youtube/v3 which is not, strictly speaking, exactly the same as a request to http://www.youtube.com

我在这里明显遗漏了什么吗?将不胜感激任何和所有见解..

谢谢!

CORS 是 server-side header。如果你得到一个 CORS header,你正在访问 Youtube 的服务器,这些服务器正在响应 headers,这可能意味着 youtube 不是 "blocked"。

所以像这样的东西应该可以正常工作:

async function canAccessYoutube() {
      try {
        const request = await fetch(
          "https://www.youtube.com/",
          {
            mode: "no-cors"
          }
        );
        return true;
      } catch {
        return false;
      }
}

假设阻止是基于 DNS 的,您可以通过在自己的计算机上阻止 Youtube 来测试功能。如果您有 mac 或 linux 计算机,请将以下内容添加到您的 /etc/hosts 文件中:

0.0.0.0 youtube.com
0.0.0.0 www.youtube.com
::0 www.youtube.com
::0 youtube.com

您可能需要重新启动计算机才能生效。