上次写了用 Python 批量下载知乎视频的方式,这次分享用 Python 批量下载抖音个人主页的全部无水印视频,本文重点不是提供一个好用的脚本,而是讲述如何写出这样的脚本,正所谓授人以鱼,不如授人以渔,所谓的爬虫,基本都是这个套路。

思路

先说下思路,要批量下载视频,可以先尝试成功下载一个,确定没有水印,然后在写一个循环进行批量下载。

难点:下载一个视频可能很简单,但下载多个就稍微有点复杂,需要抓取多个视频对应的 url,抖音这块做了防爬措施,只允许手机上看到个人主页的视频列表,电脑端的网页却看不到,这就需要抓取手机的 https 包,这里借助 Burpsuite 进行抓包。

这里用到了 Burpsuite ,因此我把自己常用的 Burpsuite 2.1.06 专业版放在了网盘里面,公众号「Python七号」回复「burp」获取,下载后运行 start_burp.batsh start_burp.sh 即可一键启动,无需购买许可,非常方便。

爬取单个视频

  1. 找一个抖音视频链接,点击分享,复制链接,在电脑上用打开,然后打开开发者工具,点击 network 选项。

  2. 刷新,看接口,找到返回值里有播放地址的接口:

这里面有个 play_addr,内部有个 urllist,我们复制这个 urllist[0] 在浏览器打开,网站跳转到了真正的播放地址,同时可以看到下载的按钮:

下载这个视频,发现是带水印的,如何下载到不带水印的视频呢?网上搜索了下,方法就是将上述 urllist[0] 中的 playwm 改成 play 就可以了。

然后开始写代码,获取这个 urllist[0],并下载


def get(share_url) -> dict:"""share_url -> 抖音视频分享url返回格式 [{'url':'', 'title','format':'',},{}]"""data = []headers = {'accept': 'application/json','user-agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'}api = "https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={item_id}"rep = requests.get(share_url, headers=headers, timeout=10)if rep.ok:# item_iditem_id = re.findall(r'video/(\d+)', rep.url)if item_id:item_id = item_id[0]# video inforep = requests.get(api.format(item_id=item_id), headers=headers, timeout=10)if rep.ok and rep.json()["status_code"] == 0:info = rep.json()["item_list"][0]tmp = {}tmp["title"] = info["desc"]#去水印的视频链接play_url = info["video"]["play_addr"]["url_list"][0].replace('playwm', 'play')tmp["url"] = play_urltmp["format"] = 'mp4'data.append(tmp)return dataif __name__ =='__main__':videos = get('https://www.iesdouyin.com/share/video/6920538027345415431/?region=&mid=6920538030852885262&u_code=48&titleType=title&did=0&iid=0')for video in videos:downloader.download(video['url'],video['title'],video['format'],'./download')

这里 downloader.download 函数,与前文知乎视频下载 里的函数一样,这里就不贴代码了。

获取个人主页视频链接

前两步已经实现了单个抖音视频的无水印下载,现在我们要做的就是找到大量的这种链接,直接循环就可以了。

任意打开一个大 V 的个人主页,分享,复制链接,使用浏览器打开,一个视频也看不到,而使用抖音 App 就可以看到:

浏览器

抖音APP

说明抖音做了一定的限制,防止从浏览器看到多个视频的信息。这时就需要学会从手机 APP 来抓包,看看手机上的 http 请求是怎么发起的,然后使用程序来模拟。

我一直在用的 BurpSuite(下面简称 Burp) 非常好用,这里顺便分享下如何使用:

1、运行 Burp。

公众号「Python七号」回复「burp」获取,下载后运行 start_burp.batsh start_burp.sh 来启动 Burp,然后打开代理设置,绑定到运行 Burp 的机器 IP,如下图所示:

注意不要设置 ip 为 127.0.0.1,这样设置的话,只有本地请求可以使用代理,手机无法连接此代理。

2、手机设置代理。

