Shields.io 无法获取 Discourse 统计 API 数据

大家好,

我们的仓库中一直使用 Discourse 徽章,但最近它停止工作了。

如果您访问 404: badge not found 并选择任意一个 Discourse 徽章,输入您的 Discourse 域名地址,即可显示带有正确统计数据的徽章。您可以尝试使用 meta.discourse.org 进行测试。

然而,当我们输入我们的 Discourse 主机地址(https://discuss.grakn.ai)时,无论统计类型如何,也无论是 HTTP 还是 HTTPS,返回结果始终为“无效(invalid)”。

讨论论坛

当主机未找到时,Shields.io 会返回“无法访问(inaccessible)”。因此,我们推测“无效”意味着主机可访问,但存在权限问题或返回了无效响应。

是否可能是最近的更新或升级破坏了 Shields.io 所使用的 Discourse 统计数据 API?

非常感谢!

在我的网站上它能正常工作,也许你没有正确设置协议?或者 Grakn Discourse 有某种修改导致该端点失效。

imagen

您可能需要向 Shields.io 咨询该问题。在我们测试的所有其他网站中,它都能正常工作,因此这不是我们的 bug。

@marianord 这正是我的疑问:你提到的“协议”在哪里?如何配置它们?我并未更改任何设置。

@gerhard 既然 shields.io 在其他 Discourse 站点上能正常工作,那么问题似乎不太可能出在他们那边。除非他们未能正确读取我们站点统计数据的输出——但我们如何确认这一点呢?Discourse 用于查询统计数据的端点是什么?或许我们应该从这里开始排查?

我在提及 httphttps 的区别。

发生此问题是因为我们的 Discourse 安装阻止了 Shields.io 的用户代理(Shields.io)。该设置名为白名单爬虫用户代理,可在以下位置编辑:
<discourse_server>/admin/site_settings/category/all_results?filter=crawler

很有趣!感谢 @max_grakn!我们最近确实将 Googlebot 加入了白名单,我认为这可能是原因所在。

@codinghorror 我们是否应该同时使用黑名单和白名单?也就是说,如果你将某些内容加入白名单,是否意味着其他所有内容都被列入黑名单(从而使黑名单变得多余)?

不,爬虫白名单非常危险,应严格按照帮助文本中的说明谨慎使用。

允许访问站点的网络爬虫的用户代理。警告!设置此项将禁止所有未在此列出的爬虫!

嗨,我在收到无效数据时也遇到了同样的问题……你有什么想法吗?

现在没问题了,需要在以下位置启用匿名统计:

管理 → 设置 → 其他 → 共享匿名统计 = 已启用

现在 shields.io 也正常了。

我遇到了同样的问题,但匿名统计信息已启用
:cry:

[![Racket Discourse](upload://6fa5jbSn04vRLXdubAYmFJt5emf.svg)]

[Racket Discourse]

相关内容:

这是因为一些字段已从单数形式重命名为复数形式。

topic_counttopics_count
post_countposts_count
user_countusers_count
like_countlikes_count

有人需要在此处修改代码以回退到复数形式:

这仍然是坏的——有人能用吗?

![Racket Discourse](upload://7asTK98zfWLXRebm11uEN3KPM5N.svg)

几天前有一个拉取请求被打开:

但很自然地,这个更改给 shields.io 带来了支持两个版本的负担(我猜是永久性的),因为不能保证任何给定的 Discourse 实例已经更新或未更新,所以不像更改为复数那么简单。