「Python」爬虫-3.防盗链处理

简介: > 本文主要讲解了视频爬取中的防盗链的处理,以及网易云评论的爬取综合案例来强化我们之前学过的知识。

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第16天, 点击查看活动详情


前言

本文主要讲解了视频爬取中的防盗链的处理,以及网易云评论的爬取综合案例来强化我们之前学过的知识。
如果你对爬虫仍然不太了解的话,可以先阅读一下我的前两篇文章:

「Python」爬虫-1.入门知识简介 - 掘金 (juejin.cn)

「Python」爬虫-2.xpath解析和cookie,session - 掘金 (juejin.cn)

本文参考链接 :

1.点击查看【bilibili】

2.防盗链的原理以及实现


防盗链的概念

关于防盗链,一定有小伙伴会问?什么是防盗链?在爬取信息的时候为什么要对防盗链进行处理呢?

盗链是指在自己的页面上展示一些并不在自己服务器上的一些内容, 获取别人的资源地址,绕过别人的资源展示页面,直接在自己的页面上向最终用户提供此内容。

一般被盗链的都是图片、 音乐、视频、软件等资源。通过盗链的手段可以减轻自己服务器负担

我们这里需要爬取的视频就属于需要获取资源地址,并在自己的页面上展示的范围,所以需要对防盗链进行处理,不然是爬取不到视频资源的~

防盗链的工作原理:
通过Refer或者签名,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以追踪到显示他的网页地址 一旦检测到来源不是本站,即进行阻止或者返回指定的页面。

关于防盗链的详情原理与实现可以移步了解 -> 防盗链的原理以及实现 - 知乎 (zhihu.com)

所以我们对防盗链的处理其实也就是在headers里面加上了Referer参数。


防盗链的处理

下面以爬取梨视频为例,目标网站地址:https://www.pearvideo.com/

F12键 ,寻找视频地址, 可以尝试直接搜索(Ctrl+F) vedio 标签 。

但是这里的<vedio>标签是通过js渲染上去的,在页面源代码中并不能提取到,所以在这里我们直接复制vedio标签中视频播放路径src属性
image.png

但是注意到这里有个坑,这个视频连接其实是实时渲染上去的,那个连接中的20210924后面的一串数字很大可能就是当前播放视频的时间戳,所以这里需要查看网络,清空输出台,选中Fetch/XHR,然后点击刷新按钮,观察发送请求,就可以看到当前视频真正的请求地址了。

image.png

页面标签中的src

https://video.pearvideo.com/mp4/adshort/20210924/1633438051634-15773028_adpkg-ad_hd.mp4

实际的url

src="https://video.pearvideo.com/mp4/adshort/20210924/cont-1742368-15773028_adpkg-ad_hd.mp4"

image.png

可以看到实际的请求地址就是把cont-1742368变成了一串1633438051634,这里的cont-1742368其实就是contId,即内容的id。

然后需要对防盗链进行处理了

随便点击一个视频看当前页面的链接其实就是 https://www.pearvideo.com/ + vedio_contId

所以这里的Referer我们可以自己构造,因为在前面分析视频的真正播放地址的时候我们就已经分析得到了视频的contId,即1742368

image.png

当然你也可以直接查看参数,也就是找 User-Agent的地方,直接复制也可。

整个爬取的视频的思路仍然和前面一样,确定目标网址 -> 请求该网址 ->读取response -> 处理response -> 下载视频/...

完整代码如下:

# 爬取步骤:
# 1.拿到contId
# 2.拿到vedioStatus返回的Json -> srcUrl
# 3.srcUrl里面的内容进行调整
# 4.下载视频

# refer : 就是一个溯源,寻找请求的网址是哪一个

import requests

url = "https://www.pearvideo.com/video_1742368"
contId = url.split("_")[1]  # 以"_"分割 拿到  "_" 后面的编号1742368
videoStatusUrl = f"https://www.pearvideo.com/videoStatus.jsp?contId={contId}&mrd=0.5467768006452396"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Edg/94.0.992.38",
    # 防盗链:溯源,当前本次请求的上一级是谁
    "Referer": url
}

