javascript - 你如何检查一个 Scratch 项目是否通过它的 ID 共享?
问题描述
我不希望很多人知道这一点,但是有没有办法检查 Scratch 项目 ID 是否属于共享项目?例如,项目 ID 3是一个实际项目,但未共享 - 而 ID 399293697是共享的。那么如何查看这些是否共享或不使用 JavaScript 呢?
解决方案
我搜索了有关 Scratch API 的 wiki 文章,但这并没有帮助。那里提到的唯一有用的端点需要您知道项目的所有者。
通过实验,我发现这些端点是有效的。
第一个返回 HTTP 404(未找到),第二个返回 HTTP 200(OK)以及有关项目的详细信息。
笔记:
- 我认为没有办法区分非共享项目和不存在的项目;他们都产生404。
- 由于同源策略,我认为您不能直接从在 Web 浏览器中运行的 JavaScript 访问这些端点。在您自己的浏览器上,您可以暂时关闭它。对于更结构化的解决方案,请使用CORS 代理。
下面是一个测试单个项目 ID 是否存在的 JavaScript 示例。它使用yacdn.org,这是众多免费 CORS 代理之一。
这只是一个概念证明。我不能保证它适用于大规模查询;许多免费代理会限制您的流量。托管自己的代理可能会更好。
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>
推荐阅读
- python - Python中的多季节性时间序列分析
- javascript - 使用 JonintJS,页面加载后如何在画布上绘制图形?
- sql - 从具有多个值的另一个表中插入表
- angular - angular 2/5 获取动态表单的值
- c# - 将带有内联 CSS 的 HTML 字符串转换为 PDF
- c# - 我们应该使用 Azure 服务总线队列内置的 CorrelationId 属性还是 UserProperties?
- shell - 到达正确的手册页
- python - 将python中的数据框重塑为3D
- php - MySQL 完整性约束违规的 jQuery 警报 (Laravel)
- mongodb - 将本地字段设置为外部表中匹配文档的数量