0

我在许多博客上以及关于 SO 的许多答案上都看到人们使用以下代码进行热链接保护:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain.com [NC]
RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

此工具也建议这样做。

我可能错了,但欺骗这段代码不是很简单吗?爬虫不是只需要使用像这样的简单子域来绕过热链接保护吗?

http://mydomain.com.scarper1domain.com
http://mydomain.com.scraper2domain.net

编辑:仅供参考,我使用我认为更防弹的代码,但我很高兴阅读您对此的评论/批评。

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain\.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain\.com$ [NC]
RewriteRule .*\.(jpg|jpeg|png|gif)$ - [F,NC,L]
4

1 回答 1

2

由于大多数 apache 设置已经将 example.com 之类的请求重定向到 example.com/,因此您的编辑中不需要第三个条件。所以代码会变成

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?mydomain\.com/.*$ [NC]
RewriteRule .*\.(jpg|jpeg|png|gif)$ - [F,NC,L]

Scraper 甚至不需要使用子域,因为它们可以伪造正在发送的 http 标头。没有办法阻止这种情况。

其余代码没问题。如果需要,我会使用它。

于 2012-12-04T16:41:59.817 回答