分享一个 node.js 纯 http 请求的 twitter 爬虫思路

2021-08-20 10:20:12 +08:00
 SleepyRaven

本文仅阐述心路历程及简要思路,以供学习 node.js 及网络安全相关知识,请勿过度解读或用于非法用途。

动机

在 twitter 关注了很多小姐姐,但是每隔一段时间就会有“退网”的,推文直接清空或禁止查看。
这个时候的我就会很懊悔没有提前保存好所有影像资料。

检索

然后就去网上找各种现成的工具,发现大部分都是基于 python 的,或者模拟滚屏解析 html 的;
继续检索发现 twitter 提供了开发者 API,但是要申请,并且现在申请成功率很低。

探究

于是观察了一下 twitter 媒体页面的加载方式,发现以下几点:

思路

环境及工具:node.js, node-fetch, request, http-proxy, fs
流程:键入某 twitter 用户名 -> 先请求到 media 数量 -> 将数量修改至 media 请求的参数中 -> 发起 media 请求 -> 解析返回 json 中的 资源 uri -> 下载资源到本地

优势

结果

3381 次点击
所在节点    分享发现
25 条回复
kdwnil
2021-08-23 23:16:24 +08:00
@ybnsjl 这个 Bearer 是固定的,而且已经用了很多年了,至于那个 twint,用的是旧的搜索接口,同一个 guest-token 剩余次数是在返回头的 header 体现( x-rate-limit-remaining,timeline 是 180 请求 /15 分钟),刷新 guest-token 会重置,但长期超限会随缘丢 429 。
目前 timeline 的 api 限制只能获取最新的 800-900 条推文,再往下就空白了,老外们研究出用高级搜索绕,我就好奇楼主用了什么思路来突破这个限制,想学习个思路,结果这贴发出来也没更新,GitHub 的库只有个 readme,就很尴尬了
Te11UA
2021-12-17 15:13:27 +08:00
没看明白,那 python + reqeusts 不一样可以做吗?也是仅需一个 Python 环境
huai
2023-05-11 13:58:25 +08:00
@xgfan 请问现在还在用吗?我昨天刚申请了,照着教程做。不过一直提示没有权限,不知道是什么情况
SleepyRaven
2023-05-11 14:29:08 +08:00
@huai 你说的是开发者 API 吧,那个现在 basic 版已经不给查推文 list 了,要订阅才行
我这个帖子说的是 web 页面的 api ,有 v1 和 v2 的,用了好久了,但是几个月前限制了单次请求推文最大数量为 100 个了
huai
2023-05-11 14:33:04 +08:00
@SleepyRaven #24 嗯 对,开发者 API

你说的 web api 是指自己看网页请求,然后判断吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/796945

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX