抖音请求的分析
抖音的请求是get请求
请求中会变的参数
min_cursor 首次打开软件请求值为0,之后的请求不变-1
pull_type 首次打开软件请求值为0,之后的请求2
As
cp
Ts
_rticket
Mas
响应
抖音中的广告是以视频形式出现的,与普通短视频形式一样,单从视频来看
https://aweme.snssdk.com/aweme/v1/feed/?
https://api.amemv.com/aweme/v1/feed/?
都能得到响应
url失效时返回体
{
"status_code": 2145,
"extra": {"logid": "20180508113012010015033040956D7E", "now": 1525750212973, "fatal_item_ids": []}
}
有效时间返回体中包含参数
{
"max_cursor": 0,
“aweme_list”:[],
refresh_clear": 1,
"extra": {
"logid": "2018050709365501001507704445698C",
"now": 1525657016333,
"fatal_item_ids": []
},
"has_more": 1,
"status_code": 0,
"home_model": 1,
"rid": "2018050709365501001507704445698C",
"min_cursor": 0
}
广告包含在响应的结果中,如果是广告的话其中的会有以下参数
is_ads:true
is_ad_fake:true
button_text:’’#一般是立即下载(软件)或者查看详情(购物网站)
show_button_seconds:两秒后出现button
Dict.has_key()
对于返回的数据需要进行处理,python中大小写敏感,True,False才是布尔值正确写法,python中没有null,有类型None
未解决问题
变动参数的算法
As、cp、Ts、_rticket、Mas同时变化,请求才会有效,
导致失效原因:
每个url有效时间只有十几分左右
或者是段时间内请求了10次url,就会失效
目前思路:
1.找到参数变动规律(可行性不太大)
2.将花瓶监听到的url保存下来
urlopen的使用
打开一个网页获取所有内容
from urllib import urlopen
doc=urlopen(‘www.baidu.com’).read();
Print doc;
视频文件的保存
from urllib import urlopen;
doc=urlopen(‘https://aweme.snssdk.com/aweme/v1/play/?video_id=v02033880000bbm43tppjc2ve0cc2ilg&line=0&ratio=default&watermark=0&media_type=4&vr_type=0&test_cdn=None&improve_bitrate=0’).read();
with open(‘zhonghua.mp4’,’wb’) as f:
f.write(doc);
抖音在最近(6月份)对请求做了一些处理(本质没变)
六月份之前
请求头
修改后在花瓶中显示
注意:在发送请求时需要把前面的冒号去掉
本质上没有区别,但是如果直接在花瓶中copy curl request 会发生请求错误,这时检查发送的请求头中的属性名前是不是存在冒号,去掉即可,并且可能返回乱码,需要之curl请求之后加" | gunzip "进行解压缩