有没有办法找出是否有人在他们的网站上直接直接调用我的网站上的图片?
我有一个网站,我只是想确保没有人使用我的带宽。
答案 0 :(得分:3)
当然有方法,有些方法可以比其他方法更受信任。
有一个名为Referer
的 HTTP-Header ,其中最常包含一个字符串,表示用户访问该网址以访问当前请求的URL。
您可以将其视为“我来自这里” -header。
如果确保它始终存在,那么防止人们放弃你的bandwitdh将是一块蛋糕,虽然事实并非如此,仅依靠这个价值(这可能根本不存在)几乎是一场赌博)。
另一种判断用户是否是您网站上真正访问者的方法是使用Cookie,没有Cookie的用户尝试访问特定资源(例如图片)可能会收到消息说“抱歉,只有example.com的真实访问者可以访问此图片”。
太糟糕了,没有任何说明客户端被迫实施和处理cookie。
这可能是最安全的选择,但实施起来最难。
使用仅对 N 小时有效的链接将无法获取带宽而不会遇到实施某种爬虫的问题,该爬虫定期抓取您的网站并返回所需的当前访问令牌访问资源(例如图像)。
当用户访问该网站时,生成 N 小时的令牌将应用于所有可用资源,并附加到发送回访问者的路径中。此令牌是强制性的,仅对 N 小时有效。
如果用户尝试访问包含无效/不存在令牌的图片,您可以将404
或401
作为 HTTP状态代码发回(最好是以后因为它是禁止的请求。)
但是有一些值得一提的怪癖:
来自* search-engine *的抓取工具可能无法在 N 小时内的特定时刻访问整个网站,请确保他们可以访问您网站的全部内容。使用标题 User-Agent 的值来识别它们。
不要试图将令牌的生命周期降低到低于任何合理的时间,请记住某些用户处于慢速连接状态并且标记 5秒可能会发出声音酷 - 但真正的用户可能会被错误地标记。
永远不会在人们应该能够从外部点(一个搜索引擎)找到的资源上添加令牌,例如包含您要保护的图像的页面。
如果您意外地这样做,您将大多损害您网站的声誉。
请记住,实施任何方法都是不可能的 对于leechers来说,你的资源热链接永远应该是真的 游客被标记为带宽水蛭。你可能想放松一下 加强限制而不是强化。
我宁愿有10名普通访客和2名leechers,而不是没有leechers 只有5个普通用户(因为我不小心标记了5个真实用户 访客作为leechers没有太多考虑。)