Twint – 高效实用的 Twitter 爬取及 OSINT 工具

Twint是一款用 Python 编写的高级 Twitter 爬取工具,它可以在不使用 Twitter  API 的情况下从 Twitter 主页爬取 Tweets。

Twint 利用 Twitter 的搜索运算符,让你从特定用户中爬取 Tweets,爬取与特定主题、标签和趋势相关的 Tweets,或者从Tweets中整理出敏感信息,如电子邮件和电话号码;Twint 还可以对 Twitter 进行特殊的查询,让你在不需要任何认证、API、Selenium 或浏览器模拟的情况下,也可以爬取 Twitter 用户的关注者、用户喜欢的推文以及他们关注的人。

本文介绍如何安装和使用 Twint 来爬取某用户的全部/部分推文和 OSINT 信息,配置使用 Centos 7 + Finalshell,其它系统可参考步骤进行安装测试。

使用 Docker 安装 Twint

首先安装 Docker ,

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

检查是否安装成功,

systemctl status docker

然后创建项目文件夹并拉取 Twint 的 Dockerfile,

mkdir twint && cd twint
wget https://github.com/twintproject/twint/blob/master/Dockerfile

构建容器,

docker build -t twint .

启动容器,

docker run -i -t -p 5000:8080 twint

这样 Twint 的 Docker 容器就已经跑起来了,而且已经处在这个容器的命令行窗口,可以直接开始使用。具体如何使用放在下一节,这里继续介绍一些 Docker 的使用方式。

首先是如何退出容器,只需键入

exit

即可退回到当前系统工作目录。

然后看一下正在运行的 Docker 容器,

docker ps

把容器ID (CONTAINER ID)复制下来,以供后边使用,我这里的是 47c6e44e8826。

最后我们希望能重新进入容器的命令行进行操作,运行命令

docker exec -it 47c6e44e8826 bash

即可。

 

Twint 爬取功能

首先是最常用的爬取功能,首先我们来爬取一下 Twitter 著名“网红” Naval 的推文(企业家,投资人,火遍全网帖子 How to Get Rich (without getting lucky) 的作者),

他的 Twitter 主页链接是:

https://twitter.com/naval

最后面的 naval 就是他的用户名。我们爬取他的所有推文到一个 txt 文件,

twint -u naval -o file.txt

爬取完毕后生成的 file.txt 文件在这个容器中,使用以下命令将其导入到当前系统文件夹(或其它文件夹,可自定义),

sudo docker cp 47c6e44e8826:/root/file.txt .

然后使用 Finalshell 的文件下载功能将其下载到本地查看,

前面不带@的是Naval 的推文,带@的是他在推文下的回复。推文最后面的链接是推文地址,带图片、视频或链接才有,纯文本不带原推文链接。

还可以使用一些自定义参数定制爬取,

# 爬取某一年以前所有的推文
twint -u naval --year 2020

# 爬取某时间点之后的所有推文
twint -u naval --since "2015-12-20 20:30:15"

# 将爬取的内容导出到一个 csv 文件
twint -u naval -o file.csv --csv

上面是爬取某用户全部推文的操作。有时候我们需要知道某用户推文的特定内容,比如 Elon Musk 关于 Dogecoin 的推文,

twint -u elonmusk -s Dogecoin  -o file1.txt

这里就不下载了,直接在 Shell 里面查看,

cat file1.txt

看着 Elon Musk 对 Dogecoin 的评论或者说是“吹捧”,也无怪乎 Dogecoin 现在这么火了。

关于比特币的推文,

twint -u elonmusk -s BTC

大佬都是不炒币的?

Twint 也支持中文内容搜索爬取,如这里爬取阮一峰老师所有带“教程”的推文,

twint -u ruanyf -s 教程

很多知名的公司、机构、新闻、博客网站都有 Twitter 账户,他们的推文相当于一个 RSS 更新器,包含发布的所有文章或内容,这样就可以使用 Twint 按照我们需要的信息来爬取全部或部分内容。

Twint OSINT 功能

OSINT(Open-source intelligence),公开情报收集,指收集、分析公开的网络信息来进行决策的一门学问,如知道一个人的QQ号就知道他的QQ邮箱,知道手机号可以查看他是否有微信等等,具体解释详见 公开来源情报 – 维基百科

Twint 可以在某用户的推文中查找与电子邮箱和电话有关的信息,电子邮箱包括 email 这个关键词和邮件格式,如 ***@gmail 等,以上文的 Naval 为例,

twint -u naval --email --phone

可以发现 Naval 是有公开邮箱地址的。

Twint 还可以爬取 Twitter 用户的关注者、用户喜欢的推文以及他们关注的人,

# 爬取某用户的关注者
twint -u username --followers

# 爬取某用户关注的人
twint -u username --following

# 爬取某用户喜欢的推文
twint -u username --favorites

不过跑这个三个命令都会出现 CRITICAL:root:twint.feed:Follow:IndexError 类型的错误,很多用户在 Twint 的 GitHub 仓库提出了 Issues,希望作者能早日修复吧。

 

以上只是 Twint 的部分使用场景,使用 Twint 还可以导出爬取内容到数据库,自定义配置代理,爬取视频和图片,按照流行度爬取推文,爬取某推文的所有回复等等,所有这些功能只需要在基础命令上传递一些参数即可,所有命令可查看 Basic usage – Twint wiki。Twint 还可以作为一个 Python 模块以供 Python 使用者在代码中调用,对个人用户和开发者都十分友好,作者还计划推出桌面端的 App,届时使用将更加方便。

 

Twitter 的用户浏览逻辑偏向于更新,而不在于全面,因此 Twint 向我们提供了从整体获取信息的一个途径,如前面案例所示,至少进行“十分钟内,我要××的全部信息”,“某某如何看待×××”之类的研究是非常有效的,如果你有更多有趣的使用场景,欢迎在下面留言。

Twint
0 Shares:
发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

You May Also Like