【发布时间】:2012-03-23 03:58:15
【问题描述】:
我为自己编写了一个非常强大的保护类“BlockIp”,它可以使用带有 ip 的黑名单,可以检测奇怪的 IP 配置并可以阻止代理。当它找到一个时,我会收到一封关于访问者的详细电子邮件,以及它被阻止的原因以及他们想要做什么(当然每天一次)。看起来它工作得很好,因为我过去收到了一些被这个类阻止的真实攻击。它不会阻止合法的机器人,但这并不容易测试检测方法是否正确。
今天我收到一封来自班级的电子邮件,它已阻止“ycar10.mobile.bf1.yahoo.com”,它将自己标识为雅虎机器人,但在代理后面。我在网上搜索它是否被列入黑名单,但没有发现它被列入黑名单。所以问题是:阻止代理背后的机器人是否正确(无论如何都要使用合法的机器人代理?)?这里有一些关于机器人的信息:
HTTP_ACCEPT = */*
HTTP_X_FORWARDED_FOR = 107.38.3.137, 98.137.88.60
HTTP_USER_AGENT = YahooCacheSystem
PATH = /sbin:/bin:/usr/sbin:/usr/bin
SERVER_SIGNATURE =
SERVER_SOFTWARE = Apache/2.2.14
SERVER_PORT = 80
REMOTE_ADDR = 98.139.241.249
REMOTE_PORT = 53863
GATEWAY_INTERFACE = CGI/1.1
SERVER_PROTOCOL = HTTP/1.1
REQUEST_METHOD = GET
QUERY_STRING =
REQUEST_URI = /
SCRIPT_NAME = /index.php
PHP_SELF = /index.php
REQUEST_TIME = 1330923844
否则,是否有一个测试用例(套件/模拟器)能够测试合法机器人的正确行为(仅允许主要机器人,例如:Google、Yahoo、Bing),以确保我使用正确的检测方法。周围有一些模拟器,但大多数都不能正常工作,下一个问题是:“我能相信它吗……”。
*注意:从上面的细节可以看出,它使用的REMOTE_PORT值为53863,53863是什么端口?*
希望你能理解我的问题,如果没有,请在此处留言。
【问题讨论】:
-
远程端口可以是客户选择的任何东西。如果他们愿意,机器人可以使用代理。假机器人可以使用他们喜欢的任何用户代理。
-
感谢您的评论。我知道机器人可以使用代理,但合法的(例如 Google、Yahoo 和 Bing)有时会使用代理吗?不然检测方法是对的吧?
-
您如何定义“合法”代理?您只关心 Google、Yahoo 和 Bing,还是关心所有这些?我的观点是,在任何情况下,您都无法确定您收到的请求。所有信息都可能被欺骗。
-
是的,我只关心合法的搜索引擎(谷歌、雅虎和必应)。他们是否仍然使用代理,否则当代理将自己标识为合法搜索引擎时,如果它是代理,我可以阻止它们。
-
affiliatebeginnersguide.com/articles/block_bots.html 这篇文章可能会有所帮助,上面的机器人在尝试索引之前是否向 robots.txt 发出了请求?如果不是,那么它很可能是用户代理欺骗
标签: php proxy simulator bots testcase