如何通过api获取github编辑问题的历史记录和问题评论?

时间:2019-08-26 13:24:17

标签: api github

我只找到用于获取问题列表,问题内容,​​问题注释列表和内容的api,没有问题内容编辑历史记录,没有问题注释编辑历史记录。

2 个答案:

答案 0 :(得分:3)

不,这目前不能完全通过 API 完成。

然而,如果我们对 GitHub 在 Web 界面中加载过去编辑的方式进行逆向工程,并进行一些抓取,我们可以在没有 API 的情况下完成同样的事情。不幸的是,这意味着我们没有 API 的可靠性 - GitHub 的 Web 界面可能随时更改,从而破坏我们的代码。但总比没有好!

所以,首先我们需要一个评论所有编辑的日志。让我们用评论 https://github.com/seisvelas/crypsee/issues/1#issue-874033952 来做这件事(来自为这个问题设置赏金的绅士提供的测试回购)。为了得到这个问题的评论日志,我们需要用'05:'对问题编号进行base64编码,然后在开头加上单词'Issue'。为什么是'05:'?我不知道。但它总是在那里,没有它就行不通。因此,我们将对字符串“05:Issue874033952”进行 base64 编码,从而得到 MDU6SXNzdWU4NzQwMzM5NTI=

太好了,现在我们将 MDU6SXNzdWU4NzQwMzM5NTI= 插入到此 URL 方案中:https://github.com/_render_node/{BASE64 ENCODING HERE}/comments/comment_edit_history_log,从而生成指向 https://github.com/_render_node/MDU6SXNzdWU4NzQwMzM5NTI=/comments/comment_edit_history_log

的链接

通过该链接,我们会看到编辑历史记录,但不会看到编辑内容本身:

screenshot of edit history

然而,这为我们提供了我们需要的信息!如果我们查看 HTML,我们会看到当前编辑之前的所有编辑都定义为带有该编辑链接的按钮:

<button 
    type="button" 
    class="btn-link dropdown-item p-2" 
    role="menuitem" 
    data-edit-history-url="/user_content_edits/MDE1OlVzZXJDb250ZW50RWRpdElzc3VlRWRpdDo1MzIxODcxNzE="
>

data-edit-history-url 指向的 URL 与在 Web 界面中点击查看过去的编辑时通过浏览器的网络选项卡加载的 URL 相同!

不幸的是,如果您尝试自行查看该页面,则会收到 404。它只能从 Web 界面查看。但这没问题,只需转到 Web 界面,查看其中一项编辑内容,然后复制它随附的标题即可。就我而言,我使用的是 Chromium,所以我只需在我的网络选项卡中找到编辑请求,右键单击并点击“复制为 Fetch 请求(nodejs)”和中提琴,这些标题我很高兴!< /p>

例如,对于我们一直在使用的评论,我提出该请求并返回一堆 HTML。原文编辑内容接近尾声:

      <ins><p class="rich-diff-level-zero">before edit</p></ins>

它来了!我可以编写一个脚本来自动执行此操作,但随后我会为您做所有事情:3 可以说,通过一天的巧妙组织的抓取工作,这大致是您查看这些修订所必须执行的操作。如果有人做出这样的工具,OSINT 社区肯定会非常感激!

答案 1 :(得分:0)

要查看github api的特性,最好阅读以下链接

获得答案的最佳来源:

https://docs.github.com/en/rest/reference/issues

检查您提到的问题,即上面链接中的 issue commentsedit history issue

据我所知,可以收到 issue comments,但我没有看到 edit history issue 部分

我还建议您查看以下 edit history issue 链接: https://github.com/isaacs/github/issues/954