爬虫进阶教程:抖音APP无水印视频批量下载

  • A+
所属分类:网络爬虫
摘要

本文为两类人准备:技术控和工具控。如果你是工具控,想简单方便地下载无水印的视频,那么可以使用第三方去水印平台,如果你是技术控,想要使用自己写的代码下载视频,那么可以使用本文的方法,用python写爬虫下载视频。

爬虫进阶教程:抖音APP无水印视频批量下载

一、前言

本文为两类人准备:技术控和工具控。

  • 如果你是工具控,想简单方便地下载无水印的视频,那么可以使用第三方去水印平台:

抖音短视频解析下载平台

  • 如果你是技术控,想要使用自己写的代码下载视频,那么可以使用本文的方法,用python写爬虫下载视频,最新开源项目:

Python3批量下载抖音无水印视频

本文的代码已经不是最新的,但是抓取思路就是如此,可以参考,代码可以直接运行使用,持续维护中

更新日志

  • 2018.5.23:github代码已经修复无法下载问题。
  • 2018.7.17:github代码已经修复参数验证问题。
  • 2018.11.07:api更新

二、实战背景

抖音越来越火,感觉它有毒,越刷越上瘾,总感觉下一个视频一定会更精彩,根本停不下来。想将抖音里喜欢的小哥哥/小姐姐的视频全部存到电脑硬盘里该如何操作?不想有抖音的视频水印该如何处理?

当初写完代码的截屏:

爬虫进阶教程:抖音APP无水印视频批量下载

三、实战

首先,希望你已经具备手机APP抓包分析的能力,如果不会请去自行学习:点击跳转

1、带水印视频下载

先说说带水印的视频如何抓去吧。在定好爬取目标的时候,我们应该知道自己需要那些步骤完成这项任务。比如本文中提到的任务:抖音APP固定用户的视频批量下载

思考过程:

  • 想要批量下载视频首先要获得这些视频的链接;
  • 想要获得这些视频链接可以通过用户的主页进行查看,想进用户主页,我得知道用户主页链接;
  • 用户主页链接可以通过抖音APP的搜索功能获取,那么搜索功能接口如何获取?当然是抓包看看喽!

瞧,这样思考下来,问题是不是梳理的很清楚?

搜索接口:

那么接下来就是抓包分析了,抓包过程请自行尝试。步骤是这样的:

  • 配置好Fiddler,即确定Fiddler可以对手机APP进行抓包;
  • 在手机APP搜索框中输入用户信息,点击搜索
  • 在Fiddler找到搜索接口;
  • 分析这个接口传递参数规则;
  • 写代码生成相应查询接口。

通过分析你会发现,我们通过搜索接口返回的JSON数据可以找到用户主页信息,接下里用同样的方法抓取主页用户信息再分析一波,这时候就遇到问题了,你会发现用户主页链接使用了as和cp参数进行了加密,这该如何是好?比如链接如下:

上述链接省略号部分是一些手机信息,这部分不是必须参数,可以省略。user_id是用户id可以通过上个搜索接口获取,count是用户视频数量,同样可以通过上个搜索接口获取。那最后的as和cp参数怎么办?

我没有逆向抖音APP,就是小小测试了一下,看看能不能绕过这个加密接口?抖音APP自带视频分享功能,分享链接格式如下:

中间参数都不重要,在此省略。www.douyin.com域名下存放的是分享的视频,那么这个用户主页信息是否可以通过这个域名进行访问呢?小小测试一下你会发现,完全没有问题!

这就是没有加密的接口,惊不惊喜,意不意外?根据这个用户主页接口,我们就可以轻松获取用户主页所有的视频链接了。

2、无水印视频下载

方法一:

无水印视频下载很简单,有一个通用的方法,就是使用去水印平台即可。

我使用的去水印平台是:http://douyin.iiilab.com/

在输入框中输入视频链接点击视频解析,就可以获得无水印视频链接。

这个网站当初我写代码的时候是好使的,当初用这个网站下了一些无水印视频,不过写这篇文章的时候发现这个取水印平台无法正常解析了,等它修复好了再用这个功能吧。

这个平台不仅包括抖音视频去水印,还支持火山、快手、陌陌、美拍等无水印视频。所以做一个这个网站的接口还是很合适的。

简单测试了一下,这个网站的API是需要付费解析的,如果通过模拟请求的方式有些困难,因此决定上浏览器模拟器Splinter。

