我正在尝试编写一个脚本,让我能够识别试图淹没我的 oscommerce 网站的机器人,但是有些机器人经常更改它们的 IP,所以我不能真正使用 IP 来禁止它们。
我在想,如果我为机器人启用会话,我可以使用会话 ID 来阻止机器人。
我对此进行了一些研究,发现不建议为机器人启用会话,但我仍然不确定为什么?
我正在尝试编写一个脚本,让我能够识别试图淹没我的 oscommerce 网站的机器人,但是有些机器人经常更改它们的 IP,所以我不能真正使用 IP 来禁止它们。
我在想,如果我为机器人启用会话,我可以使用会话 ID 来阻止机器人。
我对此进行了一些研究,发现不建议为机器人启用会话,但我仍然不确定为什么?
允许机器人进行会话的问题在于,在某些情况下,恶意机器人不会在它在您网站上爬取的页面中保持 cookie 状态。因此,机器人对您网站的每次点击都会生成一个新会话。
大多数机器人只会忽略会话 ID,因为他们知道它并不是 URL 的一部分。否则他们将不得不索引 index.php?sid=ABC、index.php?sid=BBC、index.php?sid=CBC 等页面。因为他们知道这是同一个页面,他们将忽略会话 ID。
为什么不直接根据 user_agent 阻止机器人?除了 ip 地址,不能真正阻止使用 user_agent 识别自己的机器人。
这是我发现的东西-
搜索机器人也可能会获取会话 ID,并且可能会为同一页面编制数百次或更多次的索引,因为大多数机器人不会保留其 cookie 状态。这将意味着重复的内容索引,并可能严重影响我们的搜索引擎排名。
因为机器人在设计上会忽略 cookie 标头,所以它不会在每个后续请求中发回确认。实际上,机器人的每个请求都在创建一个新会话。大型站点上的攻击性机器人可以创建数百甚至数千个虚拟会话,这些会话会占用内存空间,直到它们过期