Stories

Detail Return Return

微信域名檢測自動化 HTTP 服務腳本,可檢測域名在微信內是否被封或被攔截(非官方也可以檢測) - Stories Detail

摘要

微信域名檢測自動化 HTTP 服務腳本,可檢測域名在微信內是否被封或被攔截。

支持檢測情況包括:

  • 如需瀏覽,請長按網址複製後使用瀏覽器訪問
  • 已停止訪問該網頁
  • 將要訪問
  • 非官方網頁
  • 未備案

技術原理

使用Python腳本自動化控制微信電腦版,完成訪問網頁的過程,解析頁面內容,即可得到檢測結果。

  • 優點:準確;
  • 缺點:需要掛機、並且響應速度慢,大概需要3-5秒完成一次檢測;

檢測結果

顏色 頁面 Title 頁面 Desc 檢測結果
🔴 紅色攔截 已停止訪問該網頁 網頁包含 XXX 內容,為維護綠色上網環境,已停止訪問。 攔截
🔵 藍色封禁 將要訪問 非微信官方網頁,請確認是否繼續訪問。 攔截
⚪ 白色封禁 如需瀏覽,請長按網址複製後使用瀏覽器訪問 頁面 URL 攔截
💡 以上情況均可檢測出結果。

如何使用

  1. 登錄微信電腦版
  2. 版本要求:最新版 Windows 微信(版本號 4.1.0.18)
  3. 打開任意網頁
  4. 窗口保持最小
  5. 窗口左上角到搜索框中間位置:265 像素
  • 示例截圖:
    -
    可用截圖軟件測量距離。

image.png

優點與缺點

優點:準確
缺點:速度慢、獨佔一台電腦、微信客户端還存在掉線的可能

代碼

import uiautomation as auto
import pyautogui
import time
import json
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import urlparse, parse_qs
import pyperclip  # 用於剪貼板操作

def find_all_controls(control, results=None):
    """遞歸收集所有控件"""
    if results is None:
        results = []

    try:
        if control.Exists(0.1):
            results.append(control)
            try:
                children = control.GetChildren()
            except:
                children = []
            for child in children:
                find_all_controls(child, results)
    except Exception:
        pass

    return results

def automate_url(url):
    """執行點擊輸入URL和獲取控件邏輯"""
    class_name_to_search = "Chrome_WidgetWin_0"
    desktop = auto.GetRootControl()
    controls = [c for c in desktop.GetChildren() if c.ClassName == class_name_to_search]

    for ctrl in controls:
        try:
            rect = ctrl.BoundingRectangle
            x = rect.left + 275
            y = rect.top + 15

            # 鼠標點擊
            pyautogui.moveTo(x, y, duration=0.3)
            pyautogui.click()
            
            # 直接將 URL 放入剪貼板並粘貼
            pyperclip.copy(url)
            pyautogui.hotkey("ctrl", "v")  # 粘貼
            pyautogui.press("enter")
            time.sleep(2)  # 等待頁面加載

            # 獲取所有控件
            all_controls = find_all_controls(ctrl)
            text_controls = [c.Name for c in all_controls if c.ControlTypeName == "TextControl" and c.Name]

            if text_controls:
                title_text = text_controls[0]
                desc_text = ",".join(text_controls[1:]) if len(text_controls) > 1 else ""
            else:
                title_text = ""
                desc_text = ""

            blocked_phrases = [
                "如需瀏覽,請長按網址複製後使用瀏覽器訪問",
                "已停止訪問該網頁",
                "將要訪問"
            ]
            if any(phrase in title_text for phrase in blocked_phrases):
                return {"code": -1, "msg": "攔截", "url": url, "ret": {"title": title_text, "desc": desc_text}}
            else:
                return {"code": 0, "msg": "正常", "url": url, "ret": {"title": title_text, "desc": desc_text}}

        except Exception as e:
            return {"code": -2, "msg": f"操作失敗: {e}", "url": url, "ret": {"title": "", "desc": ""}}

# HTTP 服務器部分保持不變
class MyHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        parsed_path = urlparse(self.path)
        query = parse_qs(parsed_path.query)
        url = query.get("url", [""])[0]

        if not url:
            self.send_response(400)
            self.send_header("Content-type", "application/json")
            self.end_headers()
            self.wfile.write(json.dumps({"code": -3, "msg": "缺少url參數"}).encode("utf-8"))
            return

        result = automate_url(url)

        self.send_response(200)
        self.send_header("Content-type", "application/json")
        self.end_headers()
        self.wfile.write(json.dumps(result, ensure_ascii=False).encode("utf-8"))

if __name__ == "__main__":
    host = "127.0.0.1"
    port = 8000
    print(f"服務器啓動: http://{host}:{port}")
    server = HTTPServer((host, port), MyHandler)
    server.serve_forever()

啓動HTTP服務

python weixin_domain_check.py

瀏覽器訪問

http://127.0.0.1:8000/?url=你要檢測的域名或鏈接
user avatar zzzzbw Avatar wujingquan Avatar zourongle Avatar anchen_5c17815319fb5 Avatar u_17443142 Avatar Z-HarOld Avatar yian Avatar johanazhu Avatar b_a_r_a_n Avatar xingzoudedahuoji Avatar zbooksea Avatar linong Avatar
Favorites 39 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.