微信图片无法使用

发布于 2022-09-04 06:10:10 字数 217 浏览 5 评论 0

clipboard.png

用curl获取微信的图文消息,把img的src 用data-src替换之后,出现这个外链无法使用的提示、有什么好的解决方法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

山田美奈子 2022-09-11 06:10:10

大多数网站判断访问来源是通过HTTP Request Header中的Referer判断的。浏览器访问资源时,会自动附带上这个Referer字段表示用户是从那个网址访问到该资源的。在RFC 2616 超文本传输协议 HTTP/1.1中,有对它的详细描述。

当我们从外站访问这些图片时,浏览器自动在Header中Referer字段提供了当前的网址,那么对方服务器一判断,不是从自己网站访问的,自然就拒绝显示了。

curl:自由获取任意资源

为了破解这种限制,自然要请来强大的curl。让我们来看具体代码:

function fetch_image($url) {
    $curl = curl_init($url); //初始化
    curl_setopt($curl, CURLOPT_HEADER, FALSE);
    //将结果输出到一个字符串中,而不是直接输出到浏览器
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
    //最重要的一步,手动指定Referer
    curl_setopt($curl, CURLOPT_REFERER, 'http://mp.weixin.qq.com');
    $re = curl_exec($curl); //执行
    if (curl_errno($curl)) {
        return NULL;
    }
    return $re;
}

设置CURLOPT_REFERER这个属性是最关键的一步。

<img src="http://fetch_image_api/?src=weixin_image_url" alt="" />

意思就是服务端伪造Referer,通过自己服务器来中转,获取图片。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文