【问题标题】:PHP: How to block the http referer for an image request?PHP:如何阻止图像请求的 http 引用?
【发布时间】:2015-03-31 16:33:10
【问题描述】:

由于热链接保护,我无法显示图像。为获取图像而发送的 http 请求包含非空的referer 标头。这会导致热链接保护启动。

使用referer控制工具,我可以阻止referer,从而绕过热链接保护。但是现在我想在 PHP/HTML/javascript 代码中执行此操作。我找到了可能的信息,但我不完全了解如何实现它。

有人可以帮帮我吗? 提前致谢!

仅供参考:我已获得网站的许可进行盗链,因为它适用于 Android 应用程序。但是他们无法为我提供 API。

【问题讨论】:

  • 我有网站的许可进行盗链,因为它是为一个安卓应用程序。但是他们无法为我提供 API。
  • 引荐来源网址控制工具是一种浏览器插件/扩展程序,它会隐藏您的客户端 IP 来源。据我所知,要对您的网络服务器执行此类操作,您需要将其连接到 VPN 或其他东西
  • 如果这是专门针对应用程序而不是移动站点的,那么您可以向远程主机发送一个特殊的标头,远程主机可以取消对收到标头的图像的引用保护。他们愿意在他们这边实施吗?如果他们使用 Apache,我希望一些 mod_rewrite 规则会这样做。

标签: javascript php spoofing referer


【解决方案1】:

没有办法从浏览器请求中伪造引用标头,即使是通过 JavaScript 调用也不行。

2022 更新: 正如 cmets 和其他答案中所指出的,这个 is now possible(IE 和其他非常旧的浏览器除外)。

您可以设置一个代理服务器来伪造Referer 标头。然后,您需要让您的 android 应用程序指向您自己的服务器以获取所有图像。您可以从 PHP 中执行此操作,使用 curl 函数(甚至直接通过套接字 API)。

注意:如果目的是实际进行热链接,那么这不会节省任何东西,因为您最终会提供所有图像。它增加了另一个可能会损坏的移动部件。如果您的图片供应商无法为您提供更好的解决方案,请寻找其他供应商?

【讨论】:

  • 我认为你是对的。这些图像是一个更大目标的一部分,它只是一个论坛应用程序。因此,一小部分图像上传到受热链接保护的服务器上。可能会尝试设置代理服务器。谢谢。
  • 我猜这在回答期间不可用。
【解决方案2】:

您可以尝试通过将no-referrer 值设置为img 元素的属性referrerpolicy 来避免热链接保护。 详情here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-05
    • 1970-01-01
    • 2018-01-28
    • 2021-07-23
    相关资源
    最近更新 更多