15. 防盗链的处理:获取某视频网站的视频资源

这篇具有很好参考价值的文章主要介绍了15. 防盗链的处理:获取某视频网站的视频资源。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

前言        (目标链接放评论区了)

目的

思路

代码实现

第一步,理清思路,导包

第二步,拉取视频网址,拿到contId,获取请求视频的json网址

第三步,尝试访问页面,添加安全信息

本章重点:Referer

第四步,装饰请求头,获取信息

第五步,获取获取视频资源的Url并对关键信息进行替换

第六步,下载视频

完整代码

总结


前言

我们在上一节学习了一些Request的进阶用法和session会话的概念以及很多安全校验信息。那么这一节我们将以某视频网站(链接在评论区)为例,展示一下我们的学习成果。


目的

抓取某视频网站已知页面所包含的视频资源并保存到本地,绕过网站的反爬手段:防盗链。


思路

1. 首先打开想要抓取的页面,检查页面源代码,利用我们熟悉的开发者工具(F12)来检查视频资源所在的标签,可以通过下图所示源代码轻松找到:

15. 防盗链的处理:获取某视频网站的视频资源

 2. 把src里面包含的视频链接复制,访问页面观察是不是视频资源:

15. 防盗链的处理:获取某视频网站的视频资源

15. 防盗链的处理:获取某视频网站的视频资源可以看到,我们成功拿到了视频资源。但是我们真的成功了吗?检查页面源代码,我们拿到的页面源代码里面有这样的<video>标签吗?或者是否在源代码中存在我们的视频链接呢?

3. 源代码验证

我们查看页面源代码,CTRL+F查找,发现并没有上述资源:

15. 防盗链的处理:获取某视频网站的视频资源

15. 防盗链的处理:获取某视频网站的视频资源

实际上,我们使用开发者工具检查页面时,它所显示的"源代码"并不是原本的,而是已经通过了一系列的解析,呈现给我们所看到整个页面的资源信息。如果我们用PyCharm直接访问的话,是拿不到经处理的<video>标签的,所以这样抓视频链接是行不通的。但至少我们已经知道了我们想拿到的目标链接是什么了。

4. 开发者工具检查网络请求

打开开发者工具,切换到网络(Network) ,筛选选项到Fetch/XHR上。所谓XHR就是XMLHttpRequest,是浏览器提供的JavaScript对象,通过它,可以请求服务器上的数据资源。所以我们切换到这个筛选项,因为源代码里面没有,一般就一定在js对象中请求

15. 防盗链的处理:获取某视频网站的视频资源

5. 打开上述请求进行检查,进行预览,一层层解开json数据,找到请求链接

15. 防盗链的处理:获取某视频网站的视频资源

6. 访问此链接,查看是否能请求到视频资源:

15. 防盗链的处理:获取某视频网站的视频资源

7. 发现无法访问,那么我们来对比两个链接的不同之处:

正确的:https://video.某某video.com/mp4/adshort/20180420/cont-1328058-11924608_adpkg-ad_hd.mp4
错误的:https://video.某某video.com/mp4/adshort/20180420/1672821168882-11924608_adpkg-ad_hd.mp4

对比发现,只有‘cont-1328058’与‘1672821168882’的区别。那么我们只要搞清楚这两项分别是什么,再进行替换就OK了。

8. 查找两项的含义

15. 防盗链的处理:获取某视频网站的视频资源

发现‘cont-1328058’后面的一串数字就是我们访问页面下划线后的那串数字!

15. 防盗链的处理:获取某视频网站的视频资源

 发现‘1672821168882’就是我们抓取到json数据中的‘systemTime’!

现在思路就十分清晰了,直接进入代码部分。


代码实现

第一步,理清思路,导包

# 1. 从链接拿到contId
# 2. 拿到videoStatus返回的json找到srcURL
# 3. 对srcURL里面的内容进行替换
# 4. 下载视频
import requests

第二步,拉取视频网址,拿到contId,获取请求视频的json网址

# 拉取视频的网址
url = "见评论区"
contId = url.split("_")[1]

熟悉Python基础的同学应该知道split()是把目标字符串分成两部分,我们要的是下划线的后半部分,所以拿[1]。

15. 防盗链的处理:获取某视频网站的视频资源

现在我们拿到了这部分,后面的mrd应该是一个自动生成的随机数,不用管它也可以。

生成普适的视频资源请求:

videoStatusUrl = f"https://www.某某video.com/videoStatus.jsp?contId={contId}"

第三步,尝试访问页面,添加安全信息

15. 防盗链的处理:获取某视频网站的视频资源

从请求标头中可以拿到UA,而我们只将UA放入headers中时是访问不到页面的,这是由于Referer的原因。

本章重点:Referer

它就是我们一直在说的防盗链:,功能就是溯源,告诉服务器当前请求的上一级是谁?也就是从哪个页面跳转访问的。服务器会拒绝非页面跳转的访问,既然他要,那我们在headers里面也声明一下就好了。

第四步,装饰请求头,获取信息

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36",
    # 防盗链: 溯源, 当前本次请求的上一级是谁
    "Referer": url
}

resp = requests.get(videoStatusUrl, headers=headers)
dic = resp.json()

观察到防盗链就是我们最初的页面,那么直接把防盗链设置成它就好。

由于返回的是json文件,我们对它进行resp.json()的处理。

第五步,获取获取视频资源的Url并对关键信息进行替换

srcUrl = dic['videoInfo']['videos']['srcUrl']
systemTime = dic['systemTime']
srcUrl = srcUrl.replace(systemTime, f"cont-{contId}")

第六步,下载视频

# 下载视频
with open("3_result.mp4", mode="wb") as f:
    f.write(requests.get(srcUrl).content)

