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