淮安涟水本地家政服务平台 | 专业 · 诚信 · 贴心

当用户在微信内分享一个网页链接时,微信客户端会请求其内置的抓取节点(User-Agent 携带 MicroMessenger 标识)解析该页面的 HTML 结构,优先提取符合 Open Graph 协议规范的元数据标签。
| OG 标签字段 | 微信呈现位置 | 避坑关键点 |
|---|---|---|
og:title | 卡片顶部加粗标题 | 控制在 30 汉字以内,避免被截断 |
og:description | 标题下方副标题/摘要 | 简明扼要,严禁包含未闭合的 HTML/CSS 代码 |
og:image | 卡片右侧/顶部封面大图 | 必须为公网可直接访问的完整 HTTPS 地址,比例建议 1:1 或 16:9 |
og:url | 卡片真实跳转目标链接 | 保持与当前页面地址一致 |
直接复制下方轻量级原生 Python 脚本(无需额外安装三方重度库),即可在终端一秒完成诊断:
# -*- coding: utf-8 -*-
import urllib.request, re, ssl
def check_wechat_card(url: str):
headers = {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_0 like Mac OS X) '
'AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 '
'MicroMessenger/8.0.38(0x1800262c) NetType/WIFI'
}
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
# 1. 抓取目标页面 HTML
req = urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(req, context=ctx, timeout=15) as resp:
html = resp.read().decode('utf-8', errors='ignore')
# 2. 提取 Open Graph 元标签 (兼容 property 与 name 两种书写习惯)
og_data = {}
pattern = re.compile(r']*(?:property|name)=["']og:([a-zA-Z0-9_:]+)["']\s+content=["'](.*?)["']', re.I)
for tag, val in pattern.findall(html):
og_data[tag.lower()] = val.strip()
print(f"=== 诊断结果: {url} ===")
print(f"📌 og:title : {og_data.get('title', '【缺失 ❌】')}")
print(f"📝 og:description : {og_data.get('description', '【缺失 ❌】')}")
print(f"🖼️ og:image : {og_data.get('image', '【缺失 ❌】')}")
# 3. 检测封面图是否能够被微信抓取节点畅通加载
img_url = og_data.get('image')
if not img_url:
print("❌ 致命缺陷: 未检测到 og:image,微信将无法显示卡片大图!")
return
if not img_url.startswith('https://'):
print("⚠️ 警告: 图片非完整 HTTPS 地址,部分微信版本将直接丢弃封面!")
img_req = urllib.request.Request(img_url, headers=headers)
try:
with urllib.request.urlopen(img_req, context=ctx, timeout=10) as img_resp:
status = img_resp.status
size = len(img_resp.read())
c_type = img_resp.headers.get('Content-Type')
print(f"✅ 图片可访问 (HTTP {status}) | 大小: {size} 字节 | 类型: {c_type}")
except Exception as e:
print(f"❌ 封面图片访问失败: {e}")
# 执行检测示例
if __name__ == '__main__':
target = 'https://www.1000000jia.cn/index.php/xinw/post/detail?id=1235'
check_wechat_card(target)
后果:微信爬虫无法自动补全协议与域名,图片解析直接失败,卡片退化为灰色纯文本或默认小地球图标。
解决方案:数据库或后台入库时,务必强制保存完整的 https://yourdomain.com/uploads/... 全绝对路径!
后果:后端截取前 100 字作为 og:description 时,若正文开头包含 <style>,微信卡片描述中会突兀出现 .my-wrap{... 乱码。
解决方案:在正文开头嵌入 <p style="display:none;">纯文本摘要</p>,或在入库保存时正则剥离所有 HTML 标签。
后果:虽然线上已修正了图片或标题,但在微信对话框中再次转发依旧显示老旧错误信息。
解决方案:在分享的链接末尾追加一个版本号参数(例如 ?v=20260926),强制微信爬虫触发全新抓取!
加载中...
加载中...
加载评论中...