我如何判断一台机器的WebServer是什么,并且获得其版本信息?(50分)

  • 主题发起人 主题发起人 ePing
  • 开始时间 开始时间
E

ePing

Unregistered / Unconfirmed
GUEST, unregistred user!
像98可能装的是PWS,或者其他WebServer,而在2000以上系统普遍
装有IIS,偶如何获取其版本信息,望知情者告之,谢谢
 
建立一个套接字,连接服务器的WebServer端口,发送#13#10#13#10,然后解析接收的信息即可,你可以在DOS下试试 c:>telnet 服务器IP 服务器端口 按3个回车即可得到你要的内容(不同的服务器端软件结果不同):
HTTP/1.1 400 错误的请求
Server:Microsoft-IIS/4.0
Date:...
Content-Type:...
Content-Length:....

 
向web服务器发送请求包后,可以返回一些web服务器的信息
put /index.htm
几个回车后就会有信息,如

HTTP/1.0 400 Bad Request
Server: Squid/2.4.STABLE7
Mime-Version: 1.0
Date: Fri, 17 Oct 2003 00:45:09 GMT
Content-Type: text/html
Content-Length: 843
Expires: Fri, 17 Oct 2003 00:45:09 GMT
X-Squid-Error: ERR_INVALID_REQ 0
X-Cache: MISS from squid2.sohu.com
Proxy-Connection: close

<HTML><HEAD>
<TITLE>ERROR: The requested URL could not be retrieved</TITLE>
</HEAD
><BODY>
<H1>ERROR</H1>
<H2>The requested URL could not be retrieved</H2>
<HR>
<P>。。。
 
谢谢楼上两位仁兄的回复,客户会装有客户端的,而我想在客户端实现获取

webServer信息,如果这样的话,不知两位有什么好的建议!谢谢
 
你还是没有听懂我说什么,在你的Form上放一个ClientSocket1(并给Address/port赋值),放一个 Memo1,代码如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
ClientSocket1.Active:=true;
end;

procedure TForm1.ClientSocket1Connect(Sender: TObject;Socket: TCustomWinSocket);
begin
Socket.SendText(#13#10#13#10);
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;Socket: TCustomWinSocket);
begin
memo1.Text:=Socket.ReceiveText;
end;
解析memo1中的内容即可.
 
多人接受答案了。
 
出了一个问题啊,楼上的老大们,我在2003下做你们方法的测试
他是可以返回内容,偏偏就没有Server这栏,我晕...
 
没有用过2003,返回内容是什么?
 
在2003中返回的信息和2000下返回的基本是一样,出了少了Server这一栏,
所以我在考虑使用Http的Request的方式,因为Response下有个Server属性,
即可反馈,但是我不知道如何使用Indy中的idHttp组件,不知道tinahf对
这个有没有研究,如果有研究请不吝赐教,谢谢
 
发送一个完整的请求试试(下面串中 用ClientSocket1.host或ClientSocket1.Address取决与你连接时给哪个赋了值)
Socket.SendText('HEAD / HTTP/1.1'+#13#10+'Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*'+#13#10+'User-Agent: Mozilla/3.0 (compatible)'+#13#10+'Host: '+ClientSocket1.host+#13#10#13#10);
 
后退
顶部