爬虫(5)-防盗链之梨视频
作者:互联网
# -*- coding: utf-8 -*- """ @Time : 2022/3/21 17:02 @Author : Andrew @File : 防盗链.py """ # 页面源代码运行后,在数据的加持下,才是实时的f12所看到的样子 # 1通过对比视频播放地址,实际的地址https://www.pearvideo.com/video_1755641 # 2动态页面的地址是https://video.pearvideo.com/mp4/adshort/20220319/cont-1755641-15846744_adpkg-ad_hd.mp4 # 3而在预览页,https://video.pearvideo.com/mp4/adshort/20220319/1647854201574-15846744_adpkg-ad_hd.mp4 # 发现3与实际的不一样,https://video.pearvideo.com/mp4/adshort/20220319/和-15846744_adpkg-ad_hd.mp4是相同的 # 不一样的地方在video_1755641与1647854201574,而1647854201574是预览页的system Time # 站在爬虫的角度是拿源代码去解析实际的播放地址,也就是2,但是由于梨视频的网站属于二次加载 # ,所以在源代码中并没有发现该视频的地址,实际上我们只能手动用来参照,也就是我们需要通过1、3去拼凑 # 防盗链:Referer: https://www.pearvideo.com/video_1755641 """ 1.{'resultCode': '5', 'resultMsg': '该文章已经下线!', 'systemTime': '1647855533877'}单纯的requests.get(url) -考虑是否被反扒,加上headers -在requesturl那里发现了referer,这个就是防盗链,意思是,人家网页之间的转换是有顺序的,一串串的挨着,如果当前页面的地址的上一级的链接是谁的话,就说明有人在偷资源,就会显示上面的信息 所以就在headers里面的加上一个防盗链,因为是从视频地址url这里进行请求获取的requesturl Referer: https://www.pearvideo.com/video_1755641(视频地址) """ import requests # 打开视频页,拉取视频地址 url = "https://www.pearvideo.com/video_1755641" cont_id = url.split("_")[-1] # 在检查网页开发工具中找到requestURl requestUrl = f"https://www.pearvideo.com/videoStatus.jsp?contId={cont_id}&mrd=0.17407634348368117" # 拿到videoStatus返回的json -》拿到srcURL # 处理反扒加headers headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 " "Safari/537.36 Core/1.77.97.400 QQBrowser/10.9.4621.400 ", # 防盗链 -溯源 当前请求的上一级是谁 "Referer": url } resp = requests.get(requestUrl, headers=headers) result = resp.json() print(resp.json()) # srcURL中的内容修改,然后下载 srcUrl = result["videoInfo"]["videos"]["srcUrl"] systemTime = result["systemTime"] # https://video.pearvideo.com/mp4/adshort/20220319/1647856405404-15846744_adpkg-ad_hd.mp4 # https://video.pearvideo.com/mp4/adshort/20220319/cont-1755641-15846744_adpkg-ad_hd.mp4 srcUrl = srcUrl.replace(systemTime, f"cont-{cont_id}") # 下载 with open('a.mp4',mode="wb") as f: f.write(requests.get(srcUrl).content) resp.close()
标签:pearvideo,1755641,之梨,爬虫,mp4,video,https,com,防盗链 来源: https://www.cnblogs.com/qiao-16/p/16036102.html