Splinter是个好东西,跟Selenium使用类似,它的配置可以参考我的早期Selenium文章:http://blog.csdn.net/c406495762/article/details/72331737

Splinter有个很详细的英文文档:http://splinter.readthedocs.io/en/latest/

这里使用方法就不累述,不过有一点可以说的是,我们可以配置headless参数,来将Splinter配置为无头浏览器,啥事无头浏览器呢?就是运行Splinter不调出浏览器界面,直接在后台模拟各种请求,很是方便。

这部分的代码很简单,无非就是填充元素,确定解析按钮位置,点击按钮,获取视频下载链接即可。这点小问题,就自行分析吧。

整体代码:

方法二:

这个方法是通过网友@羽葵的反馈得知的,对下载链接直接修改即可得到无水印下载链接。

方法简单粗暴,很好用。好处就是处理速度飞快,缺点是这种方法通用性不强,不同视频发布平台的打码方法可能有不同,需要自行分析。

四、总结

玩爬虫的日子还是很有意思的,好久没有那种舒爽感了。还有,找工作也是蛮心累的事。

更多实战源码,请关注我的Github:https://github.com/Jack-Cherish/python-spider

Jack Cui

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:167   其中:访客  90   博主  77

    • avatar mohican 来自天朝的朋友 谷歌浏览器 Windows 10 中国 移动 1

      加油( •̀ ω •́ )y

        • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器  Android 8.0.0 MIX 2 Build/OPR1.170623.027 辽宁省沈阳市 联通

          @mohican 感谢支持😊

            • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市龙岗区 电信 3

              @Jack Cui 楼主,现在我用fiddler看不到接口啊,这可怎么办,是我方法有问题吗?

                • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                  @jerry Fiddler能抓到手机浏览器的信息吗?如果能,抓不到抖音的,说明有新的反爬虫加进去了,直接去Github搜下接口吧。我的github也有最新的,应该好用。

                    • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市龙岗区 电信 3

                      @Jack Cui 确实是加了反爬虫的程序进去,我爬快手的视频都很顺,在抖音上爬真的很费劲,分析了分享个人主页链接,在继续分析了单个视频分享链接,总是找不全参数,mid都不知道在哪里来的,很伤脑筋,,,楼主您提供的接口怎么用哦

                      • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市龙岗区 电信 3

                        @Jack Cui 楼主大人,有时间爬一下抖音吧,发现难度比以前大了,这可咋办哦

                      • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                        @jerry 在github有的,你去看下,写好程序了,直接运行就行。
                        还有其他人免费开放的接口,在issue里,有提到。

                        • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                          @jerry https://github.com/Jack-Cherish/python-spider/tree/master/douyin
                          你看下还能用不。

                            • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市龙岗区 电信 3

                              @Jack Cui 哇,楼主很强大,好厉害啊,这都能爬出来,签名我得学学了,才开始玩python没多久…….学到了很厉害的技术…
                              我发现下载速度很慢,这个是怎么回事哦?

                              • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市龙岗区 电信 3

                                @Jack Cui 1个视频下好几分钟了,还没下完…….速度能控制么….维包子视频好好看,就是下不下来,太慢了

                              • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                                @jerry 下载速度慢,可能是抖音官方有所针对吧。

                                • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                                  @jerry 一个视频好几分钟,那就是有问题了,估计又更新的什么新反爬,还没研究。

                                    • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市龙岗区 电信 3

                                      @Jack Cui 抖音这么强大,但我觉得还是楼主强大,静候楼主研究出来怎么提速 :mrgreen:

                              • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                                @jerry感谢支持,常来逛逛。 :wink:

                                  • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市龙岗区 电信 3

                                    @Jack Cui 是你让我发现了python是这么强大,太厉害了.偶像

                                      • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市龙岗区 电信 3

                                        @jerry 评论我的芯好累

                                          • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                                            @jerry 呃,这也太慢了,我得等11月份有时间吧,到时候看看。

                                              • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 10 广东省深圳市龙岗区 电信 3

                                                @Jack Cui 强大的楼主,有什么办法能不让他限速呢,我还没有思路怎么解决这个问题…

                                              • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                                                @jerry 我没时间看,我暂时也没有,等后面的吧。有时间了才能看,最近太忙。

                                                  • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 7 广东省深圳市 特区报网络 3

                                                    @Jack Cui 最近还忙吗

                                                • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                                                  @jerry 忙毕业啊,不过快了。

                                                    • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 7 广东省深圳市 特区报网络 3

                                                      @Jack Cui 还没毕业就这么厉害,出来工作肯定大大大牛

                                                        • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器  Android 8.0.0 MIX 2 Build/OPR1.170623.027 辽宁省沈阳市 联通GSM/WCDMA/LTE共用出口

                                                          @jerry 哈哈,吉言。github又更新了。

                                                        • avatar jerry 来自天朝的朋友 谷歌浏览器 Windows 7 广东省深圳市 特区报网络 3

                                                          @Jack Cui 膜拜啊,一大早差点睡着,跑了下新的代码,杠杆的啊,真棒!!!!!!

                                                    • avatar 邓达 来自天朝的朋友 谷歌浏览器 Windows 10 湖北省武汉市 电信 0

                                                      node.js: https://nodejs.org/已经安装
                                                      process = Popen([‘node’, ‘fuck-byted-acrawler.js’, str(uid)], stdout=PIPE, stderr=PIPE)报错
                                                      FileNotFoundError: [WinError 2] 系统找不到指定的文件。
                                                      请问一下fuck-byted-acrawler.js需要下载吗?放在哪个文件夹?
                                                      麻烦大神解答下。。。。

                                                        • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                                                          @邓达 需要下载,放在相同目录下即可。用这个就行:
                                                          https://github.com/Jack-Cherish/python-spider/blob/master/douyin/douyin_appsign.py

                                                        • avatar xiaozhou 来自天朝的朋友 谷歌浏览器 Windows 10 四川省成都市 电信 0

                                                          博主,我代理了fiddler后手机浏览器能用,抖音不能用,好像就没网一样,手机用的ios系统

                                                            • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器  Android 8.0.0 MIX 2 Build/OPR1.170623.027 辽宁省沈阳市 联通GSM/WCDMA/LTE共用出口

                                                              @xiaozhou 现在可能加反扒了,直接用我github代码吧,能用。

                                                            • avatar xin 来自天朝的朋友 谷歌浏览器 Windows 10 四川省成都市 移动 0

                                                              JS签名下载中
                                                              请先安装 node.js: https://nodejs.org/
                                                              楼主,问下 它为什么一直显示这个呢?

                                                                • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                                                                  @xin 你安装node.js了吗?

                                                                    • avatar 没有名字了 来自天朝的朋友 谷歌浏览器 Windows 7 北京市朝阳区 联通 0

                                                                      @Jack Cui 楼主,安装了node.js之后,为什么还是还是提示要安装呢?

                                                                        • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                                                                          @没有名字了 环境变量变量配置好了吗?

                                                                    • avatar pmac 来自天朝的朋友 谷歌浏览器 Windows 10 浙江省温州市 电信 0

                                                                      2018-11-6不能使用了,闪退

                                                                        • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 7 辽宁省沈阳市 东北大学三舍南(研究生)

                                                                          @pmac 有人测试还是好使的。没有报错吗?

                                                                          • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器  Android 8.0.0 MIX 2 Build/OPR1.170623.027 辽宁省沈阳市 联通GSM/WCDMA/LTE共用出口

                                                                            @pmac 已更新。

                                                                          • avatar axepe 来自天朝的朋友 谷歌浏览器 Windows 10 福建省厦门市 联通 1

                                                                            还没毕业 ?

                                                                            • avatar axepe 来自天朝的朋友 谷歌浏览器 Windows 10 福建省厦门市 联通 1

                                                                              Traceback (most recent call last):
                                                                              File “douyin_pro.py”, line 2, in
                                                                              from splinter.driver.webdriver.chrome import Options, Chrome
                                                                              ModuleNotFoundError: No module named ‘splinter’
                                                                              这个错误如何解决啊 ?

                                                                                • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 10 辽宁省沈阳市 联通

                                                                                  @axepe 你没有安装splinter。安装一下呗。

                                                                                • avatar 奇迹 来自天朝的朋友 谷歌浏览器 Windows 8.1 广东省深圳市 联通 1

                                                                                  点个赞,太优秀了,太厉害了,佩服佩服,我也得好好学学python了,多好玩的东西啊

                                                                                    • avatar Jack Cui Admin 来自天朝的朋友 谷歌浏览器 Windows 10 辽宁省沈阳市 联通

                                                                                      @奇迹 加油,感谢支持。

                                                                                    • avatar 奇迹 来自天朝的朋友 谷歌浏览器 Windows 8.1 广东省深圳市 联通 1

                                                                                      啥时候做个多线程的 就更棒了