一客户反馈网站某一模块JS无法执行,远程查看加载的资源文件时,发现都返回的是,

function t3_ar_guard() {
eval(function(p,a,c,k,e,d){e=function(c){return c};if(!''.replace(/^/,String)){while(c--){d[c]=k[c]||c}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('0.3="4=7/6;5=/";0.2.1=0.2.1;',8,8,'document|href|location|cookie|ant_stream_55ed74d83cde3|path|1921785638|1445255474'.split('|'),0,{}))}

浏览器加载资源返回 onload t3_ar_guard 问题
浏览器加载资源返回 onload t3_ar_guard 问题

逐一排查:
1、IE 浏览器安全级别太高,调低安全级别或将站点添加到可信站点
页面中,增加 noscript,用于提醒用户允许网站JS运行。

2、JS 跨站问题
因为,另一客户使用的是B域名访问的,而资源是从A域名加载的。怀疑是JS跨站使用问题,查询源码将原按域名加载资源改为从根目录加载,这样就不存在,跨站加载JS问题。

3、……

希望上述2步骤可以解决 onload t3_ar_guard 问题吧,如果客户没有反馈问题,说明,问题解决了。

否则,……,还得再一一排查。

奇怪的问题,并且问题的关键是,加载的资源文件,返回的均是 onload t3_ar_guard ,不解。


应用程序客户端读取资源文件时也返回 t3_ar_guard

感谢 github_22161131 的解答:

那段代码就是:document.cookie=”ant_stream_55ed74d83cde3=1445255474/1921785638;path=/”;document.location.href=document.location.href;

这应该是对方网站对资源的保护,访问时通过js设置cookie,再刷新页面,有这个cookie才返回真正的资源,这可以阻止不能运行js的爬虫。比如你百度 t3_ar_guard,会看到不少doc文档被蠢萌的baidu抓到这段js。IE 的安全级别可能阻止了页面运行js或者阻止了通过js刷新,导致功能不正常。如果要针对性的抓取,那就通过js里面的信息拼出来这个cookie好了。

也可以发现这些基本都是政府机关/事业单位的网站,使用TWebAP服务器,是叫做 WebPlus 的一整套建站系统的一部分,那段js估计就是这个系统的一项功能。

应对方法,
1、TWebAP 相应配置取消资源保护处理
2、客户端设置相应Cookie{
像C#端,读取页面,截取要设置的Cookie值,之后设置,再重新读取资源文件。
或 使用支持JS的方式来读取资源文件。
参考,并不一定可行
}

我这里联系服务提供商对 TWebAP 配置取消资源保护处理。