如何检查用户是否可以使用 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
您可能需要重新启动计算机才能生效。
我需要以编程方式检查用户是否可以访问 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
您可能需要重新启动计算机才能生效。