首先,我要告诉大家一个不幸的消息:新浪图床已开启防盗链功能!
解决方法
临时解决方案
添加以下代码到
<head> </head>
标签之间,可以暂时解决此问题:<meta name="referrer" content="same-origin"> <meta name="referrer" content="no-referrer">
更换图床或者将图片本地化储存
推荐更换图床或者将图片本地化储存,这样可以避免防盗链问题。
直接反代新浪图床域名
缓存越高越好,直接反代新浪图床域名也是一个解决方案。
在 Nginx 配置文件中添加如下代码:
add_header Referrer-Policy "no-referrer";
虚拟主机建站没有权限可以使用 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
的,请自行转换下。
救命 2023新浪全面封杀 现在还有解决方案吗?