背景
最近手里有个项目需要检测域名在微信里是否可以打开,如果被微信拦截,则需要进行下一步操作,所以需要判断域名的状态,但是微信官方并没有提供相关查询的方法,最后在网上找到了这个接口地址,分享给有需要的朋友。
image
域名被封常见原因
域名被封,确实有很多因素,简单列举下:

1、购买的域名有黑历史,曾经进过小黑屋,这类则是风险名单中的重点检测对象。

2、qq和微信是2种完全不同的检测机制,经常会出现一边被封另一边没事!

3、网站流量过大,腾讯针对流量过大的网站也是重点检测的对象!

4、诱导转发活动,即使是合法营销,也会被封;

5、 正文、标题、图片任意有一处有一点点违规信息,被系统抓取到也是会被封禁

6、人工举报,这个也占有一定的比例

7、有的是封链接不封域名,因为是腾讯合作的第三方平台,京东、拼多多、有赞等等

8、 服务器 IP是一个很重点检测。

9、对于明显特征或复用度高的违规图片,系统是能识别的!

检测接口分享
使用说明
API接口说明
名称 说明
接口地址 https://api.yemao.vip/v2/wech...
返回格式 JSON
请求方式 GET
请求示例 https://api.yemao.vip/v2/wech... key&url=www.qq.com
接口备注 如果您处于登录状态,请求示例中的App Key即是您真实的App Key,不需要再去我的APPKEY查询

请求参数说明
名称 必填 类型 说明
app_key 是 string 用户的App Key,在我的APPKEY可查询到,用于API调用
url 是 string 需要检测的url或域名,例:https://www.qq.com/ 或 www.qq.com

返回参数说明
名称 类型 说明
code integer 状态码,0表示正常,非0表示错误
msg string 提示信息
data.status string 域名状态,取值:ok(正常)、blocked(被封)
data.err_code integer 域名被封的原因,0(正常)、30001(页面被转码)、30002(已停止访问该网页)、30998(如需浏览,请长按网址复制后使用浏览器访问)、30999(其他未知错误)
data.err_msg string 错误说明
data.sub_err_msg string 详细的错误说明

JSON返回示例
`//请求频率过快
{

"code": 10001,
"msg": "接口调用频率过快",
"data": []

}

//服务端处理请求出现异常
{

"code": 10004,
"msg": "系统内部错误,请重试",
"data": []

}

//请求成功且域名正常
{

"code": 0,
"msg": "OK",
"data": {
    "status": "ok",
    "err_code": 0,
    "err_msg": "",
    "sub_err_msg": ""
}

}

//请求成功但域名被封
//被封原因:已停止访问该网页 - 网页包含侵权内容
{

"code": 0,
"msg": "OK",
"data": {
    "status": "blocked",
    "err_code": 30002,
    "err_msg": "已停止访问该网页",
    "sub_err_msg": "网页包含侵权内容"
}

}

//请求成功但域名被封
//被封原因:页面被转码 - 非微信官方网页
{

"code": 0,
"msg": "OK",
"data": {
    "status": "blocked",
    "err_code": 30001,
    "err_msg": "页面被转码",
    "sub_err_msg": "非微信官方网页"
}

}

//请求成功但域名被封,需要长按网址复制后使用浏览器访问
{

"code": 0,
"msg": "OK",
"data": {
    "status": "blocked",
    "err_code": 30998,
    "err_msg": "如需浏览,请长按网址复制后使用浏览器访问",
    "sub_err_msg": ""
}

}`

示例代码
Python

# -*- coding: utf-8 -*-

import json, urllib
from urllib import urlencode

def main():
# 您的App Key,在我的APPKEY可查询到
apiToken = "*********************"

url = "https://api.yemao.vip/v2/wechat_url_check"
params = {
"url" : "www.qq.com", #需要检测的地址或域名
"app_key" : apiToken,

}
params = urlencode(params)
f = urllib.urlopen("%s?%s" % (url, params))

content = f.read()
res = json.loads(content)
if res:
code = res["code"]
if code == 0:
#成功请求
print res["result"]
else:
print "%s: %s" % (res["code"],res["msg"])
else:
print "request api error"

if __name__ == '__main__':
main()

PHP

<?php
/**
* @author 野猫VIP
* @copyright 2020
* @see http://yemao.vip/open/weixin_jiance
*/
try {
    //您的App Key,在我的APPKEY可查询到
    $apiToken = "********************************";
    //需要检测的地址或域名
    $reqUrl = "www.qq.com";
    $url = sprintf("https://api.yemao.vip/v2/wechat_url_check?app_key=%s&url=%s", $apiToken, $reqUrl);
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
    //禁止cURL验证对等证书(peer's certificate),不建议生产环境这么配置
    //如果出现证书问题,建议在https://curl.haxx.se/docs/caextract.html下载最新证书
    //并打开php.ini添加:curl.cainfo=/path/to/cacert.pem
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $responseBody = curl_exec($ch);
    if ($responseBody === false) {
        printf("Curl error: %s\n", curl_error($ch));
        return;
    }
    $responseArr = json_decode($responseBody, true);
    if (json_last_error() != JSON_ERROR_NONE) {
        printf("JSON解析接口结果出错:%s\n", json_last_error_msg());
        return;
    }
    if (isset($responseArr['code']) && $responseArr['code'] == 0) {
        //接口正确返回
        //$responseArr['data']['status'] 的取值范围:ok、blocked
        //ok:表示正常;blocked:表示被封
        printf("测试地址(%s)的状态为:%s\n", $reqUrl, $responseArr['data']['status']);
    } else {
        printf("接口异常:%s\n", var_export($responseArr, true));
    }
} catch(Exception $e) {
    printf("出现异常:%s\n", $e->getMessage());
}

野猫VIP
1 声望0 粉丝