我不希望很多人知道这一点,但是有没有办法检查 Scratch 项目 ID 是否属于共享项目?例如,项目 ID3是一个实际项目,但不共享 - 而 ID399293697是共享的。那么我如何使用 JavaScript 来查看这些是否共享呢?
我搜索了有关 Scratch API 的 wiki 文章 https://en.scratch-wiki.info/wiki/Scratch_API,但这没有帮助。
那里提到的唯一有用的端点需要您知道项目的所有者。
通过实验,我发现这些终点是有效的。
- https://api.scratch.mit.edu/projects/3 https://api.scratch.mit.edu/projects/3
- https://api.scratch.mit.edu/projects/399293697 https://api.scratch.mit.edu/projects/399293697
第一个返回 HTTP 404(未找到),第二个返回 HTTP 200(正常)以及有关项目的详细信息。
Notes:
- 我认为没有办法区分非共享项目和不存在的项目;它们都产生 404。
- 我认为您无法从 Web 浏览器中运行的 JavaScript 直接访问这些端点,因为同源策略 https://en.wikipedia.org/wiki/Same-origin_policy。在您自己的浏览器上,您可以暂时关闭它 https://stackoverflow.com/questions/3102819/disable-same-origin-policy-in-chrome。对于更具结构性的解决方案,请使用CORS代理 https://stackoverflow.com/questions/43262121/trying-to-use-fetch-and-pass-in-mode-no-cors.
下面是一个 JavaScript 示例,用于测试单个项目 ID 是否存在。它用yacdn.org https://ovsoinc.github.io/yacdn.org/,众多之一免费 CORS 代理 https://nordicapis.com/10-free-to-use-cors-proxies/.
这只是一个概念证明。我不能保证它适用于大规模查询;许多免费代理会限制您的流量。托管您自己的代理可能会更好。
function TestProjectId() {
const id = document.getElementById('projectId').value;
const url = 'https://yacdn.org/proxy/https://api.scratch.mit.edu/projects/' + id;
fetch(url, {method: 'HEAD'})
.then(response => { document.getElementById('answer').innerHTML = response.ok; });
}
<input type="text" id="projectId" value="399293697" />
<button onclick="TestProjectId()">Test it!</button>
<div id="answer">(answer will appear here)</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)