网站防红跳转代码
网站被红后,网站用户点进来直接跳转到一个警告页面,防红上面写着“该网站已被举报”。跳转这个页面实际上是代码浏览器或安全软件自动生成的,域名和内容都被拦截了。网站很多站长第一反应是防红换域名,但换域名成本高,跳转老用户全丢了,代码权重也没了。网站更快的防红救急办法是搞一套防红跳转代码,让被拦截的跳转域名自动把访问者引导到备用域名上。 防红跳转的代码核心逻辑就一句话:检测到当前页面被浏览器拦截,就立刻用JS跳走。网站但这里有个坑,防红浏览器拦截发生在页面加载之前,跳转JS根本跑不起来。所以真正有效的做法是让服务器端先出手,用302重定向把流量导过去。可问题又来了,如果服务器IP也被封了,重定向也白搭。这时候就得靠DNS层面的解析,把被墙的域名指向一个还活着的服务器,再由那台服务器返回一段HTML,里面塞着iframe或meta refresh。 我见过一个做色情资源站的哥们儿,他的做法很野。他搞了十几个域名,每个域名都做了防红处理,核心代码其实就几行。他用的方案是PHP后端判断User-Agent,如果是微信内置浏览器或者QQ浏览器,就返回一段正常的跳转页面;如果是普通浏览器,就返回一段带JS的页面,这段JS会先检查document.referrer,如果来源是搜索引擎就正常显示,否则就触发location.replace跳转到备用域名。这招儿能骗过不少初级的红检测,因为红检测通常只抓静态内容,不会执行JS。 但防红跳转不是一劳永逸的。红检测方也在升级,现在很多安全软件会直接检测页面里有没有location.replace或者meta refresh这类特征代码。所以代码得写得更隐蔽,比如用setTimeout延迟执行跳转,或者把跳转逻辑拆成多个函数,中间穿插一些无关的运算。还有个细节,跳转目标域名不能直接写在JS里,得用base64加密一下,或者从服务器接口动态获取,否则检测方一看JS里有个陌生域名,直接就把整个页面标记为恶意了。 我自己测试过一套方案,效果还行。思路是让服务器返回一个空壳页面,里面只有一个canvas画布,通过canvas的toDataURL方法读取像素数据,然后利用像素值的变化来触发跳转。这招儿检测方很难识别,因为canvas操作本身是合法的,跳转逻辑藏在像素计算里。但缺点也很明显,页面加载速度会慢半拍,用户会看到一秒左右的白屏。对普通用户来说,这半秒感知不强,但如果是做电商导流的,转化率会掉几个点。 说到底,防红跳转就是一场猫鼠游戏。红检测方根据你的跳转特征更新规则,你就得跟着改代码。没有一套代码能永远生效,所以站长们通常要准备两三套备选方案,一旦某套代码被识别,马上切换。最稳妥的做法是搞一个独立的监控脚本,定期访问自己的域名,如果发现返回的是红页面,就自动触发DNS切换,把域名解析到备用服务器上。这个过程最好全自动,别等人去发现,因为红页面挂得越久,用户流失越严重。 最后提醒一句,防红跳转只是权宜之计,治标不治本。如果网站内容本身有问题,换多少域名都会被封。真正该做的是把内容合规化,或者干脆把服务器搬到海外,用CDN分散风险。不过话说回来,真要是内容没问题,谁会去搞防红跳转呢?
-
上一篇
-
下一篇