我很想知道是否有任何方法可以假装网站不存在?对于某些用户,我希望返回一个 http 标头 (?) 或告诉浏览器访问的站点不存在的东西。
我在考虑444 No Response,但不太确定。
提前致谢。
更新:我根本无法回应,因为我应该处理其他“受信任”的用户。目前我只是调用函数exit;
,但我对此并不满意,因为“坏用户”可以使用代理访问该站点。另一方面,如果他们认为该站点不可用,它将不再尝试访问它。这是我的想法,但我不确定这是否是个好主意。
我很想知道是否有任何方法可以假装网站不存在?对于某些用户,我希望返回一个 http 标头 (?) 或告诉浏览器访问的站点不存在的东西。
我在考虑444 No Response,但不太确定。
提前致谢。
更新:我根本无法回应,因为我应该处理其他“受信任”的用户。目前我只是调用函数exit;
,但我对此并不满意,因为“坏用户”可以使用代理访问该站点。另一方面,如果他们认为该站点不可用,它将不再尝试访问它。这是我的想法,但我不确定这是否是个好主意。
正如一些评论中所解释的,当网络服务器执行脚本时,连接已经建立并且客户端知道。
但是,如果您真的想深入研究,您可以使用端口敲击来想出一些东西:
从服务器发回的任何响应都将确认主机上存在 http 服务器。
您能够隐藏主机存在的唯一方法是使用防火墙之类的东西来吞下任何请求,并对不符合您的访问标准的请求不提供任何响应。
如果您不需要向未经授权的一方隐藏该站点的存在(即他们已经知道那里有一个站点),您可以返回 500 或 404 响应以向他们表明该站点已损坏或它们的资源是试图到达不存在。
您可以通过 PHP 模拟 444 无响应
function send444() {
error_reporting( 0 );
$status = '444 No Response';
$protocol = ( isset( $_SERVER[ 'SERVER_PROTOCOL' ] ) ? substr( $_SERVER[ 'SERVER_PROTOCOL' ], 0, 8 ) : 'HTTP/1.1' ) . ' ';
$header = array(
$protocol . $status,
'Status: ' . $status
);
foreach ( $header as $sent ) {
header( $sent );
}
exit();
}