如何防止网页自动跳转
浏览器地址栏里输了个网址,何防回车,止网转页面闪了一下,页自却停在了另一个完全不相干的动跳网站上。这种事我碰到过不下十次,何防最近一次是止网转在查某个开源库的文档时,被硬生生拽进了一个赌博广告页。页自手机甚至还没反应过来,动跳返回键按烂了也没用,何防直接给你连环跳。止网转 跳转的页自本质就两种:一种是页面里的JavaScript在搞鬼,另一种是动跳HTTP协议层的重定向。前者恶心,何防后者更隐蔽。止网转JS跳转最常见的页自手段是 对付JS跳转,最粗暴也最有效的办法是禁用JavaScript。但现实是,现在网页没JS基本等于废了,你不能因噎废食。折中方案是装个uBlock Origin或者NoScript这类扩展,它们能拦截特定域名的脚本执行。我把经常跳转的几个广告域名直接写进自定义过滤规则里,世界清净了一大半。但道高一尺魔高一丈,有些网站把跳转脚本和正常业务逻辑混在同一个文件里,你没法精准切割,一禁全禁,功能也废了。 HTTP层面的重定向更麻烦。服务器返回302或者meta refresh,浏览器就乖乖跟着走。这时候你得看响应头,用curl命令手动抓一下请求, 还有个容易被忽略的坑:DNS劫持。你输入的是正规网址,但你的网络运营商在DNS解析阶段就给你指到了山寨服务器上,那服务器再给你返回一个302跳转。这种情况你改浏览器设置没用,得换DNS服务器,比如用 浏览器设置里也有个隐藏开关值得动一动。Chrome和Edge都有"安全DNS"选项,开启后能加密你的DNS查询请求,防止中间人篡改。另外,把浏览器语言设置改成英文,有些跳转脚本专门针对中文UA写逻辑,你换个语言环境,它反而判断不出你是谁,跳转就失效了。这招我试过几次,成功率大概七成,不保证全管用,但值得一试。 最后说个偏方。如果你只是临时要看某个页面内容,不想被跳走,在地址栏输入window.location.replace(),这玩意儿会把当前页面历史记录直接替换掉,你想按后退键回去?门都没有。还有一种是用meta refresh标签,藏在head里,几秒后自动刷新到指定URL,很多垃圾站就靠这个做"流量中转"。curl -I 目标网址,看返回的Location字段指向哪。如果发现第一次请求就302到别的域名,八成是服务器端做了UA识别——它检测到你用的是普通浏览器,就给你跳广告页,但如果你伪装成搜索引擎爬虫,它反而放行。我试过用curl模拟Googlebot的User-Agent去访问那个文档站,结果正常返回了内容,连广告的影子都没有。挺讽刺的,网站防爬虫的技术用在了坑用户上。223.5.5.5(阿里)或者8.8.8.8(谷歌)。我家里路由器常年手动指定DNS,运营商默认的那个老爱搞小动作,换完后再没出现过输入A网站却跳到B网站的事。view-source:网址,直接看源码。虽然体验差,但能绕过所有脚本执行,页面源码里藏着的信息一目了然。我就靠这招扒过好几个跳转链接的真实去向,顺藤摸瓜找到了背后挂着广告联盟的域名,直接在hosts文件里把它们指向127.0.0.1,彻底屏蔽。当然,这得有点动手能力,但比起每次被跳转后骂娘,花十分钟改个hosts文件,性价比高多了。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-