原理
我们知道,referer的作用就是记录你在访问一个目标网站时,在访问前你的原网站的地址,比如用Chrome从知乎的某个板块到另外一个,那么你在的这个网站就是原网站,按F12,选中Network选项,从页面内进入一个网站,可以从这个网站的header即头信息中看到referer就是原来的那个网站。
根据referer的作用可以知道,把网页地址复制到浏览器新页面的地址栏里,进行直接访问,这样的话就不会有referer,同样地,浏览器刷新也不会有referer。
referer的作用
由于referer是请求网页中,也就是发起HTTP请求中header的一部分,所以可以用来做网页的图片防盗链!
比如一个网页的图,想用爬虫下载到本地,如果使用了referer防盗,则会下载失败,
这是因为python提交request申请的时候,就类似于在浏览器中的空地址栏里键入这个网页然后访问,根据上面说的,无referer,这时网站的设置比如是要求有referer,且referer的网站必须是你进来之前的网站,也就是这个图片的主页。
破解referer反爬虫的办法
方法很简单! 既然要求你传入图片主页面的referer,在构造header的时候,传入Referer参数(注意R要大写),它的值为与这个图片链接相关的网站,或者这个图片链接地址的原网站就可以了,听起来很生涩,下面上代码。
from fake_useragent import UserAgent
#fake_useragent的介绍见我另一篇博文
#伪装成浏览器
ua = UserAgent()
headers = {'User-Agent':ua.random} #一般网站伪装成这样也就够了,但是如果想爬图片,图片反盗链的话。如下
#其实很好理解,就是告诉你要下载的那个图片页面,我是从主页面来的,现在把数据给我。
headers = {'User-Agent':ua.random,'Referer':'这里放入图片的主页面'}
#然后在后续requests中传入header即可
https://blog.youkuaiyun.com/python_neophyte/article/details/82562330
本文详细介绍了HTTP Referer头信息的作用,它用于记录用户从哪个页面跳转到目标页面。在爬虫抓取网页图片时,Referer常被用于图片防盗链,导致无Referer的请求可能失败。解决办法是在请求头中添加Referer字段,指定为图片所在页面的URL。通过这种方法,可以成功下载受防盗链保护的图片。
2323

被折叠的 条评论
为什么被折叠?



