美文网首页
地址栏注入JS代码

地址栏注入JS代码

作者: 神一般的进进 | 来源:发表于2019-05-22 12:54 被阅读0次

    作为一个前端开发人员,对浏览器的了解肯定要比普通用户更多,一般在页面上注入JS会在控制台进行,而地址栏其实也可以完成这个操作,甚至可以通过A标签的href属性来执行JS。

    // 以下是一些点击无反应的A标签
    <a href="javascript:void(0);">点击无反应</a>
    <a href="javascript:;">点击无反应</a>
    <a href="javascript:null;">点击无反应</a>
    // 直接将href属性设为 "" 还是会跳转的
    

    可以看出,点击A标签其实就是把href值放到地址栏去跳转了,这里以“javascript:”开头,跳转时就会执行后面的JS代码,类似于“http:”这样的URL Protocol协议。

    注入代码执行失败:

    虽然这看起来很方便,但是在实际使用时却会出现一个很严重的问题,那就是注入的JS代码过长时,会出错,首先确定代码没有写错,在控制台可以正常执行,只有在地址栏执行失败。
    解决方法,那就是使用自调用函数把这些代码包起来,比如:

    javascript:let a=b=c=10;for(let i=0;i<a;i++){b++;c--;console.log("a:"+a);console.log("b:"+b);console.log("c:"+c);};alert("JS代码执行完成");
    // 给以上代码套上自调用函数,如下:
    javascript:(()=>{let a=b=c=10;for(let i=0;i<a;i++){b++;c--;console.log("a:"+a);console.log("b:"+b);console.log("c:"+c);};alert("JS代码执行完成");})();
    

    这样后者安全性要高得多,如果第一种写法(没有套自调用函数)报错,代码没有问题的话,给它加上一层自调用函数即可解决问题,既然如此何不养成一个套自调用函数的习惯呢。
    这是个比较冷门的功能,有些时候又不得不用,因为被注入JS的页面可能是别人的,下面再提供一种玩法:


    有广告的搜索结果

    像这样,使用百度搜索时,左侧可能有我们需要的搜索结果,右侧几乎都是无用的推荐,或者毫无意义的广告,那么我们可以给浏览器新建一个书签(任意网页按Ctrl+D,然后再修改),这个书签的网址写上这样一段代码:

    javascript:(()=>{document.querySelector("#content_right")?document.querySelector("#content_right").style.display="none":null;document.getElementById("rs")?document.querySelector("#rs").style.display="none":null;document.querySelector(".search_tool")?document.querySelector(".search_tool").style.display="none":null;let name=document.querySelector("#content_left")?document.querySelector("#content_left").innerHTML.split("class=\"")[1].split(" ")[0]:null;if(name!=null){for(let i=0;i<document.querySelectorAll("."+name).length; i++){if(document.querySelectorAll("."+name)[i].innerHTML.search("广告")!=-1){document.querySelectorAll("."+name)[i].style.display="none";}}}})();
    
    注:360双核浏览器请切换为极速模式
    注:如果直接把代码复制到地址栏,前面的"javascript:"会被浏览器删掉,需要手动输入
    注:等页面加载完再点击执行,不然页面会重新加载广告
    书签将网址设为代码

    这样就像是给浏览器加了一个清除广告的按钮,只需要轻轻一点就可以清除全部的广告,效果如下:


    清除广告后的页面

    相关文章

      网友评论

          本文标题:地址栏注入JS代码

          本文链接:https://www.haomeiwen.com/subject/cdeyzqtx.html