做国际贸易如何建网站,成都网站建设 培训学校,石家庄网站建立,做网站窗体属性栏设置文字居中文章目录 前言一、防盗链的原理二、绕过防盗链的方法1. 使用requests库设置Referer2. 使用urllib库设置Referer 总结 前言
在进行Python爬虫开发时#xff0c;常常会遇到防盗链机制的阻碍。防盗链是一种防止他人直接引用网站资源#xff08;如图片、视频等#xff09;的技术… 文章目录 前言一、防盗链的原理二、绕过防盗链的方法1. 使用requests库设置Referer2. 使用urllib库设置Referer 总结 前言
在进行Python爬虫开发时常常会遇到防盗链机制的阻碍。防盗链是一种防止他人直接引用网站资源如图片、视频等的技术手段。 一、防盗链的原理
防盗链主要通过HTTP请求头中的Referer字段来判断请求的来源。当用户在浏览器中点击链接访问资源时浏览器会自动在请求头中添加Referer字段指明当前请求的来源页面。服务器可以根据Referer字段来判断请求是否来自合法的页面从而决定是否返回资源。
例如某网站的图片资源地址为
https://www.example.com/images/sample.jpg当用户从该网站的页面访问该图片时浏览器会在请求头中添加
Referer: https://www.example.com/page.html服务器检测到Referer字段来自本网站认为是合法请求返回图片资源。
但如果用户直接在浏览器地址栏中输入图片地址或者从其他网站引用该图片Referer字段可能为空或为其他网站地址服务器检测到后可能返回403 Forbidden错误阻止资源的访问。 二、绕过防盗链的方法
在Python爬虫中通过设置请求头中的Referer字段模拟合法的请求来源从而绕过防盗链的限制。
1. 使用requests库设置Referer
import requests# 目标资源地址
url https://www.example.com/images/sample.jpg# 设置请求头添加Referer字段
headers {Referer: https://www.example.com/page.html,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
}# 发送请求
response requests.get(url, headersheaders)# 保存资源
with open(sample.jpg, wb) as f:f.write(response.content)在上述代码中通过设置Referer字段为资源所在页面的地址模拟从该页面发起的请求从而绕过防盗链。
2. 使用urllib库设置Referer
import urllib.request# 目标资源地址
url https://www.example.com/images/sample.jpg# 设置请求头添加Referer字段
headers {Referer: https://www.example.com/page.html,User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
}# 创建请求对象
req urllib.request.Request(url, headersheaders)# 发送请求并读取响应
with urllib.request.urlopen(req) as response:content response.read()# 保存资源
with open(sample.jpg, wb) as f:f.write(content)同样地通过设置Referer字段模拟合法请求来源绕过防盗链。 总结
防盗链是网站保护资源的一种常见手段主要通过Referer字段来判断请求的合法性。通过设置请求头中的Referer字段模拟合法的请求来源可以有效绕过防盗链的限制成功获取目标资源。
在实际开发中除了设置Referer字段外还可能需要设置其他请求头字段如User-Agent、Cookie等以更好地模拟浏览器行为提升爬虫的成功率。