[原创]JS脚本获取远程WEB服务器时间
文章标题:[原创]JS脚本获取远程WEB服务器时间顶部 虫虫 发布于:2006-06-3005:25  [楼主][原创]JS脚本获取远程WEB服务器时间
原创作者:虫虫
信息来源:邪恶八进制信息安全团队(www.eviloctal)
看到白猎人的时间校验程序,又想起我以前弄的一个获取远程服务器时间的JS脚本.有没有用我不知道,呵呵~
还是以前的废话连篇的风格,自己都看不惯,就这样贴出来吧:
在百度知道上逛游,忽然看到一个问题是问如何用js取得互联网时间,而不是本地时间。
互联网时间,那不就是时间服务器嘛~好说,先查查资料先~~
可惜结果不甚理想阿,原来时间服务器使用的是UDP协议,而HTTP却TCP的,如果不用自己的控件根本没法完成嘛!本来还想用XMLHTTP做点什么呢~~
后来忽然想到,不是HTTP服务器的响应头都有个DATE选项吗?如果能拿到开了HTTP的时间服务器的HTTP头不就能得到时间服务器的时间了吗?哈哈!
于是说做就做,我用XMLHTTP获得了国内的一台时间服务器的HTTP头,把DATE选项分离出来,就可以啦~~代码:
Copycode
<script>
varxmlhttp=newActiveXObject("MSXML2.XMLHTTP.3.0"); //建立XMLHTTP对象
xmlhttp.open("GET","时间服务器地址/",false); //打开
xmlhttp.send();        //发送
ResponseHeader("Date");  //取得Date选项
alert(dateStr);
</script>
测试一下,哈哈,效果不错~~
可惜好景不长,我再做测试的时候忽然发现得到了一个空的dateStr的值?刚才不还好好的吗?服务器不该随便更改http头啊~
不甘心,于是拿出WinsockExpert,我抓包!看你小子怎么弄的!
这是我发送的包:
GET/HTTP/1.1
Accept:*/*
Accept-Language:zh-cn
Referer:file://C:\DocumentsandSettings\Administrator\桌面\date.htm
Accept-Encoding:gzip,deflate
If-Modified-Since:Sun,16Nov200305:49:50GMT
If-None-Match:"663c-1bcd-3fb70ffe"
User-Agent:Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;SV1;AlexaToolbar)
xx
Connection:Keep-Alive
这是收到的包:
HTTP/1.1304NotModified
Date:Thu,30Mar200605:34:31GMT
Server:Apache/1.3.27(Unix)
Connection:Keep-Alive
Keep-Alive:timeout=15,max=100
ETag:"663c-1bcd-3fb70ffe"
里面有时间啊?难道是IE直接去缓存取了所以就不给时间?
好,修改下,If-Modified-Since这个选项不要了~~否则ie就跑去缓存去了就不给时间了,可是XMLHTTP好象没有删除选项头的方法~~只好修改吧~~
在xmlhttp.open这句后面加上:
xmlhttp.setRequestHeader("If-Modified-Since","q");//"q"是我随便打上去的,因为改成了""好像就不能正确执行了~~
再来测试下~~
Thu,30Mar200605:53:47GMT
哈哈~~成功了,看来我的猜测是正确的哦~
再有一个小问题就是这里得到的是GMT标准时间,我们想要我
们所在时区的时间怎么办啊?有个简单方法:
ResponseHeader("Date");
vard=newDate(dateStr);//解析为Date对象
document.write(d);  //输出
得到ThuMar3013:43:36UTC+08002006
ok,问题解决了。
代码现在是
Copycode
<script>
varxmlhttp=newActiveXObject("MSXML2.XMLHTTP.3.0");
服务器地址
xmlhttp.open("GET","时间服务器地址/",false);
xmlhttp.setRequestHeader("If-Modified-Since","q");
xmlhttp.send();
ResponseHeader("Date");
vard=newDate(dateStr);
document.write(d);
</script>
代码中的时间服务器地址可以替换为一个速度比较快的,比较官方的HTTP服务器,例如www.163.COM呵呵。当然如果你改成一个开了WEB服务的标准时间服务器就更好了.
不过还有一点小问题就是这个脚本是同步的,一直等到收到时间服务器的返回信息后才继续执行,所以……可以修改成异步方式的,
就留给读者自己修改吧,呵呵。相关资料可以去lhttp/查询。(c)Copyleft2003-2007,EvilOctalSecurityTeam.
ThisfileisdecompiledbyanunregisteredversionofChmDecompiler.
Regsiteredversiondoesnotshowthismessage.
YoucandownloadChmDecompilerat:www.zipghost/

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。