来源:https://metaso.cn/search/8600647639133773824/interactive?dataId=8600647639255408640&targetType=undefined
微信推送功能概述
本指南详细介绍了如何使用Python脚本执行完成后,将结果推送到微信的多种实现方式。我们将探讨不同方案的优缺点、适用场景以及具体实现步骤,帮助您选择最适合您需求的方案。
实现方式选择与对比
具体实现步骤
方案1:使用Server酱(第三方服务)
步骤说明:
注册并绑定微信:访问Server酱官网,用GitHub账号登录。扫描二维码绑定微信,获取SendKey。
Python脚本集成:使用requests库发送HTTP POST请求到Server酱API,传递消息内容。
Python代码示例:
import requests
def send_wechat(msg):
send_key = "你的SendKey" # 替换为实际值
url = f"https://sctapi.ftqq.com/{send_key}.send"
data = {"title": "脚本执行结果", "desp": msg}
response = requests.post(url, data=data)
return response.json()
# 脚本执行完成后调用
result = "任务完成,耗时5分钟"
send_wechat(result)复制
注意事项:
免费版每日限额5条,企业版需付费。
消息可能延迟1-3分钟,不适合实时性要求高的场景。
方案2:企业微信机器人(推荐)
步骤说明:
创建企业微信群机器人:在企业微信中创建群聊,右键群名选择【添加群机器人】。设置机器人名称,复制生成的Webhook URL。
Python脚本集成:使用requests库发送HTTP POST请求到Webhook URL,传递消息内容。
Python代码示例:
import requests
import json
def send_wechat_robot(message):
webhook_url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=你的KEY"
headers = {"Content-Type": "application/json"}
data = {
"msgtype": "text",
"text": {"content": message}
}
response = requests.post(webhook_url, headers=headers, data=json.dumps(data))
return response.json()
# 调用示例
send_wechat_robot("脚本执行成功:数据已更新至数据库")复制
高级消息格式(支持Markdown/图文):
data = {
"msgtype": "markdown",
"markdown": {
"content": "**任务报告**\n> 状态: 成功\n> 耗时: 5分钟\n[查看详情]"
}
}复制
注意事项:
频率限制:每分钟最多20条消息。
安全性:Webhook URL泄露可能导致垃圾消息,需定期更换KEY。
方案3:微信公众号API(服务号)
步骤说明:
注册服务号并认证:在微信公众平台注册服务号,完成企业认证(费用300元/年)。
获取API权限:在【开发】→【基本配置】中获取AppID和AppSecret。启用【客服消息】接口权限。
Python代码实现:使用requests库获取access_token,然后发送客服消息。
Python代码示例:
import requests
def get_access_token(appid, secret):
url = f"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={secret}"
response = requests.get(url).json()
return response.get("access_token")
def send_custom_message(openid, message):
token = get_access_token("你的AppID", "你的AppSecret")
url = f"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token={token}"
data = {
"touser": openid,
"msgtype": "text",
"text": {"content": message}
}
return requests.post(url, json=data).json()
# 调用示例(需用户关注公众号并获取其openid)
send_custom_message("用户OPENID", "脚本执行完成")复制
关键限制:
客服消息:用户需在48小时内与公众号互动,否则无法推送。
频率限制:单个用户每分钟最多接收5条消息。
方案4:使用itchat库(个人微信)
步骤说明:
安装库并登录:使用pip安装itchat库,然后扫码登录微信。
指定用户推送:通过好友备注名查找好友,然后发送消息。
Python代码示例:
# 安装库
# pip install itchat
import itchat
# 扫码登录
itchat.auto_login(hotReload=True)
# 发送给文件助手
itchat.send("脚本完成", toUserName="filehelper")
# 指定用户推送
friend = itchat.search_friends(name='好友备注')[0]
friend.send("你的任务已处理完毕")复制
风险提示:
微信可能封禁频繁登录的账号。
不适合生产环境,仅建议临时测试使用。
安全与频率限制规避建议
消息内容合规
避免敏感词(如"中奖""转账"),防止触发微信风控。
频率控制
企业微信机器人:每分钟≤20条,可设置time.sleep(3)间隔发送。公众号API:用户维度限流,建议重要消息优先发送。
备用通道
结合邮件或短信通知,作为微信推送失败的补偿方案。
方案选型总结
根据实际需求选择合适方案,优先考虑企业微信机器人或Server酱以实现平衡的开发成本与稳定性。
我的选择
Server酱
免费版每天限制5条
def send_wechat(title, msg):
send_key = "SCT77408TERSce*********IoUJ2" # 替换为实际值
url = f"https://sctapi.ftqq.com/{send_key}.send"
data = {"title": {title}, "desp": msg}
response = requests.post(url, data=data)
print(f"微信通知返回:{response}")
return response.json()
iyuu
免费版每小时限制20条
def send_wechat(title, msg):
send_key = "IYUU22916T430************1716af0927d761a980dae79" # 替换为实际值
url = f"https://iyuu.cn/{send_key}.send"
data = {"text": {title}, "desp": msg}
response = requests.post(url, data=data)
print(f"微信通知返回:{response}")
return response.json()
这两个方式都基本差不多,区别在于url地址和标题的关键词
也可以通过curl方式推送
curl -X POST https://iyuu.cn/IYUU22916T4301a5e1b764a89011716af0927d761a980dae79.send \
-H "Content-Type: application/x-www-form-urlencoded; charset=UTF-8" \
-d "text=测试" \
-d "desp=内容"
也有get方式,适合很短的通知词,太长不支持
评论区