当然有一些方法,其中一些方法比其他方法更值得信赖。
有一个名为HTTP 标头Referer
,它通常包含一个表示用户访问当前请求的 URL 的字符串。
您可以将其视为“我来自这里”标题。
如果保证它始终存在,那么防止人们盗取你的带宽将是小菜一碟,但由于情况并非如此,仅仅依赖这个值(有时可能不存在)几乎是一场赌博。
判断用户是否是您网站的真正访问者的另一种方法是使用 cookie,没有 cookie 的用户在尝试访问特定资源(例如图像)时可能会收到一条消息:“抱歉” ,只有 example.com 的真实访问者才能访问此图像”。
遗憾的是,没有任何内容表明客户端必须实现和处理 cookie。
这可能是最安全的选择,尽管它是最难实施的。
使用仅在N小时内有效的链接将无法在不实施某种爬虫程序的情况下窃取您的带宽,该爬虫程序会定期爬行您的网站并返回访问资源(例如图像)所需的当前访问令牌)。
当用户访问该站点时,N小时生成的令牌将应用于所有可用资源,并附加到发送回访问者的路径中。该令牌是强制性的,并且仅在N小时内有效。
如果用户尝试使用无效/不存在的令牌访问图像,您可以发送回404
或401
作为HTTP 状态代码(最好是后者,因为它是禁止请求)。
然而,有一些怪癖值得一提:
来自*搜索引擎*的爬虫可能不会在N小时内的某个特定时刻访问整个网站,请确保他们可以访问您网站的全部内容。通过使用标头User-Agent的值来识别它们。
不要试图将令牌的寿命降低到低于任何合理的时间,请记住,某些用户的连接速度很慢,并且拥有5 秒的令牌可能听起来很酷 - 但真正的用户可能会被错误标记。
切勿在人们应该能够从外部点(例如搜索引擎)找到的资源上放置令牌,例如包含您希望保护的图像的页面。
如果您不小心这样做,您将严重损害您网站的声誉。
请记住,任何使盗取者无法盗链您的资源的方法都不应导致真正的访问者被标记为带宽盗取。您可能想放松限制而不是加强限制。
我宁愿有 10 个普通访客和 2 个水蛭,也不愿没有水蛭但只有 5 个普通用户(因为我不小心将 5 个真正的访客标记为水蛭)。
归档时间: |
|
查看次数: |
236 次 |
最近记录: |