微信域名檢測api

背景

因爲微信限制比較嚴格,域名一不當心就被斷定是誘導分享的。因此,公司內部決定調研一套穩定、快速、正確率高的微信域名攔截檢測查詢接口。php

開發組嘗試谷歌搜索了一段時間,發現不多把源碼及原理分享出來的。後來咱們摸索了幾天,終於解決這個問題。python

源碼

源碼開源在 GitHub,有興趣的能夠了解下。 地址: 微信域名攔截檢測系統 - gt9000kgit

原理

使用 Wireshark 抓包獲取微信的域名攔截查詢接口。github

域名有以下幾種狀態:json

  • 域名能正常訪問(未被微信攔截)
  • 域名被微信攔截
    • 非微信官方網頁,繼續訪問將轉換成手機預覽模式(在公衆號後臺把域名添加到業務域名通常能解決這個問題)
    • 據用戶投訴及騰訊安全網址安全中心檢測,該網頁包含惡意欺詐內容,爲維護綠色上網環境,已中止訪問
    • 網頁包含誘導分享、關注等誘導行爲內容,被多人投訴,爲維護綠色上網環境,已中止訪問

Demo

PHP 版

<?php
// 您的 API Token,在用戶中心可查詢到
$apiToken = "********************************";
// 須要檢測的地址或域名
$reqUrl = "www.qq.com";
$url = sprintf("https://wx.horocn.com/api/v1/wxUrlCheck?api_token=%s&req_url=%s", $apiToken, $reqUrl);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
$responseBody = curl_exec($ch);
$responseArr = json_decode($responseBody, true);
if (json_last_error() != JSON_ERROR_NONE) {
    echo "JSON 解析接口結果出錯\n";
    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));
}
複製代碼

Python 版

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

import json, urllib
from urllib import urlencode

def main():
    # 您的 API Token,在用戶中心可查詢到
    apiToken = "*********************"

    url = "https://wx.horocn.com/api/v1/wxUrlCheck"
    params = {
        "req_url" : "www.qq.com", #須要檢測的地址或域名
        "api_token" : 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()
複製代碼

TODO

還有幾個功能沒有實現,以下:api

  • QQ 域名攔截檢測
  • 查詢域名的 Whois 信息
  • 360 域名攔截檢測
  • 百度域名攔截檢測