如果看到特别感兴趣的抖音vlogger的视频,想全部dump下来,如何操作呢?下面介绍介绍如何使用python导出特定用户所有视频信息

抓包分析

当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢?  学习Python中有不明白推荐加入交流群号:790921645 群里有志同道合的小伙伴,互帮互助,  群里有不错的视频学习教程和PDF!

Chrome Deveploer Tools Chrome 浏览器开发者工具
在抖音APP端,复制vlogger主页地址, 比如: http://v.douyin.com/kGcU4y/ , 在PC端用chrome浏览器打卡,并模拟手机,这里选择iPhone, 然后把复制的主页地址,放到浏览器进行访问,页面跳转到 https://www.iesdouyin.com/share/user/110677980134

下拉主页, 选择Network=>XHR 选项卡, 看到类似请求
:authority: www.iesdouyin.com
:method: GET
:path: /web/api/v2/aweme/post/?user_id=110677980134&sec_uid=&count=21&max_cursor=1561112910000&aid=1128&_signature=3Xf-nxAQgGfUO4SKisB.Ld13.o&dytk=061ae6e81229e178146aa674327eba89
:scheme: https
accept: application/json
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9,en;q=0.8,ja;q=0.7,zh-TW;q=0.6,da;q=0.5
cookie: tt_webid=6690145457198417412; _ga=GA1.2.605400954.1557670882; _ba=BA0.2-20181226-5199e-GIJXgXk9ajNkyFhmv7Wy; _gid=GA1.2.1914501522.1562857517
referer: https://www.iesdouyin.com/share/user/110677980134
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
x-requested-with: XMLHttpRequest
复制代码
返回数据截图

通过分析ajax请求的URL https://www.iesdouyin.com/web/api/v2/aweme/post/?user_id=110677980134&sec_uid=&count=21&max_cursor=1559299764000&aid=1128&_signature=3Xf-nxAQgGfUO4SKisB.Ld13.o&dytk=061ae6e81229e178146aa674327eba89 得出请求参数主要包含:

字段 类型 说明
user_id int 抖音账号的ID
count int 返回的数据条数,就用默认值21
max_cursor int 请求的游标,每次请求带上上次请求返回的max_cursor
aid int 使用默认值11128
_signature string 每次请求带上的参数签名
dytk string 每次请求带上的一个参数
参数的获取方法:

https://www.iesdouyin.com/share/user/110677980134
(function() {
$(function(){
__M.require(‘douyin_falcon:page/reflow_user/index’).init({
uid: “110677980134”,
dytk: ‘061ae6e81229e178146aa674327eba89’
});
});
})();
复制代码
通过正则获取到此参数

_signature 获取比较复杂,抖音对前端的js代码进行了混淆压缩,不易直接分析出算法过程,不过可以执行签名算法代码,并返回对应的签名结果。
执行js代码的可以使用nodejs或者selenium webdriver,这里推荐使用selenium webdriver , nodejs的js执行环境与浏览器有区别,计算出的签名结果,并不能通过验证,selenium webdriver 可以调用本地浏览器,计算出的签名可以跟浏览器直接访问访问计算出的签名一致。
格式化之后的js代码,点击查看, 执行js方法 _bytedAcrawler.sign(“110677980134”) 对参数进行签名
代码实现导出主页视频列表

def get_user_video_list_by_uid(user_id, cursor=0):
url = 'https://www.iesdouyin.com/web/api/v2/aweme/post/?’
sign, dytk = signature(user_id)
tk_logger.info(“sign:%s,dytk:%s” % (sign, dytk))
if sign is None or dytk is None:
tk_logger.log(“sign [%s] or dytk [%s] is none” % (sign, dytk))
return None
headers = dict_merge(CHROME_HEADER, {
“Accept”: “application/json”,
“X-Requested-With”: “XMLHttpRequest”,
})
params = {
“user_id”: user_id,
“count”: “21”,
“max_cursor”: cursor,
“aid”: “1128”,
“_signature”: sign,
“dytk”: dytk
}
res = requests.get(url, headers=headers, params=params)
tk_logger.info(“request url: %s” % res.url)
content = res.content.decode(“utf8”)
jsn = json.loads(content)
return jsn
复制代码
获取的视频列表信息

