转自hostloc论坛,作者ID:lemen
抓取第一个短链接时会有个302的跳转,跳转之后会请求一个url,该url地址的/video/xxx/?… 会有一个id,通过此id去请求。
某音的api后台地址/web/api/v2/aweme/iteminfo/?item_ids=你得到的id
可以获得一串json
该json的
item_list > video > play_addr > url_list[0] 参数下有一串地址
直接请求该地址得到的视频是有水印的
我们只需要把地址的playwm换成play,把&line=0换成&line=1
再请求该地址,得到的视频就是无水印的视频了,亲测成功。
如果需要使用爬虫的话记得添加请求时的referer和cookie
源码来源:silence python代码
import requests import re pattern_id = re.compile(r'(?<=video/).*?(?=/)') pattern_url = re.compile(r'https://.*?/ ') url = input("请输入抖音原始链接:") url = re.findall(pattern_url,url)[0] url = url[:-1] header = { 'user-agent':'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1', 'referer':'https://www.iesdouyin.com/', 'cookies':"MONITOR_WEB_ID=cc5cddce-e219-443a-9b91-7e2bafb17a73" } def get_real_address(url): res = requests.get(url, headers=header, allow_redirects=False) return res.headers['Location'] def get_json(id): res = requests.get('https://www.douyin.com/web/api/v2/aweme/iteminfo/?item_ids=%s'%id) js = res.json() f = js['item_list'][0]['video']['play_addr']['url_list'][0].replace('playwm','play') print(f.replace('line=0','line=1')) if __name__ == '__main__': r = get_real_address(url) id = re.findall(pattern_id,r)[0] get_json(id)
sicnature ---------------------------------------------------------------------
I P 地 址: 3.145.54.210
区 域 位 置: 美国
系 统 信 息:
Original content, please indicate the source:
同福客栈论坛 | 蟒蛇科普 | 海南乡情论坛 | JiaYu Blog
sicnature ---------------------------------------------------------------------
Welcome to reprint. Please indicate the source http://myzhenai.com/post/3784.html
2条评论
学习了。不错。
https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={$vid}
https://www.iesdouyin.com/aweme/v1/web/aweme/detail/?aweme_id={$vid}
官方的接口已经失效了,不知道是什么原因,通过其他方法可以修正。