新浪图床开启403防盗链后的解决方案

首先,我要告诉大家一个不幸的消息:新浪图床已开启防盗链功能!

解决方法

  1. 临时解决方案

    添加以下代码到 <head> </head>标签之间,可以暂时解决此问题:

    <meta name="referrer" content="same-origin">
    <meta name="referrer" content="no-referrer">
  1. 更换图床或者将图片本地化储存

    推荐更换图床或者将图片本地化储存,这样可以避免防盗链问题。

  2. 直接反代新浪图床域名

    缓存越高越好,直接反代新浪图床域名也是一个解决方案。

  3. 在 Nginx 配置文件中添加如下代码:

    add_header Referrer-Policy "no-referrer";
  1. 虚拟主机建站没有权限可以使用 PHP 脚本解决方案

    将以下代码保存为 sina.php 文件:

    <?php
    error_reporting(E_ERROR);
    
    // CURL 请求函数
    function sinaCurl(string $address): void
    {
        $ch = curl_init($address);
    
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HEADER => false,
            CURLOPT_SSL_VERIFYPEER => false,
            CURLOPT_SSL_VERIFYHOST => false,
        ]);
    
        // 执行 CURL 请求
        curl_exec($ch);
        
        $info = curl_getinfo($ch);
        
        // 设置正确的内容类型
        header("Content-Type: " . $info['content_type']);
        
        // 输出请求结果
        echo curl_multi_getcontent($ch);
        
        curl_close($ch);
    }
    
    // 获取来源信息
    $sourceMain = $_SERVER['HTTP_REFERER'] ?? '';
    $sourceUrl = parse_url($sourceMain);
    $homeUrl = parse_url('https://fairysen.com');  // 指定授权地址
    
    // CURL 处理函数
    function curlOk(): void
    {
        if (isset($_GET['md5']) && !empty($_GET['md5'])) {
            $sourceValue = trim($_GET['md5']);
            sinaCurl('https://ws4.sinaimg.cn/' . $sourceValue);
        } else {
            // 提示用户传入参数
            echo '请传入参数!';
        }
    }
    
    // 验证来源域名
    if ($sourceMain) {
        if ($sourceUrl['host'] !== $homeUrl['host']) {
            // 拒绝盗链
            echo '请不要盗链!';
        } else {
            curlOk();
        }
    } else {
        curlOk();
    }

    授权地址改为你自己的域名。

    将以下代码保存为 .htaccess 文件(Apache 伪静态文件):

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteRule ^sina$ sina.php [L,QSA]
        RewriteRule ^sina/(.*?)$ sina.php?md5=$1 [L,QSA]
    </IfModule>

    这两个文件放到你的网站根目录下,再把你网站中新浪图源的地址修改下,参考如下:

    旧地址:https://ws4.sinaimg.cn/large/87c01ec7gy1frmr2kh3xkj21kw0w0w8e.jpg
    新地址:https://你的域名/sina/large/87c01ec7gy1frmr2kh3xkj21kw0w0w8e.jpg

    如果主机是 Nginx 的,请自行转换下。

无标签
评论区
头像
    头像
    lcfqc
      

    救命 2023新浪全面封杀 现在还有解决方案吗?