resp = requests.get(videoStatusUrl, headers=headers)
dic = resp.json()
srcUrl = dic['videoInfo']['videos']['srcUrl']
systemTime = dic['systemTime']
# https://video.pearvideo.com/mp4/adshort/20210924/1633438051634-15773028_adpkg-ad_hd.mp4
# src="https://video.pearvideo.com/mp4/adshort/20210924/cont-1742368-15773028_adpkg-ad_hd.mp4"
srcUrl = srcUrl.replace(systemTime,f"cont-{contId}")
print(srcUrl)

# 下载视频
with open("a.pm4",mode="wb") as f:
    f.write(requests.get(srcUrl).content)
这次的文章就暂且码到这儿了⛷️⛷️⛷️,后续更新XHR断点调试以及视频m3u8解密~

往期好文推荐🪶

「Android」1.简单的登录页面设计

「MongoDB」Win10版安装教程

「Python」数字推盘游戏

「Python」sklearn第一弹-标准化和非线性转化

「Python」turtle绘制图形🎈

「Python」Pandas-DataFrame的相关操作二

相关文章
|
1天前
|
数据采集 存储 数据挖掘
深入剖析 Python 爬虫:淘宝商品详情数据抓取
深入剖析 Python 爬虫:淘宝商品详情数据抓取
|
4天前
|
存储 数据采集 数据库
Python爬虫实战:股票分时数据抓取与存储
Python爬虫实战:股票分时数据抓取与存储
|
30天前
|
数据采集 JSON 数据格式
Python爬虫:京东商品评论内容
京东商品评论接口为商家和消费者提供了重要工具。商家可分析评论优化产品,消费者则依赖评论做出购买决策。该接口通过HTTP请求获取评论内容、时间、点赞数等数据,支持分页和筛选好评、中评、差评。Python示例代码展示了如何调用接口并处理返回的JSON数据。应用场景包括产品优化、消费者决策辅助、市场竞争分析及舆情监测。
|
1月前
|
数据采集 供应链 API
Python爬虫与1688图片搜索API接口:深度解析与显著收益
在电子商务领域,数据是驱动业务决策的核心。阿里巴巴旗下的1688平台作为全球领先的B2B市场,提供了丰富的API接口,特别是图片搜索API(`item_search_img`),允许开发者通过上传图片搜索相似商品。本文介绍如何结合Python爬虫技术高效利用该接口,提升搜索效率和用户体验,助力企业实现自动化商品搜索、库存管理优化、竞品监控与定价策略调整等,显著提高运营效率和市场竞争力。
89 3
|
2月前
|
数据采集 存储 缓存
如何使用缓存技术提升Python爬虫效率
如何使用缓存技术提升Python爬虫效率
|
2月前
|
数据采集 Web App开发 监控
Python爬虫:爱奇艺榜单数据的实时监控
Python爬虫:爱奇艺榜单数据的实时监控
|
2月前
|
数据采集 JSON API
如何利用Python爬虫淘宝商品详情高级版(item_get_pro)API接口及返回值解析说明
本文介绍了如何利用Python爬虫技术调用淘宝商品详情高级版API接口(item_get_pro),获取商品的详细信息,包括标题、价格、销量等。文章涵盖了环境准备、API权限申请、请求构建和返回值解析等内容,强调了数据获取的合规性和安全性。
|
2月前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
2月前
|
数据采集 JSON 开发者
Python爬虫京东商品详情数据接口
京东商品详情数据接口(JD.item_get)提供商品标题、价格、品牌、规格、图片等详细信息,适用于电商数据分析、竞品分析等。开发者需先注册账号、创建应用并申请接口权限,使用时需遵循相关规则,注意数据更新频率和错误处理。示例代码展示了如何通过 Python 调用此接口并处理返回的 JSON 数据。
|
2月前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。

推荐镜像

更多