温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。
微信对于外部链接有着相对比较严格的管理,很可能一不小心就在微信渠道被屏蔽访问,从而影响到推广的效果,因此有必要在分享前对链接进行实时检测,判断是否正常,防患于未然。
本文分享的检测方法使用微信官方接口,可以实时检测状态,非常稳定,准确率达 100%。
原理
在微信中打开链接会存在四种情况:
- 正常访问;
- 红色拦截,屏蔽访问:域名违规或有风险,比如一些皇色网站、反洞网站;
- 白色拦截,复制访问:一般是微信竞争对手,比如 taobao.com、douyin.com 等等;
- 未知拦截,点击访问:一般针对 .top、.xyz、.link 等非主流域名,比如 uuin.top 等;
微信打开链接时会先过一层安全检测,再根据检测结果来跳转相应的页面,因此我们可以通过监测安全检测的响应内容,来判断外部链接的安全性。
实施
前面说到,我们可以通过监测安全检测的响应内容,来判断外部链接的安全性,下文使用 PHP 来实现。
<?php
// 返回JSON
header('Content-type: application/json;charset=utf-8');
// 官方API接口
$api = get_headers('http://mp.weixinbridge.com/mp/wapredirect?url='.$_REQUEST['url']);
// 判断是否被拦截,返回数组包含 weixin110 就代表被封了
if (trim(empty($_REQUEST['url']))) {
$result = array(
'code' => 404,
'msg' => '请输入需要检测的 URL',
'tips' => 'vircloud.net'
);
} else if($api[6] !== 'Location: '.$_REQUEST['url'].''){
$result = array(
'code' => 403,
'msg' => '域名被拦截',
'tips' => 'vircloud.net'
);
} else {
$result = array(
'code' => 200,
'msg' => '域名正常',
'tips' => 'vircloud.net'
);
}
// 输出JSON
echo json_encode($result,JSON_UNESCAPED_UNICODE);
?>
参考文章:
1、《【全新官方接口】php检测微信域名拦截,检测微信域名被封》