部分网站允许空白referer的防盗链图片的js破解代码

为了防止恶意网站站点盗取自己的资源,很多网站都会设置防盗链,限制只有自己网站的页面可以访问这些资源。其中一个最常用的防盗链方式是检测请求的referer字段,如果不符合条件则拒绝访问。referer字段记录了当前请求来源的URL地址,一般

为了防止恶意网站站点盗取自己的资源,很多网站都会设置防盗链,限制只有自己网站的页面可以访问这些资源。其中一个最常用的防盗链方式是检测请求的referer字段,如果不符合条件则拒绝访问。referer字段记录了当前请求来源的URL地址,一般情况下只有在通过链接点击进入目标页面时referer才会非空。

而某些网站会允许访问者通过空referer字段访问一些资源,可以通过JavaScript代码破解这样的防盗链机制。下面是实现这种破解代码的步骤:

  1. 发起一次请求,获取响应对象。
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/xxx.jpg', true);
xhr.send(null);
  1. 设置当前页面访问xxx.jpg的referer字段为空。
xhr.setRequestHeader('Referer', '');
  1. 将响应对象的responseType属性设置为'blob',以便获取二进制数据的Blob对象。
xhr.responseType = 'blob';
  1. 当服务器成功响应后,使用URL.createObjectURL()方法获取Blob对象的URL。
xhr.onload = function() {
    if (this.status == 200) {
        var imgBlob = this.response;
        var imgURL = URL.createObjectURL(imgBlob);
        var img = document.createElement('img');
        img.src = imgURL;
        document.body.appendChild(img);
    }
};

这样,就可以成功在页面上加载防盗链图片。

下面是两个示例:

  1. 支持空referer的网站示例:https://www.linuxidc.com/upload/2019_09/190926143561052.jpg
    在该网站上,任何页面都可以通过空referer字段进行访问。可以使用下面的JavaScript代码破解防盗链并在页面上显示图片:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://www.linuxidc.com/upload/2019_09/190926143561052.jpg', true);
xhr.setRequestHeader('Referer', '');
xhr.responseType = 'blob';
xhr.onload = function() {
    if (this.status == 200) {
        var imgBlob = this.response;
        var imgURL = URL.createObjectURL(imgBlob);
        var img = document.createElement('img');
        img.src = imgURL;
        document.body.appendChild(img);
    }
};
xhr.send(null);
  1. 不支持空referer的网站示例:https://img-blog.csdn.net/20180814091815280?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3F6aGxvbmc5OTk2/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/q/80
    在该网站上,只有从特定页面才能访问图片。通过referer字段检测,如果当前请求的referer不正确,则返回403错误。因此,即使使用上面的JavaScript代码也无法成功加载图片。

本文标题为:部分网站允许空白referer的防盗链图片的js破解代码

基础教程推荐