0

当我遇到热吸问题时,我搜索了该网站并找到了两种解决方法。第一种是更简单的方法,代码如下所示:

RewriteEngine On 
RewriteCond %{HTTP_REFERER}!^$ Options +FollowSymlinks 
RewriteCond %{HTTP_REFERER}!^http://(www\.)?mydomain.com(/)?.*$ [NC] 
RewriteRule .*\.(gif¦jpg¦jpeg¦png¦swf)$ [mydomain.com...] [R,NC]"

这只能防止一些简单的偷窃,但对一个有决心的人却无能为力。

另一种方法是基于脚本和 cookie 的更好方法。他们说:“你在网站的‘授权’页面上设置了一个 cookie,然后只有在图像请求中存在正确的 cookie 时才使用脚本来提供图像。图像保存在只有脚本可以访问的目录中,并且不是通过网络。因此,该脚本充当您网站上的“图像服务器”。” 我理解这个原则,但不知道如何实现它。谁能知道如何实现这一点?

任何帮助表示赞赏。

4

1 回答 1

1

我不能真正给出任何实现,而只是对如何实现它的一些想法:

您将需要一个“门户”页面,在其中为用户设置 cookie。任何没有您网站 cookie 的资源请求都应在此处重定向。这里可能没有登录机制,这取决于您网站的用途,但通常您会在用户登录后设置 cookie。

所有资源链接都将链接到同一个“脚本”页面。不同之处在于不同的资源将具有不同的标识符(可以是某种 id - 如果您维护 id 到文件路径映射的数据库)。标识符必须包含在 URL 的查询中。“脚本”将根据标识符在服务器上查找资源(在 id 到文件映射的情况下,您将获取文件路径并检索文件)。

会有一个“脚本”页面,例如可以是 php 代码。它将检查 cookie,然后检查标识符,然后相应地加载资源。您可能还需要检查Referer 以进一步限制访问(不检查,热链接将适用于任何登录用户)。


在此实现中,共享资源的热链接对于尚未访问“门户”页面(或尚未登录,具体取决于您的网站)的任何用户都不起作用。如果登录用户从其他地方单击链接,它也将不起作用。

但是,在您的问题中提到的两种实现中,抓取您的网站以获取资源都很简单,因为抓取器可以自由调整 HTTP 标头。

于 2012-05-31T08:07:14.847 回答