wininet api 的奇怪现象,不能访问目标网站


最近使用 VC ++ 写了一个小程序,需要访问 WebApi,简单的使用了 Wininet api 来访问 Web服务器。在大部分情况下都很正常。但是有相当一部分用户,调用 wininet 后,并没有访问到服务器,而是取道了一段莫名其妙的脚本。然后 使用 IE 访问服务器网站,会自动在网址后边加上一些东西,例如 http://api.xxx.com/?akdkfj=akdfl 。好像是目标计算机中了什么病毒式的,可是用户所杀毒还没有。使用浏览器访问一便后,再用 wininet api 访问服务器就正常。

请问这个一般是什么情况,怎么才能解决这个问题?

通过 Wininet api 得到的脚本内容

var gh="/",hh="jhqh",kh,ih=new Array(),jh;function eh(fh){for(kh=0;kh<jh.length;kh++)ih[kh]=jh.charCodeAt(kh);kh=4;while(true){if(kh>51)break;ih[kh]=(ih[kh]-ih[kh+1])&0xff;ih[kh]=(ih[kh]+ih[0])&0xff;kh++;}kh="kh=48;while(true){if(kh<4)break;ih[kh]=(ih[kh]+ih[kh-1])&0xff;ih[kh]=(-ih[kh])&0xff;kh--;}";eval(kh);kh="kh=51;do{ih[kh]=((((((ih[kh]+ih[kh-1])&0xff)+ih[0])&0xff)<<5)&0xff)|(((((ih[kh]+ih[kh-1])&0xff)+ih[0])&0xff)>>3);}while(--kh>=4);";eval(kh);jh="";for(kh=1;kh<ih.length-1;kh++)if(kh%7)jh+=String.fromCharCode(ih[kh]^fh);kh=eval;kh(jh);}jh="\xc4\xd6\xc8\xcfHv\xe7\xd9\xf6\x92\xf7S\x98\x04\xe1Z\x1d\xe0a\xcc\xf7\xd0\x12U\xf5e\xc7\x05\x11\x90F\x16\x82\\xce\xda,\xbc\xf4n\xcc\x98D\x1c2@>\x96P$\x0f\x22\r";eh(161);

终于找到点眉目了,不是Wininet的原因,是因为金盾防火墙,可能是机房或者是 ISP 用的,用来防止 DDOS 攻击,那段脚本,最后会在 URL 后边加 ?jdfwkey=fadjf, jdfwkey 是不变的。 不过我的是 WebApi,访问的都不是浏览器,解析不了脚本,所以造成访问异常,这个怎么搞啊,十分头疼。

vc++ C++ windows

zenye 11 years, 7 months ago

从你贴出来的 javascript 来看,确实像是某种恶意软件/病毒的作风。这段脚本最终生成并执行了一段脚本 window.location=/User/... ,不确定它具体能起什么作用,反正肯定不是正常的脚本调用。

总之你不用纠结了,应该不是你调用 wininet api 相关的问题。

yaksa answered 11 years, 7 months ago

Your Answer