从Twitter归档直接消息

3
有没有办法下载自己的直接消息以进行归档? Twitter API限制调用最新的200个DM,这不能下载长时间对话的完整存档。 官方Twitter存档似乎根本不包含消息。大多数第三方服务(您可能不想让它们访问您的消息)将使用API,它们所能做的最好的事情就是经常轮询,以免错过200个DM的限制。
还有其他方法可以从Twitter获取消息吗?在网站上向后滚动似乎可以工作,但它们总是分几步加载旧消息,并且从那里复制和粘贴结果相当丑陋。
它不需要完整的Twitter API信息,只需处理、时间和消息(如果可能,可能还有媒体链接)应该可用。
2个回答

9
我创建了一个工具(https://github.com/Mincka/DMArchiver),可以下载我的直接消息,并能够下载上传的图片、视频和GIF(作为MP4格式)。由于它不依赖API,因此可以下载超过200条消息。该脚本只是模拟dimethylarginine所描述的“滚动方法”并解析结果。主要思路是通过调用以下URL进行循环请求,使用有效的auth_token cookie值进行身份验证并解析json响应:https://twitter.com/messages/with/conversation?id=1337&max_entry_id=1337

max_entry_id值在第一次请求中不是必需的。您需要使用响应中的min_entry_id变量值作为每个后续迭代中新的max_entry_id,以获取接下来的20条较旧的推文。当json响应中没有max_entry_id时,您位于线程的开头。

还需要一些标头才能从Twitter获得正确的响应:

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0'
'Accept': 'application/json, text/javascript, */*; q=0.01'
'X-Requested-With': 'XMLHttpRequest'

目前,该工具的输出仅以类似于IRC的对话形式提供,但我可能会在将来添加其他输出样式(如HTML,JSON,XML等)。


虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅链接的答案可能会失效。- 来自审查 - Liam
帖子已更新,包括算法和头文件的要求。 - Julien Ehrhart

0

很抱歉让这个帖子又活了起来,但我也在研究这个问题。据我所知,没有第三方应用程序可以做到这一点,但是通过查看Twitter的源代码,似乎只要稍加调整就可以将它们下载下来。我的“研究”表明,当您向上滚动时,它使用JS加载其上面的推文,使用类似于API的调用。如果您查看Chrome的网络日志,您应该能够看到它被调用的位置和调用的URL。虽然无法通过浏览器访问此内容,但如果有进展,我会告诉您。

很抱歉目前还没有什么答案 - 我只是发布这篇文章以便更新它,并不会忘记去做它。

更新-2016年10月5日-我已经成功下载了所有的Twitter私信。这一过程并不优雅,但它确实有效。它需要您将电脑开机过夜,并点击鼠标中键向上滚动您的私信。一旦完成(已达到第一个私信),您可以下载网页并随之下载您的私信。这会占用大量内存,所以请小心!我正在努力解析HTML,使其更易读而不是当前的混乱。


我也做了同样的事情。我猜你可以观察URL生成(ID似乎包含在HTML中),导出cookies,然后通过解析HTML,提取最旧的ID并生成一个URL来下载低ID的消息块。 如果你想尝试一下,Firefox开发者工具有一个选项“复制curl命令行”,它会将用户代理、cookies、引荐人、post-data等添加到命令行中以重现请求。 - allo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接