脚本修改 原生JS 判断浏览器版本的判定
本帖最后由 ZYMKJ 于 2022-10-28 14:44 编辑> 本帖最后由 ZYMKJ 于 2022-10-28 14:35 编辑
> 本帖最后由 ZYMKJ 于 2022-10-28 14:34 编辑
网页头部引用了browser.js对浏览器及其版本进行了判断。
我用的360极速浏览器,每次打开都谈alert弹窗,必须按回车或者其他键才能继续进行下一步,导致脚本进行不下去
现在有4个思路:
1、脚本直接修改navigator.userAgent.toLowerCase()的返回值("mozilla/5.0 (windows nt 6.1; wow64) applewebkit/537.36 (khtml, like gecko) chrome/86.0.4240.198 safari/537.36");
2、劫持browser.js,使下段代码失效
```
if(!isIeBrowser()){
alert('请使用IE8.0及以上版本浏览器听课!');
}else if(parseInt(getBrowserVersion()) != NaN && parseInt(getBrowserVersion()) < 8 ){
alert('请使用IE8.0及以上版本浏览器听课!');
};
```
3、覆盖原生JS代码,去掉alert弹窗(网页原生JS中的a12176141 是随机值,不能动,只去掉if(){alert}中的alert);
4、简单粗暴,脚本直接模拟键盘输入 回车键。但alert会打断脚本执行
求解决最简洁的解决方案
代码如下:
```
function isIeBrowser(){
var userAgent = navigator.userAgent.toLowerCase();
return /msie/.test(userAgent) && !/opera/.test(userAgent);
}
function isChromeBrowser(){
var userAgent = navigator.userAgent.toLowerCase();
return /chrome/.test(userAgent);
}
/**
* 获取浏览器版本号
* @returns
*/
function getBrowserVersion(){
var userAgent = navigator.userAgent.toLowerCase();
return (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || []);
}
```
原生JS 对返回值进行了判断
```
<script type="text/javascript">
$(document).ready(function(){
//如果不是ie浏览器
if(!isIeBrowser()){
alert('请使用IE8.0及以上版本浏览器听课!');
}else if(parseInt(getBrowserVersion()) != NaN && parseInt(getBrowserVersion()) < 8 ){
alert('请使用IE8.0及以上版本浏览器听课!');
}
var isHttps = location.protocol.indexOf('https') != -1;
var thisUrl1 = isHttps ? 'https://****/a12176141/index.html' : '/course/a12176141/index.html';
var thisUrl2 = isHttps ? 'https://****/a12176141/index.htm' : '/course/a12176141/index.htm';
$.ajax({
url:'/course/a12176141/index.html',
type:"get",
success:function(){
//说明请求的url存在,并且可以访问
$("#courseplay").attr("src", thisUrl1);
},
statusCode:{
404:function(){
//说明请求的url不存在
$("#courseplay").attr("src", thisUrl2);
}
}
});
});
</script>
``` 本帖最后由 steven026 于 2022-10-28 15:15 编辑
ZYMKJ 发表于 2022-10-28 15:05
有。 那个早都有。。还是弹窗
那脚本就做不到了
上插件吧,改user-agent
【不应该吧 你不会声明了grant吧 要么把部分代码发出来,要不你试试unsafeWindow.alert=()=>{}
脚本如果追不上触发速度是没办法修改alert条件以及判断了
脚本也没法控制模态框
这种情况更推荐用插件或者远程调试浏览器的dll写 本帖最后由 steven026 于 2022-10-28 14:59 编辑
求解决最简洁的解决方案
直接干掉alert{:4_86:}
既然能按回车跳过,说明alert没实质作用,只有阻塞这一个作用,后续代码还能正常运行
那么,无用之人,死
window.alert=()=>{}
steven026 发表于 2022-10-28 14:54
直接干掉alert
既然能按回车跳过,说明alert没实质作用,只有阻塞这一个作用,后续代码还能正常 ...
不好使,还是弹出。 ZYMKJ 发表于 2022-10-28 15:02
不好使,还是弹出。
//@run-at document-start steven026 发表于 2022-10-28 15:04
//@run-at document-start
有。 那个早都有。。还是弹窗 steven026 发表于 2022-10-28 15:12
那脚本就做不到了
上插件吧,改user-agent
unsafeWindow就好使了。谢谢
页:
[1]