【Python爬虫】| XPANX获取抖音APP小视屏

需求:抖音上看到漂亮的小姐姐,想保存下来,该如何是好?

前两天一直在说,有空弄个爬取APP数据的教程,今天来实现下

 

思路:借助抓包工具fiddler完成

难度:★★★★(记住一条准则,只要是明文展示的数据(你可以看到的),都是可以获取的,只不过难易程度不同。大部分APP其实只是web加个壳)

准备工作:

1、Python+Pycharm社区版(社区版免费而且够用,不需要去破解专业版)

2、fiddler抓包工具

3、一部root的安卓机,或者模拟器

 

Github地址:https://github.com/poplangfan/Python100 (这里应该不能跳转,后台回复源代码即可获取github链接)

 

先把思路梳理一下,要想下载抖音视频,就要知道它的真实url地址,这是最核心的。

首先,要借助fiddler抓包,获取访问抖音时访问的真实地址,这一步比较繁琐,没用过fiddler的人可能比较陌生,我找了一篇教程,或者也可以自己去搜,网上很多;

https://www.cnblogs.com/woaixuexi9999/p/9247705.html

 

需要注意的是,抖音有SSL加密,所有需要一部root的手机,或者模拟器,不然按照上面的教程你会发现APP用fiddler抓包连不上网,也就无法抓包了,详情见:

https://www.zhihu.com/question/60618756, 亲测有效,我为了省事,使用的夜神模拟器。

 

准备工作完成后,就可以愉快的撸代码了,抖音反爬措施比较严,经常性因为访问频率过高拒绝访问,要么使用代理,要么自己等一会。

 

 

第一步,基本信息准备好,在fiddler里都有哦,如图:

"""-*- coding: utf-8 -*-@Author  : blyang@Time    : 2020/1/5 21:17"""import reimport timeimport requestsimport jsonfrom jsonpath import jsonpath
requests.packages.urllib3.disable_warnings()  # 此处关闭一个警告,去掉也无影响cookie = "你的cookie"UA = "你的User-Agent"headers = {  # 这些信息都可以在Fiddler上获取    'Connection': 'keep-alive',    'Cookie': cookie,    'User-Agent': UA,    'X-Tt-Token': 'xx',    'x-tt-trace-id': 'xx',    # 'Accept-Encoding': 'gzip, deflate, br',此处去掉,不然返回的数据乱码    'X-Gorgon': 'xx',    'X-Khronos': 'xx',    'x-common-params-v2': 'xx',}

 

第二步,获取真实URL:

 

def get_movie_list():    # 抓取到的一个链接,一个链接里有十个视频    url = "http://api3-normal-c-lq.amemv.com/aweme/v1/aweme/post/?source=0&max_cursor=1572668155000&sec_user_id=MS4wLjABAAAAElqvSzZgxtXS7vPPcAwSGzhEHuW_Jah8LBoPYDkcnYQ&count=10&ts=1578234402&_rticket=1578234399183&mcc_mnc=46007&"    resp = requests.get(url, headers=headers, verify=False)    obj = json.loads(resp.text)    urls = jsonpath(obj, '$..share_info.share_url')  # 通过jsonpath获取视频的访问路径    true_url_list = []    for url in urls:        if len(url) > 5:            resp = requests.get(url, headers=headers)            true_url = re.findall(r'playAddr: "(.+)",', resp.text)  # 通过正则获取真实URL地址            print(true_url)            if len(true_url) > 0:                true_url_list.append(true_url)    return true_url_list

 

第三步,交给下载函数处理:

def get_movie(url_list):    cnt = 1    for url in url_list:        resp = requests.get(url[0], headers=headers)        with open('./tik_movie/{}.mp4'.format(cnt), 'wb') as f:            f.write(resp.content)        time.sleep(2)        print("正在获取第{}个视频".format(cnt))        cnt += 1

if __name__ == '__main__':    true_url_list_ = get_movie_list()    print(true_url_list_)    get_movie(true_url_list_)

 

总结:基于此,你可以在以下场景中用到上述功能

  • 遇到钟意的视频,可以保存下来哦

     

温馨提示:本教程仅供参考,道路千万条,合规第一条。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值