实时检测微信域名防红拦截检测API-最新腾讯域名屏蔽检测官方接口
背景
最近手里有个项目需要检测域名在微信里是否可以打开,如果被微信拦截,则需要进行下一步操作,所以需要判断域名的状态,但是微信官方并没有提供相关查询的方法,最后在网上找到了这个接口地址,分享给有需要的朋友。
域名被封常见原因
域名被封,确实有很多因素,简单列举下:
1、购买的域名有黑历史,曾经进过小黑屋,这类则是风险名单中的重点检测对象。
2、qq和微信是2种完全不同的检测机制,经常会出现一边被封另一边没事!
3、网站流量过大,腾讯针对流量过大的网站也是重点检测的对象!
4、诱导转发活动,即使是合法营销,也会被封;
5、 正文、标题、图片任意有一处有一点点违规信息,被系统抓取到也是会被封禁
6、人工举报,这个也占有一定的比例
7、有的是封链接不封域名,因为是腾讯合作的第三方平台,京东、拼多多、有赞等等
8、 服务器 IP是一个很重点检测。
9、对于明显特征或复用度高的违规图片,系统是能识别的!
检测接口分享
使用说明
API接口说明
名称说明
接口地址https://api.yemao.vip/v2/wechat_url_check
返回格式JSON
请求方式GET
请求示例https://api.yemao.vip/v2/wechat_url_check?app_key=您的App 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
返回参数说明
名称类型说明
codeinteger状态码,0表示正常,非0表示错误
msgstring提示信息
data.statusstring域名状态,取值:ok(正常)、blocked(被封)
data.err_codeinteger域名被封的原因,0(正常)、30001(页面被转码)、30002(已停止访问该网页)、30998(如需浏览,请长按网址复制后使用浏览器访问)、30999(其他未知错误)
data.err_msgstring错误说明
data.sub_err_msgstring详细的错误说明
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());
}