背景
最近手里有個(gè)項(xiàng)目需要檢測(cè)域名在微信里是否可以打開(kāi),如果被微信攔截,則需要進(jìn)行下一步操作,所以需要判斷域名的狀態(tài),但是微信官方并沒(méi)有提供相關(guān)查詢(xún)的方法,最后在網(wǎng)上找到了這個(gè)接口地址,分享給有需要的朋友。
域名被封常見(jiàn)原因
域名被封,確實(shí)有很多因素,簡(jiǎn)單列舉下:
1、購(gòu)買(mǎi)的域名有黑歷史,曾經(jīng)進(jìn)過(guò)小黑屋,這類(lèi)則是風(fēng)險(xiǎn)名單中的重點(diǎn)檢測(cè)對(duì)象。
2、qq和微信是2種完全不同的檢測(cè)機(jī)制,經(jīng)常會(huì)出現(xiàn)一邊被封另一邊沒(méi)事!
3、網(wǎng)站流量過(guò)大,騰訊針對(duì)流量過(guò)大的網(wǎng)站也是重點(diǎn)檢測(cè)的對(duì)象!
4、誘導(dǎo)轉(zhuǎn)發(fā)活動(dòng),即使是合法營(yíng)銷(xiāo),也會(huì)被封;
5、 正文、標(biāo)題、圖片任意有一處有一點(diǎn)點(diǎn)違規(guī)信息,被系統(tǒng)抓取到也是會(huì)被封禁
6、人工舉報(bào),這個(gè)也占有一定的比例
7、有的是封鏈接不封域名,因?yàn)槭球v訊合作的第三方平臺(tái),京東、拼多多、有贊等等
8、 服務(wù)器 IP是一個(gè)很重點(diǎn)檢測(cè)。
9、對(duì)于明顯特征或復(fù)用度高的違規(guī)圖片,系統(tǒng)是能識(shí)別的!
檢測(cè)接口分享
使用說(shuō)明
API接口說(shuō)明
名稱(chēng)說(shuō)明
接口地址https://api.yemao.vip/v2/wechat_url_check
返回格式JSON
請(qǐng)求方式GET
請(qǐng)求示例https://api.yemao.vip/v2/wechat_url_check?app_key=您的App key&url=www.qq.com
接口備注如果您處于登錄狀態(tài),請(qǐng)求示例中的App Key即是您真實(shí)的App Key,不需要再去我的APPKEY查詢(xún)
請(qǐng)求參數(shù)說(shuō)明
名稱(chēng)必填類(lèi)型說(shuō)明
app_key是string用戶(hù)的App Key,在我的APPKEY可查詢(xún)到,用于API調(diào)用
url是string需要檢測(cè)的url或域名,例:https://www.qq.com/ 或 www.qq.com
返回參數(shù)說(shuō)明
名稱(chēng)類(lèi)型說(shuō)明
codeinteger狀態(tài)碼,0表示正常,非0表示錯(cuò)誤
msgstring提示信息
data.statusstring域名狀態(tài),取值:ok(正常)、blocked(被封)
data.err_codeinteger域名被封的原因,0(正常)、30001(頁(yè)面被轉(zhuǎn)碼)、30002(已停止訪問(wèn)該網(wǎng)頁(yè))、30998(如需瀏覽,請(qǐng)長(zhǎng)按網(wǎng)址復(fù)制后使用瀏覽器訪問(wèn))、30999(其他未知錯(cuò)誤)
data.err_msgstring錯(cuò)誤說(shuō)明
data.sub_err_msgstring詳細(xì)的錯(cuò)誤說(shuō)明
JSON返回示例
//請(qǐng)求頻率過(guò)快
{
"code": 10001,
"msg": "接口調(diào)用頻率過(guò)快",
"data": []
}
//服務(wù)端處理請(qǐng)求出現(xiàn)異常
{
"code": 10004,
"msg": "系統(tǒng)內(nèi)部錯(cuò)誤,請(qǐng)重試",
"data": []
}
//請(qǐng)求成功且域名正常
{
"code": 0,
"msg": "OK",
"data": {
"status": "ok",
"err_code": 0,
"err_msg": "",
"sub_err_msg": ""
}
}
//請(qǐng)求成功但域名被封
//被封原因:已停止訪問(wèn)該網(wǎng)頁(yè) - 網(wǎng)頁(yè)包含侵權(quán)內(nèi)容
{
"code": 0,
"msg": "OK",
"data": {
"status": "blocked",
"err_code": 30002,
"err_msg": "已停止訪問(wèn)該網(wǎng)頁(yè)",
"sub_err_msg": "網(wǎng)頁(yè)包含侵權(quán)內(nèi)容"
}
}
//請(qǐng)求成功但域名被封
//被封原因:頁(yè)面被轉(zhuǎn)碼 - 非微信官方網(wǎng)頁(yè)
{
"code": 0,
"msg": "OK",
"data": {
"status": "blocked",
"err_code": 30001,
"err_msg": "頁(yè)面被轉(zhuǎn)碼",
"sub_err_msg": "非微信官方網(wǎng)頁(yè)"
}
}
//請(qǐng)求成功但域名被封,需要長(zhǎng)按網(wǎng)址復(fù)制后使用瀏覽器訪問(wèn)
{
"code": 0,
"msg": "OK",
"data": {
"status": "blocked",
"err_code": 30998,
"err_msg": "如需瀏覽,請(qǐng)長(zhǎng)按網(wǎng)址復(fù)制后使用瀏覽器訪問(wèn)",
"sub_err_msg": ""
}
}
示例代碼
Python
# -*- coding: utf-8 -*-
import json, urllib
from urllib import urlencode
def main():
# 您的App Key,在我的APPKEY可查詢(xún)到
apiToken = "*********************"
url = "https://api.yemao.vip/v2/wechat_url_check"
params = {
"url" : "www.qq.com", #需要檢測(cè)的地址或域名
"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:
#成功請(qǐng)求
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可查詢(xún)到
$apiToken = "********************************";
//需要檢測(cè)的地址或域名
$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驗(yàn)證對(duì)等證書(shū)(peer's certificate),不建議生產(chǎn)環(huán)境這么配置
//如果出現(xiàn)證書(shū)問(wèn)題,建議在https://curl.haxx.se/docs/caextract.html下載最新證書(shū)
//并打開(kāi)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解析接口結(jié)果出錯(cuò):%s\n", json_last_error_msg());
return;
}
if (isset($responseArr['code']) && $responseArr['code'] == 0) {
//接口正確返回
//$responseArr['data']['status'] 的取值范圍:ok、blocked
//ok:表示正常;blocked:表示被封
printf("測(cè)試地址(%s)的狀態(tài)為:%s\n", $reqUrl, $responseArr['data']['status']);
} else {
printf("接口異常:%s\n", var_export($responseArr, true));
}
} catch(Exception $e) {
printf("出現(xiàn)異常:%s\n", $e->getMessage());
}
聯(lián)系客服