获取视频信息代码片段

def get_video_detail_by_id(video_id):
url = “https://aweme-hl.snssdk.com/aweme/v1/aweme/detail/?version_code=6.5.0&pass-region=1&pass-route=1&js_sdk_version=1.16.2.7&app_name=aweme&vid=9D5F078E-A1A9-4F64-81C7-F89CA6A3B1DC&app_version=6.5.0&device_id=34712926793&channel=App Store&mcc_mnc=46011&aid=1128&screen_width=750&openudid=263bd93f02801d126ca004edccbff8f6e1b19f51&os_api=18∾=WIFI&os_version=12.3.1&device_platform=iphone&build_number=65014&device_type=iPhone9,1&iid=74239983401&idfa=F39B285A-4B4F-4874-9D7E-C728A892BF6D”
data = {“aweme_id”: video_id}
headers = {
“sdk-version”: “1”,
“x-Tt-Token”: “00fc1e7950db67b5f43a312e9265cdfee513ea70c36d918c871f3bb553347f3db50ffca143b8722327b345816a75efca071d”,
“User-Agent”: “Aweme 6.5.0 rv:65014 (iPhone; iOS 12.3.1; en_CN) Cronet”,
“Content-Type”: “application/x-www-form-urlencoded”,
“Cookie”: “tt_webid=6636348554880222728; __tea_sdk__user_unique_id=6636348554880222728; odin_tt=76d9b82d6e6f2ddfc99719a5b5d44a7d703cf977f0f7bddf8537f93920d57cb9ec33162ee47868b760f6b09e69209bb2f90bad220b75678af850a0dfa9f056e2; install_id=74239983401; ttreq=1$dab0516952a4157c0c11d4993533c09d6e45fc94; sid_guard=fc1e7950db67b5f43a312e9265cdfee5%7C1559955316%7C5184000%7CWed%2C+07-Aug-2019+00%3A55%3A16+GMT; uid_tt=0afcb06309f632d872799ec0ac3b2c80; sid_tt=fc1e7950db67b5f43a312e9265cdfee5; sessionid=fc1e7950db67b5f43a312e9265cdfee5”,
“X-Khronos”: “1559956401”,
“X-Gorgon”: “8300000000002e40eee38cad71d14037bd1385d18bc973f094f5”,
}
ret = {}
res = requests.post(url, data=data, headers=headers)
if res.status_code == 200:
# tk_logger.info(“video detail raw:%s” % res.content.decode(“utf8”))
jsn = json.loads(res.content)
detail = jsn.get(“aweme_detail”, {})
video_info = get_video_info(detail)
user_info = get_user_info(detail)
play_addr = get_play_address(detail)
video_cover = get_video_cover(detail)
ret[“video_info”] = video_info
ret[“user_info”] = user_info
ret[“play_addr”] = play_addr
ret[“video_cover”] = video_cover
else:
raise TKException(“get video detail failed [%s][%d]” % (url, res.status_code))
return ret
复制代码
下载视频代码片段

detail = get_video_detail_by_id(video_id)
def download_video(detail):
url = detail.get(“play_addr”, {}).get(“url_list”, [])
if len(url) == 0:
raise TKException(“cannot get video url list [%s]” % detail)

url = url[0]
folder = DOWNLOAD_DIR + '/' + detail.get('user_info', {}).get("uid", "unknown")
if not os.path.exists(folder):os.mkdir(folder)
video_id = detail.get('video_info', {}).get('statistics', {}).get('aweme_id')
# filename = "%s/%s" % (folder, detail.get("video_info", {}).get("desc", video_id) + ".mp4")
filename = "%s/%s" % (folder, video_id + ".mp4")
tk_logger.info("download video %s" % url)
if os.path.isfile(filename):file_size = get_remote_file_size(url)if file_size == os.path.getsize(filename):tk_logger.info("file already downloaded, skip ...")returnelse:tk_logger.info("download file , file size:%d" % file_size)
res = requests.get(url, headers=IOS_HEADER)
if res.status_code == 200:with open(filename, "wb") as fp:for chunk in res.iter_content(chunk_size=1024):fp.write(chunk)
else:raise TKException("download video [%s] failed [%d]" % (url, res.status_code))

