前言
最近在接一位老板的活,主要做链接推广的,域名经常会被微信封掉,封掉只能再换域名。
初步解决方法也很low,就是多买些域名绑定到页面,一个封了,马上换另一个域名。
这样方法极为不方便,如果被封了也没有及时发现,还在推的话是很烧钱的(虽然不是我的钱),除非时时刻刻人工观察。
下面就记录一下解决此问题的方法,或许以后我也用的上呢
一、正题开始
准备好多个域名,一个主域名,其他随意,只要微信没拦截的都可以,主要是主域名要好,最好用了很多年对老域名,权重高的。
主域名(即推广时放的域名链接),别的域名都用来做跳转。
步骤:点击主域名-检测是否被拦截-跳转到未拦截到域名
二、接口
问题来了,我怎么知道域名被没被拦截,难道一个个看吗?当然No!
这里准备了一些我网上收集到的免费微信检测接口,如下:
http://wxcheck.wxjump-api.cn/926pzfzo/wxcheck?url=域名
http://wxcheck.wxjump-api.cn/eildqwfn/wxcheck?url=域名
http://check.uomg.com/api/urlsec/vx?domain=域名
http://www.yumingjiance.net/index.php?s=/index/ck_weixin&domain=域名
https://wx.horocn.com/api/v1/wxUrlCheck?need_icp=yes&api_token=9e4c4a1f51153e45e4ca2bd88d8b4afd&req_url=域名
以上接口均返回json格式的数据,先随便选一个接口看一下json数据
http://wxcheck.wxjump-api.cn/926pzfzo/wxcheck?url=www.lxtian.com
得到以下数据
{"status":1,"msg":"域名正常","tips":"33ms","url":"www.lxtian.com"}
我就以status来判断。
三、代码块
比如ssss.com是主域名,aaa.com、bbb.com、ccc.com是跳转域名
<script src="./js/jquery.min.js"></script>
<script>
//判断是否微信打开
function isWeixin() {
var ua = navigator.userAgent.toLowerCase();
if (ua.match(/MicroMessenger/i) == "micromessenger") {
return true;
} else {
return false;
}
}
var isWeixin = isWeixin();
//域名数组,这里填上跳转的域名
var urls = ["aaa.com","bbb.com", "ccc.com"];
//检测域名是否被微信拦截
function test(i) {
//var r = false;
$.ajax({
type: "GET",
dateType: "JSON",
data: {url: urls[i]},
url: "http://wxcheck.wxjump-api.cn/926pzfzo/wxcheck",
async: false,//必须设置为false,否则无法传出r的值
success: function (data) {
var status = JSON.parse(data).status;//获取状态值
if (status == 1) r = true;
}
});
return r;
}
var isNormal=true;//默认true,如副域名全封则自动为false
顺序跳转
//遍历副域名只要检测到1个正常,则跳转并停止遍历
if(isDomain&&isWeixin){
for (var i = 0, r = false; i < urls.length; i++) {
test(i);
//console.log(r);
if (r) {
window.location.href = `http://${urls[i]}?r=${Math.random().toString(36).substr(2,4)}`;
break;
}else{
isNormal=false;
}
}
}
只要在微信端打开sss.com,就会跳转aaa.com,如aaa.com被封则跳转bbb.com,以此类推。
随机跳转
if(isWeixin){
var dname=[];
for (var i = 0, r = false; i < urls.length; i++) {
test(i);
//console.log(r);
//如果检测的域名正常则把该域名追加到dname
if (r) {
dname.push(urls[i]);//追加
}
}
//判断如果dname不为空
if(!dname.length==0){
isNormal=!dname.length==0;
//随机获取dname下标
var dname_index = Math.floor(Math.random() * urls.length);
//随机获取dname的一个值
var dname_tz = dname[dname_index];
window.location.href = `http://${dname_tz}?r=${Math.random().toString(36).substr(2,4)}`;
}
}
</script>
只要在微信端打开sss.com,就会随机进行跳转aaa.com或aaa.com或bbb.com,被拦截的域名则不会跳转
额,和顺序跳转相比较,随机跳转效率较差,因为每次都需要把副域名遍历完毕。
结束
以上方法都存在一个缺点,即副域名域名过多,会影响打开页面的速度,不适用于过多的副域名,否则页面加载会很慢
方法较笨,小弟目前也只能想这出了,如有不足请多多指导。。
demo
个人写的域名检测地址:微信域名检测系统