完整代码

# 1. 拿到contId
# 2. 拿到videoStatus返回的json. ->  srcURL
# 3. srcURL里面的内容进行修整
# 4. 下载视频
import requests

# 拉取视频的网址
url = "见评论区"
contId = url.split("_")[1]

videoStatusUrl = f"https://www.某某video.com/videoStatus.jsp?contId={contId}"

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.192 Safari/537.36",
    # 防盗链: 溯源, 当前本次请求的上一级是谁
    "Referer": url
}

resp = requests.get(videoStatusUrl, headers=headers)
dic = resp.json()

srcUrl = dic['videoInfo']['videos']['srcUrl']
systemTime = dic['systemTime']
srcUrl = srcUrl.replace(systemTime, f"cont-{contId}")

# 下载视频
with open("3_result.mp4", mode="wb") as f:
    f.write(requests.get(srcUrl).content)

总结

我们对requests的进阶用法进行了实践,并且熟悉了网页开发者工具的使用功能,“破解”了网站的防盗链,进行了一个反反爬操作。文章来源地址https://www.toymoban.com/news/detail-438592.html

到了这里,关于15. 防盗链的处理:获取某视频网站的视频资源的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Nginx动静分离、资源压缩、负载均衡、黑白名单、防盗链等实战

    Nginx 是目前负载均衡技术中的主流方案,几乎绝大部分项目都会使用它, Nginx 是一个轻量级的高性能 HTTP 反向代理服务器,同时它也是一个通用类型的代理服务器,支持绝大部分协议,如 TCP、UDP、SMTP、HTTPS 等。 nginx.conf配置 Nginx 首先会根据配置的 location 规则进行匹配,根据

    2024年02月14日
    浏览(33)
  • 【Webpack】处理字体图标和音视频资源

    打开阿里巴巴矢量图标库open in new window 选择想要的图标添加到购物车,统一下载到本地 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字体文件路径需要修改 src/main.js public/index.html type: \\\"asset/resource\\\" 和 type: \\\"asset\\\" 的区别: type: \\\"asset/resource\\\"  相当于

    2024年02月20日
    浏览(39)
  • 免费获取短视频BGM和音效素材的6大网站推荐

    本文为自媒体人员和视频剪辑者提供了6个免费和付费的音效和BGM素材网站,包括菜鸟图库、潮点视频、TOY模板网、耳聆网、爱给网和jamendo music。这些网站提供了丰富的音效和BGM素材,可以满足各种需求,包括商用。

    2024年02月14日
    浏览(45)
  • Nginx(动静分离、分配缓冲区、资源缓存、防盗链、资源压缩、IP黑白名单、大文件传输配置、跨域配置、高可用、性能优化)

    首先通过SpringBoot+Freemarker快速搭建一个WEB项目:springboot-web-nginx,然后在该项目中,创建一个IndexNginxController.java文件,逻辑如下: index.ftl页面 从响应中获取了port输出 nginx.conf配置文件修改 至此,所有的前提工作准备就绪,紧接着再启动Nginx,然后再启动两个web服务,第一个

    2024年02月09日
    浏览(29)
  • 【科普+技术】Linux服务器被占用大量资源,用三大网站排查ip地址和初步处理挖矿病毒

    五星红旗在bg飘扬——中国黑客的复仇 这里的“挖矿”只是个说法不是拿着锄头进矿洞,是指一段时间内在比特币系统中发生的交易进行确认,并记录在 区块链 上,形成新的区块,而挖矿的人叫作 矿工 。比特币系统的记账权利是去中心化的,即每个矿工都有记账的权利,只

    2023年04月15日
    浏览(42)
  • nginx上web服务的基本安全优化、服务性能优化、访问日志优化、目录资源优化和防盗链配置简介

    目录 一.基本安全优化 1.隐藏nginx软件版本信息 2.更改源码来隐藏软件名和版本 (1)修改第一个文件(核心头文件),在nginx安装目录下找到这个文件并修改 (2)第二个文件 (3)第三个文件,内置响应信息页面 (4)第四个文件 (5)重新编译安装并重启 3.更改nginx服务的默

    2024年02月13日
    浏览(34)
  • 如何用java获取视频流处理

           可以使用JavaCV库,它是OpenCV在Java中的接口,并且提供了访问视频流的功能。 以下是JavaCV获取视频流并处理帧的一个简单示例:       这个示例代码中,我们使用FFmpegFrameGrabber类从rtsp视频URL中抓取每一帧。在while循环中,我们可以处理每一帧的Mat对象并执行必要的逻

    2024年02月12日
    浏览(24)
  • 视频防盗链下载,ffmpeg转m3u8,ts实现视频切片

    最近公司有个需求,要求付费的大视频防止下载,不卡顿功能。 优先使用的是阿里的视频点播,自己琢磨没事干,网上很多电影视频网站是如何做到的呢,然后就是各种搜,得到了一下结果 这个video标签的src地址是下载不了的,这下和电影网站的一样了

    2023年04月26日
    浏览(31)
  • 微信小程序真机防盗链referer问题处理

    公司使用百度云存储一些资源,然后现在要做防盗链,在CDN加入Referer白名单后发现PC是正常的,微信小程序无法正常访问资源了。然后是各种查啊,然后发现是微信小程序不支持Referer的修改,且在小程序开发工具是Referer是固定https://servicewechat.com/{你的appid}/devtools/page-frame.h

    2024年02月13日
    浏览(22)
  • 接口安全验证及防刷处理方案_支付安全 防刷 防盗 的解决方案 csdn

    先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7 深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前! 因此收集整理了一份《2024年最新网络安全全套学习资料》

    2024年04月26日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包