复制代码
下载视频

如何用python爬取抖音视频列表相关推荐

  1. python爬取抖音用户数据_使用python爬取抖音视频列表信息

    如果看到特别感兴趣的抖音vlogger的视频,想全部dump下来,如何操作呢?下面介绍介绍如何使用python导出特定用户所有视频信息 抓包分析 Chrome Deveploer Tools Chro ...

  2. Python爬取抖音视频(没有水印的哟)

    使用更简单的方法 随便打开一个抖音个人主页,我选择的是爱奇艺体育,接着右键检查网页元素,点击network选项卡下的xhr选项,分析抓到的包 点到preview选项卡,点击video->down ...

  3. 用Python爬取抖音短视频实战,如此简单

    前言 抖音,是一款可以拍短视频的音乐创意短视频社交软件,该软件于2016年9月上线,是一个专注年轻人的15秒音乐短视频社区.用户可以通过这款软件选择歌曲,拍摄15秒的音乐短视频,形成自己的作品.此AP ...

  4. Python爬取抖音app视频

    作者:哈库呐玛塔塔 来源:https://urlify.cn/ANzAre 记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitm ...

  5. 青灯教育python免费公开课_如何使用Python爬取抖音APP视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 假 ...

  6. 使用python爬取抖音app视频(appium可以操控手机)

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  7. 教你用python爬取抖音app视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  8. 使用python爬取抖音app视频

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  9. 使用python爬取抖音app视频!谁说APP数据爬不了的!

    记录一下如何用python爬取app数据,本文以爬取抖音视频app为例. 编程工具:pycharm app抓包工具:mitmproxy app自动化工具:appium 运行环境:windows10 思 ...

  10. 抖音python上的代码视频_资深程序员:十行Python代码教你爬取抖音视频!

    环境说明 环境: python 3.7.1 centos 7.4 pip 10.0.1 部署 [root@localhost ~]# python3.7 --version Python 3.7.1 ...

最新文章

  1. js前台检测上传图片大小的总结
  2. 关于Configuration.ConfigurationManager
  3. 【JS】Vue.js实现简单的ToDoList(一)——前期准备
  4. java自动转换_java类型转换详解(自动转换和强制转换)
  5. 为什么用python写爬虫_python-做爬虫,如何避免牢狱之灾
  6. spring学习(34):构造函数依赖注入
  7. yeoman+grunt/gulp+bower构建angular项目
  8. linux改狗命令,linux安装安全狗
  9. 大数据专业python实验报告_大数据导论实验报告
  10. d3_0330_打造小米商城官网 Html+css+JS练手项目实战
  11. css控制文本只显示两行
  12. CSP第二轮比赛注意事项
  13. python中使用python-dotenv管理环境变量
  14. 南京电大在线试卷题库计算机,2018年电大计算机网考统考机考试题库及答案
  15. javaweb学习笔记(佟刚老师笔记)
  16. python灰色波浪线_去除pycharm的波浪线
  17. Java 实现调度算法 包括 FCFS(FIFO)、优先权排队、循环排队、加权公平排队(WFQ)
  18. 【复杂句的逻辑练习题】规则变化的过去分词
  19. 【Ceph 】Async 网络通信源代码分析--研读
  20. 关于hive异常:Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStor

热门文章

  1. GIS就业参考系列之方向篇——条条大道通罗马
  2. 判断两篇文章的相似度
  3. 设置表格单元格的背景颜色
  4. MySQL临时表的使用
  5. 物理层-宽带接入技术
  6. vue3-proxy
  7. Unity3D自由摄像头视角旋转,平移,缩放
  8. CQF笔记Primer金融基础
  9. 《IT时代周刊》:雅虎兵败中国
  10. 计算机主机插槽图,图片解说看个透 教你认识主板上的插槽