JS脚本获取远程WEB服务器时间
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[原创]JS脚本获取远程WEB服务器时间
文章标题:[原创]JS脚本获取远程WEB服务器时间顶部 虫虫 发布于:2006-06-3005:25 [楼主][原创]JS脚本获取远程WEB服务器时间
原创作者:虫虫
信息来源:邪恶八进制信息安全团队()
看到白色猎人的时间校验程序,又想起我以前弄的一个获取远程服务器时间的JS脚本.有没有用我不知道,呵呵~
还是以前的废话连篇的风格,自己都看不惯,就这样贴出来吧:
在百度知道上逛游,忽然看到一个问题是问如何用js取得互联网时间,而不是本地时间。
互联网时间,那不就是时间服务器嘛~好说,先查查资料先~~
可惜结果不甚理想阿,原来时间服务器使用的是UDP协议,而HTTP却TCP的,如果不用自己的控件根本没法完成嘛!本来还想用XMLHTTP做点什么呢~~
后来忽然想到,不是HTTP服务器的响应头都有个DATE选项吗?如果能拿到开了HTTP的时间服务器的HTTP头不就能得到时间服务器的时间了吗?哈哈!
于是说做就做,我用XMLHTTP获得了国内的一台时间服务器的HTTP头,把DATE选项分离出来,就可以啦~~代码:
Copycode
测试一下,哈哈,效果不错~~
可惜好景不长,我再做测试的时候忽然发现得到了一个空的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)
Host:
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标准时间,我们想要我
们所在时区的时间怎么办啊?有个简单方法:
vardateStr=xmlhttp.getResponseHeader("Date");
vard=newDate(dateStr);//解析为Date对象
document.write(d); //输出
得到ThuMar3013:43:36UTC+08002006
ok,问题解决了。
代码现在是
Copycode
代码中的时间服务器地址可以替换为一个速度比较快的,比较官方的HTTP服务器,例如呵呵。当然如果你改成一个开了WEB服务的标准时间服务器就更好了.
不过还有一点小问题就是这个脚本是同步的,一直等到收到时间服务器的返回信息后才继续执行,所以……可以修改成异步方式的,
就留给读者自己修改吧,呵呵。相关资料可以去/查询。(c)Copyleft2003-2007,EvilOctalSecurityTeam.
ThisfileisdecompiledbyanunregisteredversionofChmDecompiler.
Regsiteredversiondoesnotshowthismessage.
YoucandownloadChmDecompilerat:/