分享好友 最新资讯首页 最新资讯分类 切换频道
抖音爬虫原理大揭秘
2024-11-07 23:17

声明: 本文只做技术研究,请勿用于任何非法用途。

抖音爬虫原理大揭秘

最近有不少小伙伴投入短视频赛道,也出现不少第三方数据商,为大家提供抖音爬虫数据。

小伙伴们有没有好奇过,这些数据是如何获取的,普通技术小白能否也拥有自己的抖音爬虫呢?

本文会全面解密抖音爬虫的幕后原理,不需要任何编程知识,还请耐心阅读。

在制作爬虫前,首先需要了解,爬虫数据是怎么获得的。

以抖音 APP 为例,我们从抖音上看视频,和我们从浏览器上访问网站原理是一样的。 都是通过标准的 HTTP 请求来交互。

那么什么是 HTTP 请求呢?

HTTP 请求示例

HTTP 请求其实非常简单,可以理解为规定好格式的一组文字消息。请求消息中一般包含三样东西:

  1. 请求网址 (URL),例如抖音 APP 后台网址

  2. 你要做的事情 (请求参数), 例如是浏览,点赞还是上传视频等

  3. 你的身份信息 (cookie) 和校验信息 (Token),表明你是谁,你请求合法吗

抖音服务器收到 HTTP 请求后,会先验证合法性,然后按照你的要求,配合你的身份和地理位置等,给你回复规定格式的文本消息。

我们以安卓 10.6 版首页推荐视频为例,来看一个真实的抖音请求流程:

抖音 HTTP 请求流程

上图是通过抓包软件抓取的首页推荐视频请求数据。可以看出,当你一打开抖音,APP 就会自动向抖音服务器发送一条 HTTP 请求消息。

图中蓝色箭头可以看出,请求是向 aweme-hl.snssdk.com/aweme/v2/fe… 这个网址发送的 (URL)。

黄色箭头标出该 HTTP 请求包含了地理位置信息 (请求参数),以及身份信息 (cookie)。

抖音服务器收到请求后,就知道你是谁,你在哪里,你要干什么。然后会将红色箭头中的视频推荐数据回复给你。

点开回复数据,可以看到其中包含了视频 ID,标题,描述,点赞量,评论等多种信息。

有的读者可能注意到一串 这样奇怪的数字,这其实是一种叫 UTF-8 的编码方式。

可以简单理解为每三组 xxx 组成一个中文字符。比如上面这串数字翻译过来就是 两个字。

抖音 APP 通过读取回复消息,就知道该给我们展示哪些视频了。

但此时并没有结束,APP 还要根据返回的视频 ID,额外做两次 HTTP 请求,以获得需要展示的视频数据和缩略图信息,这样才能真正给我们展示首页推荐视频。

小伙伴们读到这里,应该明白整个抖音数据的请求流程了。俗话说纸上得来终觉浅,我们就以抖音点赞为例,手把手教大家怎样抓取和查看一个真实的 HTTP 请求包。

首先,需要下载 HttpCanary 抓包软件,可以从 Google Play 或者 Apkpure 里下载。安装完成后,重启手机,就可以开始抓包了。

先打开抖音 APP,再打开 HttpCanary,开始抓取抖音数据。如下图所示:

HttpCanary 正在抓包

随便找个视频点赞,可以看到 HttpCanary 在不停的抓包。点开 HttpCanary,找带有 字样的请求包:

抖音点赞数据包

点开请求包,可以看到,这其实是一个普通 HTTP 报文,红线部分表示需要点赞的视频 ID。

抖音点赞数据包

请求信息中除了包含视频 ID 外,还包含了你的身份信息,这样抖音才知道这个视频是谁在点赞。

然后 APP 通过查看回复消息,判断点赞请求是否成功,如果成功,就可以将视频边上的小红心点亮了。

点赞回复

通过点赞数据包,我们可以清楚看到,抖音所有浏览,点赞,评论,发布视频等,其实都是通过一个个 HTTP 完成的。

讲了那么多 HTTP 请求原理,对于普通小白来说,我们怎样才能做一个属于自己的爬虫呢?

其实很简单,只要照猫画虎,复制抖音 HTTP 请求,再原样发送就可以。

比如我想获取推荐视频,只要复制抖音推荐视频的 HTTP 请求,再原样发送就可以拿到推荐数据了。

本节我们就以上文中的点赞数据为例,请大家亲手做一个自动点赞的爬虫。

让我们先回到抖音,把刚才那个视频的点赞取消,这样才能看到爬虫的最终效果。

进入 HttpCanary,找到刚才的点赞包,点击右上角分享按钮,并选择分享 cURL,如下图所示:

复制数据包

复制完成后,HttpCanary 会提示检测到一个 cURL 请求,选择执行即可。

