![防火墙 - 防止内容盗窃和恶意爬虫](https://linux22.com/image/507344/%E9%98%B2%E7%81%AB%E5%A2%99%20-%20%E9%98%B2%E6%AD%A2%E5%86%85%E5%AE%B9%E7%9B%97%E7%AA%83%E5%92%8C%E6%81%B6%E6%84%8F%E7%88%AC%E8%99%AB.png)
我们的网站经常被内容窃贼抓取。我们显然希望让好机器人和合法用户活动通过,但阻止可疑活动。
我们尝试在防火墙上进行 IP 拦截,但这会变成管理拦截列表。此外,我们还使用了 IIS 处理程序,但这会使我们的 Web 应用程序变得复杂。
是否有人熟悉可以减少或消除内容抓取工具的网络设备、防火墙或应用程序服务(例如 IIS)?
答案1
如果抓取工具是机器人而不是人类,您可以尝试创建一个蜜罐目录,机器人会爬取到该目录,并通过该目录中的“默认页面”脚本自动阻止(按 IP 地址)。人类可以轻松解除阻止,但这会阻止机器人,因为它们在进一步访问时会收到 403“未授权”错误。我使用这样的技术来阻止不遵守 robots.txt 的恶意机器人,但不会永久阻止共享相同 IP 或“意外”导航到阻止脚本的人类。这样,如果共享 IP 被阻止,它就不会是永久性的。方法如下:
我在 robots.txt 中屏蔽的一个或多个子目录(文件夹)中设置了一个默认(脚本)页面。如果该页面被行为不当的机器人(或窥探者)加载,则会将其 IP 地址添加到屏蔽列表中。但我有一个 403(“未授权”)错误处理程序,可将这些被屏蔽的 IP 重定向到一个页面,该页面解释了发生了什么,并包含一个验证码,人类可以使用该验证码来解除对 IP 的屏蔽。这样,如果某个 IP 因某人将其用于不良目的而被屏蔽,下一个获得该 IP 的人不会被永久屏蔽——只是有点不方便。当然,如果某个 IP 不断被多次重新屏蔽,我可以采取进一步的手动措施来解决这个问题。
具体逻辑如下:
- 若IP没被封,则允许正常访问。
- 如果访问者导航到禁区,则阻止他们的 IP。
- 如果 IP 被阻止,则将所有访问重定向到包含验证码的“解除阻止”表单。
- 如果用户手动输入正确的验证码,则从阻止列表中删除该 IP(并记录该事实)。
- 冲洗、涂抹泡沫,重复以上步骤以进行进一步的操作。
就是这样!一个脚本文件用于处理阻止通知和解除阻止验证码提交。robots.txt 文件中有一个条目(最少)。htaccess 文件中有一个 403 重定向。
答案2
检查请求标头?根据他们是否是小孩,这可能就足够了
答案3
您需要一个可以进行 HTTP 检查的硬件防火墙。恐怕这不会便宜。
我似乎记得 Cisco ASA 5520 可以做到这一点,但其中一个的标价约为 4600 英镑 ~= 6900 美元。
您可能只需花费一小部分成本,就能用运行防火墙应用程序的 Linux 机器做类似的事情。