破解网站禁止复制页面内容和图片(一个图片服务器解决你的疑惑呢?|? )
优采云 发布时间: 2022-01-21 22:16破解网站禁止复制页面内容和图片(一个图片服务器解决你的疑惑呢?|?
)
您是否遇到过以下烦恼?
在夜深人静的时候,你的脑海里会想到一些有趣的事情,可能是二维的,也可能是三维的。求别人比求自己好。我满怀热情地写了一个爬虫脚本。在你即将完成的那一刻,一道魔法穿透你的眼睛,穿透你的灵魂……
403 禁止... 403 禁止... 403 禁止...
年轻人,不要被这个法术打败,我会教你屠龙的技能!
先说原理:我们每天都访问网页。如果我们从一个网页跳转到另一个网页,http头域会有一个Referer参数。然后镜像服务器通过检测Referer是否来自指定域名进行防盗链。当然不仅仅是图片服务器,还有一些视频服务器,比如B站!
接下来,我们将通过一个案例向您展示如何解决它:
我们获取图片的页面来自著名的:/zh/a/494!!!
代码接下来开始
import requests
from bs4 import BeautifulSoup #导入所需库
url = "https://www.pixivision.net/zh/a/4943"
headers = {
'User-Agent':"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
}
res = requests.get(url,headers=headers)
soup = BeautifulSoup(res.text)
urls = []
for i in soup.find_all("div",class_="am__body")[0].find_all("img"):
url = i.get("src")
if len(url)< 96:
urls.append(url)
通过上面的代码,urls列表中收录了我们需要的图片的链接。接下来,我们尝试请求图片地址:
requests.get(urls[0],headers=headers)
# 这一部分是返回内容,不要复制
可以看到,返回了403,我们无法获取到这个页面的信息。如前所述,这个问题通常是由于Referer参数被破坏造成的。这个图片地址采取了防盗措施,需要对症下药。在请求图片地址中添加请求参数,然后重试:
headers = {"Referer":url}
requests.get(urls[0],headers=headers)
# 这一部分是返回结果,不要复制
返回200,我们成功了!
接下来,我们完成后续代码,思考一下即将完成的伟大业务。是一种小小的幸福!!!
#完整保存图片的代码如下:
import requests
from bs4 import BeautifulSoup
url = "https://www.pixivision.net/zh/a/4943"
headers = {
'User-Agent':"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1"
}
res = requests.get(url,headers=headers)
soup = BeautifulSoup(res.text)
urls = []
for i in soup.find_all("div",class_="am__body")[0].find_all("img"):
url = i.get("src")
if len(url)< 96:
with open(url.split("/")[-1],"wb+") as f:
headers = {"Referer":url}
f.write(requests.get(url,headers=headers).content)
print("==========图片下载完成,快去做你该做的事情=========")
以上解决了你的疑惑吗?
如果满意,请关注我的头条号,每天分享一点自动化办公的小知识。