粘贴数据包

可以看到,HttpCanary 发送了一模一样的点赞请求给抖音。点开查看回复数据,如果和上文的返回值一样,就表明你的点赞爬虫完成啦。

自动点赞爬虫

此时回到抖音 APP,查看我喜欢的视频,就可以看到刚才取消点赞的视频又回来了。

通过刚才的练习,可以看到,只要我们能原样复制抖音数据包,就可以拿到所有想要的数据。

例如,复制首页视频请求,我们就能拿到推荐视频的标题,说明,点赞数量,评论数量等各种各样的数据。

小伙伴们也许有疑问,我们怎样才能搜集全部抖音数据呢?鉴于目前抖音的火爆程度,想要全部收集完其实不太可能,也没有必要。

聪明的小伙伴一定想到了,我们只要向抖音不停发送上划请求,就可以搜集很多首页推荐数据了。

如果你想做的更全能一些,还可以复制查看单用户视频的请求,把所有热门账号的视频数据都采集下来,就基本能替代第三方数据商了。

此外,你还可以修改 HTTP 请求,比如在首页请求中修改不同的地理位置,就可以看到不同地区的推荐视频和同城视频了。

看到这里,相信很多小伙伴已经跃跃欲试,准备大干一番了。但是别急,程序员小哥哥们可不会轻易让你们得逞。如果大家能随意点赞评论的话,抖音生态系统早就被玩坏了。

那么难点在哪里呢?我们还是回到刚才的请求包上,仔细看下图:

其实抖音每一次 HTTP 请求,都会带上 x-khronos 和 x-gorgon 这两个参数。抖音会在每次请求中校验这两个参数,如果校验不通过,那么请求就无效啦。

这两个参数都干了什么呢?

第一个 ,是标识请求时间,采用 Unix 时间格式。比如 1586446631,表示离 1970 年 1 月 1 日 0 点 0 分过去 1586446631 秒,也就是 2020 年 4 月 9 日 23 点 37 分。如果抖音收到的请求时间离实际时间太远,就知道这个请求已经失效。

第二个 ,用来校验请求合法性。如果你在请求中篡改了任何数据,比如篡改了点赞 ID,或者身份信息 (cookie),这个请求都会被抖音查出是伪造的,就能有效防止用户乱刷数据了。

好奇宝宝们一定会问,这个 是怎么算出来的呢?理论上和法律上来说,只有抖音小哥哥们才知道。不过一般情况,都是通过请求时间,请求 URL 和 cookie 等信息综合计算得出的(以上纯属瞎猜,请遵守当地法律)。

最新文章
【系统架构设计】计算机网络
OSI/RM 结构模型 1977年,国际标准化组织为适应网络标准化发展的需求,制定了开放系统互联参考模型(Open System Interconnectio
全世界规模最大战争排名,第一名居然是清朝时期!
自打人类走上进化这条路,就想着法儿想要证明【一伙人就该被另一伙人支配】。古罗马角斗士时代一方有多大势力,就看他有多少人的
python tk随机内容生成器
MyRandom ran=new MyRandom();System.out.println(ran.nextString(1));System.out.println(ran.nextString(50, OnlyNum));System
ai自动写文章在线 在线写文章自动生成器
身为文案工作者,我深感写作之重要且充满挑战。如今,随着人工智能(AI)写作平台的出现,我的写作历程出现了巨大变革。在此,很
AI写系统性综述ChatGPT还远远不够未来百年能否实现
在科学研究的浩瀚海洋中,科研人员时常面临一个棘手的问题:如何有效整合和理解海量的科学文献。尽管网络的普及极大地丰富了文献
全球AI半导体技术排名:韩国强势第三,未来发展值得关注
近年来,人工智能(AI)技术的迅猛发展促进了相关硬件的创新,尤其是AI半导体的需求日益上升。根据最新的研究报告和韩国媒体的报
MVSO影视程序源码 影视自动采集_魔改超强SEO_自定义苹果cms资源站接口
?php// +----------------------------------------------------------------------// | ThinkPHP [ WE CAN DO IT JUST THINK ]/
多地楼市政策不断优化 房地产市场企稳态势渐明
原标题:多地楼市政策不断优化 房地产市场企稳态势渐明来源:人民网近日,海南省住房公积金管理局发布《关于调整优化住房公积金
新澳正版资料免费大全,词语作答释义解释汇总
随着互联网的普及和在线信息资源的丰富,人们对于各类资料的需求日益增长,在新时代,获取正版资料显得尤为重要,本文将介绍新澳
揭秘快速排名SEO软件,网站高效提升排名的秘密武器
快速排名SEO软件,是网站提升排名的得力助手。它通过优化关键词、内容布局和链接策略,帮助网站在搜索引擎中迅速提升排名,实现