一、分析
1、浏览器打开存在视屏的链接
2、访问可以打开
3、页面源码中不存在视屏链接,所以可以推断,页面进行了二次请求
4、分析出二次请求链接
5、发现有段被加密了
https://video.pearvideo.com/mp4/adshort/20211027/1636005645152-15887526-140923_adpkg-ad_hd.mp4
https://video.pearvideo.com/mp4/adshort/20211027/cont-1744650-15887526-140923_adpkg-ad_hd.mp4
6、会发现防盗链
二、步骤
1、分析页面(拿到contID)
2、拿到videoStatus返回的json,->srcUrl(绕过防盗链)
3、将srcUrl进行修复(修复被加密的位置)
4、下载视频
三、代码
import requests
url = "https:/www.pearvideo.com/video_1744650"
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36 Edg/95.0.1020.40",
# 防盗链
"Referer": url
}
contId = url.split('_')[-1]
# 二次请求页面链接
videoStatusUrl = f"https://www.pearvideo.com/videoStatus.jsp?contId={contId}"
resp = requests.get(videoStatusUrl,headers=headers)
dic = resp.json()
# 视屏被加密后的链接
srUrl = dic['videoInfo']['videos']['srcUrl']
# url中被加密的位置
systemTime = dic['systemTime']
# 修复视屏链接
srUrl = srUrl.replace(systemTime,f"cont-{contId}")
# 下载
with open("a.mp4",mode="wb") as f :
f.write(requests.get(srUrl).content)
resp.close()