来自CGI的用户名computername

时间:2010-12-27 17:20:40

标签: perl cgi

有没有办法通过perl中的CGI获取远程客户端的用户名和计算机名?我尝试在CGI脚本中打印ENV哈希但我无法获得此信息

3 个答案:

答案 0 :(得分:3)

没有。该信息不通过HTTP传递,并且可能根本不存在(例如,我的手机不需要我使用用户名登录,它是单个用户设备)。

您可以获取请求来自的计算机的IP地址(可能是代理服务器),并使用它来获取DNS(或其他网络协议)名称,但这可以尽可能接近

答案 1 :(得分:2)

查看remote_host and remote_addr methods。他们可能会让你尽可能接近“计算机名”。用户名根本不可能通过http headers传递(例如,从技术上讲,您可能会认为授权和/或电子邮件标题已关闭,但在大多数情况下,它不太可能会填充。)

remote_host方法特别执行反向DNS查找。如果返回某些内容,您将获得结果,否则您只需获取远程地址(例如ip)。

答案 2 :(得分:0)

理论上,是的,你可以。首先,您需要通过$ENV{'REMOTE_ADDR'}变量获取客户端的IP。然后,如果您想要更简单的API(前者与C套接字完全相同)并探测某些端口以获取此信息,则需要使用SocketsIO::Socket等套接字模块;例如,如果用户正在运行Windows,则可以打开端口137上的NetBios,这通常默认情况下会泄露计算机名称。

然而,这种方法在法律上属于灰色区域,在某些国家/地区可能会被归类为未经授权访问信息......

然而,仅通过访问您的页面的用户只会公开HTTP标头中包含的IP,useragent,referer和其他信息。

如果您想了解更多信息,可以自己研究,我给了您基础知识......