手机与电脑连接同一 wifi,IPhone 的操作如下:然后进入设置-> 无线局域网 -> 点击同一 wifi 右边的 information 符号,然后下拉,点击配置代理,配置和 BurpSuite 一样的 ip 和端口。Android 的手机的设置也差不多。至此可以在 BurpSuite 上抓取手机的 http 流量。

3、手机下载 Burp 的证书,并设置信任。

  1. 手机浏览器 进入 http://burp。

  2. 点击 CA 下载证书。

  3. 设置->通用->描述文件->点击 PortSwigger CA->安装

  4. 设置->通用->关于本机->证书信任设置,将 BurpSuite 的证书开启

这样就可以抓取手机上发起的 https 包了。

4、设置 BurpSuite 中断。

这一步骤设置之后,手机上的请求会在这里阻塞,你可以放行选择放行,或修改数据包后放行,也可以发往 repeater,以便后续重放请求,因此来自前端的请求是不可信的。

现在打开手机上的抖音 App,这里便会出现大量的请求阻塞在这里,我们选择放行,会发现抖音 App 里的数据一步一步的出现。快刷到个人主页的视频之前,将请求发到 Repeater,如下图所示:

然后打开 BurpSuite 的 Repeater 选项卡,就可以看到刚才发过来的请求,这时我们选择重放,看数据,决定我们需要使用的接口,如下图所示:

发现这个接口满足请求,这里可以看到接口的 url,headers 的各种参数,headers 中的 User-Agent 参数,是区分客户端是浏览器还是 App 的重要标识,因此就可以写代码来模拟请求,进而获取需要的批量下载链接。

由于 url 中的参数非常多,有些是固定不变的,有些随着不同人的主页参数会发生变化,如果仅仅是自己使用,可以简单的通过正则表达式来提取这些 url 链接,然后进行批量下载就可以了。

如果是想写好一个脚本供别人使用,那么就需要做更多的工作,比如说,需要查看更多的 api,以便确定 url 及 headers 中的参数是如何获取或生成的,然后写脚本自动化这一过程,有些情况下,还涉及到加密混淆等反爬措施,这里就不再展开了,请感兴趣的读者自行探索。

最后的话

爬取视频的关键在于找到视频的播放地址,有了播放地址,即使不写代码,也可以使用浏览器下载,寻找播放地址还不够,要考虑是否能去水印,如果要批量下载,那就要知道如何获取更多的视频链接,在浏览器抓取不到的时候,考虑使用 BurpSuite 抓取手机的流量包,进一步提取接口的数据,或模拟手机请求,对搞爬虫的同学,BurpSuite 是一个瑞士军刀,非常实用。

如果本文对你有所帮助,请点个赞或再看吧,谢谢支持。

