2

我给自己写了一个非常强大的保护类“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   

否则,是否有一个测试用例(套件/模拟器)能够测试合法机器人的正确行为(只允许主要的,如:谷歌、雅虎、必应),以确保我使用了正确的检测方法. 周围有一些模拟器,但大多数都不能正常工作,下一个问题是:“我能相信它吗……”。

*注意:从上面的细节中可以看到,它使用的REMOTE_PORT值为53863,53863是什么端口?*

我希望您能理解我的问题,如果没有,请在此处留言。

4

1 回答 1

0

端口号 53863 是一个有效端口,不为任何东西保留。连接到您的服务器的计算机可以为该特定连接选择任何端口(尽管您可能会看到高于 1024 的端口号)。

您可以使用 web-sniffer.net 等可以将自己标识为 GoogleBot 的网站。缺点是他们只欺骗用户代理,而不是行为(我怀疑他们首先检查 robots.txt)。

作为个人建议,请不要尝试一次屏蔽多个 IP 并查看在线黑名单。如果您开始阻止大量 IP,您最终可能会意识到您已经阻止了受信任的机器人,您将无法知道它们是哪些。

于 2012-03-17T08:02:58.707 回答