在我们日常浏览视频或图片时,常常遇到想要保存却发现图片源无法直接打开的情况,通常会弹出防盗提示,如下所示:
面对这种情况,其实有一个简单的解决方法:使用 cURL 来伪造图片来源。通过 cURL 发起请求获取图片,并伪造 HTTP 请求头中的 Referer 和 User-Agent 字段,这样可以有效绕过某些网站的防盗链或访问限制。
仅需一段 PHP 代码就能轻松搞定,代码附在文末,可直接复制。
<?php // 替换为你要下载的图片 URL $imageUrl = "https://tvax1.sinaimg.cn/large/aeda7a57ly1hubz2jnxqoj20by0by0ta.jpg"; // 替换为伪造的 Referer 来源 $referer = "https://tvax1.sinaimg.cn/"; // 替换为伪造的 User-Agent 或使用默认值 $userAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"; // 初始化 cURL $ch = curl_init(); // 设置 cURL 选项 curl_setopt($ch, CURLOPT_URL, $imageUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_REFERER, $referer); curl_setopt($ch, CURLOPT_USERAGENT, $userAgent); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 执行 cURL 请求 $imageData = curl_exec($ch); // 检查是否有错误 if(curl_errno($ch)) { echo "cURL 错误: " . curl_error($ch); } else { // 生成随机文件名,使用 uniqid() 函数,带上 .jpg 扩展 $randomFileName = uniqid('image_', true) . '.jpg'; // 替换为你想保存的本地路径和随机文件名 $savePath = "images/" . $randomFileName; // 保存文件 if (file_put_contents($savePath, $imageData)) { echo "图片下载成功,保存为: " . $savePath; } else { echo "保存图片失败"; } } // 关闭 cURL 资源 curl_close($ch); ?>
请求资源或报告无效资源,请点击[反馈中心]