Python批量下载抖音大V主页视频相关推荐

  1. Python分析5000+抖音大V,发现大家都喜欢这类视频

    写在前面 最近,我在知乎上看到一个关于抖音的问题. 里面提到了,目前我国人均每天刷短视频110分钟. 1 看这数据,看来我又被平均了. 不过老实说,只要一打开抖音,确实是有一种停不下来的感觉- 所以还 ...

  2. Python分析5000+抖音大V,发现大家都喜欢这类视频!

    最近,我在知乎上看到一个关于抖音的问题. 里面提到了,目前我国人均每天刷短视频110分钟. 看这数据,看来我又被平均了. 不过老实说,只要一打开抖音,我确实是有一种停不下来的感觉- 所以还是少刷抖音, ...

  3. 用Python分析5000+抖音大V,粉丝最喜欢的视频类型是它

    作者 | 小F 来源 | 法纳斯特 头图 | CSDN下载自视觉中国 最近,小F在知乎上看到一个关于抖音的问题. 里面提到了,目前我国人均每天刷短视频110分钟. 看这数据,看来小F又被平均了. 不过 ...

  4. 强大的Python分析5000+抖音大V,几行代码发现大家都喜欢这类视频【源码分享】

    最近,小F在知乎上看到一个关于抖音的问题. 里面提到了,目前我国人均每天刷短视频110分钟. 看这数据,看来小F又被平均了. 不过老实说,只要一打开抖音,小F确实是有一种停不下来的感觉- 所以还是少刷 ...

  5. python批量下载抖音无水印视频,附软件

    网上很多那种抖音视频解析,去水印下载的网站,不过都只可以下单个,下下来大多数标题还是乱码.一点都不geek. 咱们懒人找资源的粉丝最大的优点就是懒,这种重复性的活python帮咱们搞定. 批量下载抖音 ...

  6. 抖音大V的视频是怎么制作出来的?

    不同的视频形式,有不同的视频剪辑软件. 下面给大家讲讲抖音大V中,最常见的4种视频形式是使用什么软件制作的,这4种视频形式分别为真人出镜.真人特效.手绘动画.二剪. 文章内容很干,强烈建议大家点赞.收 ...

  7. Python批量下载 抖音无水印视频!

    导读: 本文 介绍了如何使用简单的Python爬虫爬取抖音上你喜欢的拍客的所有视频(包含 有水印和 无水印两种 ). 代码已上传至公众号后台,回复: 抖音 即可获得. 一.获取你喜欢的拍客的视频url ...

  8. python之批量下载抖音视频

    python批量下载抖音视频 知识储备:博主是在Pycharm下进行的 文件夹:dou_ying 1:在文件夹doy_ying下新建第一个文件:dou_ying_video_download.py 代 ...

  9. 分析抖音大V视频,可视化显示数据,看看大家都喜欢哪些视频?

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于法纳斯特 ,作者小F 前言 最近,小F在知乎上看到一个关于抖音的问题. 里面提到了, ...

  10. 使用ffmpeg用图片批量合成抖音卡点短视频

    技术交流 使用ffmpeg用图片批量合成抖音卡点短视频 ffmpeg工具准备 图片和音乐文件准备 ffmpeg命令行合成图片 短视频合成的效果 使用ffmpeg用图片批量合成抖音卡点短视频 近期在研究 ...

最新文章

  1. Spring(07)——单例注入多例之lookup-method
  2. mysql show full_mysql: show full processlist 详解
  3. CloudCare容器技术白皮书
  4. 图论测试题(一)第一题:longest
  5. WebSocket剖析
  6. 数据结构与算法之二冒泡排序
  7. 宣布 Java 8 停止维护后,Oracle 又毙掉了 JavaOne!
  8. 刷排名软件使用中需要用到的seo基础知识
  9. 使用Zabbix监控Windows主机
  10. 免费开源的100套Echarts大屏数据可视化模板分享
  11. 湖大计算机考研跟南航比,省三也可以逆袭进入985大学?这49所自主招生高校都收省三!...
  12. html5 321数字倒计时,JS实现的网页倒计时数字时钟效果
  13. 数控编程之刀具点位的全套知识
  14. Python 自定义程序打包 --- face_recognition 篇
  15. 使用IntelliJ IDEA自动生成serialVersionUID
  16. 简单实现一个手持弹幕功能+文字抖动特效
  17. C++:实现量化Integration积分测试实例
  18. 基于FPGA的交通信号灯设计
  19. 醒也无聊 醉也无聊 梦也何曾到谢桥
  20. HTML(HBuilder)作业题8- 图片点击手风琴(jquery)

热门文章

  1. 【精彩文章】数学家论数学——数学的本质
  2. 企业如何安装linux软件下载,linux系统安装软件方法大全
  3. 虚拟机安装DOS系统步骤
  4. 视频课程:CMOS模拟集成电路版图设计
  5. 联想电脑安装黑苹果全教程
  6. 服务器安全证书过期怎么办,安全证书过期怎么办 网站安全证书失效处理【解决方法】...
  7. DEFCON 23|利用U盘60秒打开保险柜
  8. sqliteman安装错误
  9. 双方确认函_确认函格式范文
  10. linux下texlive的卸载,Linux 下 texlive 2018 的安装