抖音爬虫原理大揭秘

   日期:2024-11-07     作者:caijiyuan       评论:0    移动:http://ljhr2012.riyuangf.com/mobile/news/3467.html
核心提示:声明: 本文只做技术研究,请勿用于任何非法用途。最近有不少小伙伴投入短视频赛道,也出现不少第三方数据商,为大家提供抖音爬

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

抖音爬虫原理大揭秘

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

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

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

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

以抖音 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 等信息综合计算得出的(以上纯属瞎猜,请遵守当地法律)。

 
特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

举报收藏 0打赏 0评论 0
 
更多>同类最新资讯
0相关评论

相关文章
最新文章
推荐文章
推荐图文
最新资讯
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号