用 Python 写个双色球青龙通知脚本,再也不用下那些流氓 App
867 字
4 分钟
用 Python 写个双色球青龙通知脚本,再也不用下那些流氓 App
在生活中我们常常遇到这种情况:只想简单看看双色球开奖号码,却被强制要求下载各种 App 📲。
这些 App 不是广告满天飞 💥,就是界面臃肿卡顿 🐢,甚至还可能偷偷获取隐私信息 😒。
于是我决定:自己动手,用 Python 写一个脚本,自动获取开奖号码并通过青龙面板发送通知 📬!
干净、快速、自由,想看就看,拒绝被绑架。
🎯 开发目标
✅ 自动获取每日双色球开奖信息
✅ 通过青龙定时任务推送通知(支持 Bark / 钉钉 / Telegram 等)
✅ 无需手动操作,全自动运行
⚙️ 技术选型
📝 Python 3:脚本首选语言,灵活高效
📡 requests:拉取开奖信息
🧹 json & re:处理数据内容
🧭 青龙面板:定时执行 & 多渠道通知
🔗 开奖数据来源
为了确保数据准确可靠,我选用了中彩网或其他公开接口作为数据源 🧮。
示例接口返回内容如下:
{ "issue": "2025047", "openTime": "2025-04-29", "frontWinningNum": "01 14 21 22 23 31", "backWinningNum": "12", "seqFrontWinningNum": "14 22 31 23 01 21", "seqBackWinningNum": "12", "saleMoney": "364051920", "r9SaleMoney": "", "prizePoolMoney": "2211042881", "week": "星期二", "winnerDetails": [ { "awardEtc": "1", "baseBetWinner": { "remark": "一等奖", "awardNum": "4", "awardMoney": "10000000", "totalMoney": "" }, "addToBetWinner": "", "addToBetWinner2": "", "addToBetWinner3": "" }, { "awardEtc": "2", "baseBetWinner": { "remark": "二等奖", "awardNum": "174", "awardMoney": "152770", "totalMoney": "" }, "addToBetWinner": "", "addToBetWinner2": "", "addToBetWinner3": "" }, { "awardEtc": "3", "baseBetWinner": { "remark": "三等奖", "awardNum": "929", "awardMoney": "3000", "totalMoney": "" }, "addToBetWinner": "", "addToBetWinner2": "", "addToBetWinner3": "" }, { "awardEtc": "4", "baseBetWinner": { "remark": "四等奖", "awardNum": "47377", "awardMoney": "200", "totalMoney": "" }, "addToBetWinner": "", "addToBetWinner2": "", "addToBetWinner3": "" }, { "awardEtc": "5", "baseBetWinner": { "remark": "五等奖", "awardNum": "1005016", "awardMoney": "10", "totalMoney": "" }, "addToBetWinner": "", "addToBetWinner2": "", "addToBetWinner3": "" }, { "awardEtc": "6", "baseBetWinner": { "remark": "六等奖", "awardNum": "9948912", "awardMoney": "5", "totalMoney": "" }, "addToBetWinner": "", "addToBetWinner2": "", "addToBetWinner3": "" } ]}💻 代码示例
import requestsimport timeimport randomimport jsonimport reimport notify
# 生成动态参数以避免缓存current_timestamp = int(time.time() * 1000)tt_value = random.random()callback_timestamp = current_timestamp - 1
url = ( "https://jc.zhcw.com/port/client_json.php?" f"callback=jQuery1122029918790071673307_{callback_timestamp}&" "transactionType=10001001&" "lotteryId=1&" "issueCount=30&" "startIssue=&" "endIssue=&" "startDate=&" "endDate=&" "type=0&" "pageNum=1&" "pageSize=1&" f"tt={tt_value}&" f"_={current_timestamp}")
headers = { "Accept": "*/*", "Accept-Language": "zh-CN,zh-TW;q=0.9,zh;q=0.8,en;q=0.7", "Cache-Control": "no-cache", "Connection": "keep-alive", "Cookie": "PHPSESSID=bi2vu7nn8gdqvg79ggal0bmvq0", "Pragma": "no-cache", "Referer": "https://www.zhcw.com/", "Sec-Fetch-Dest": "script", "Sec-Fetch-Mode": "no-cors", "Sec-Fetch-Site": "same-site", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36", "sec-ch-ua": '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"', "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": '"Windows"',}
response = requests.get(url, headers=headers)response_text = response.text# 清理字符串以获取有效的JSON对象start_index = response_text.find('(') + 1end_index = response_text.rfind(')')
json_str = response_text[start_index:end_index]
# 解析JSON字符串parsed_data = json.loads(json_str)
# 提取"data"中的信息data_info = parsed_data.get('data', [])
# 遍历每个数据项(在这个例子中只有一个)for data in data_info: # 数据解析(建议添加类型校验) red_numbers = data.get('frontWinningNum', '').split() # 前区红球 blue_number = data.get('backWinningNum', '') # 后区蓝球 open_time = data.get('openTime', '未知时间') week = data.get('week', '未知星期') issue = data.get('issue', '未知期号')
# 动态生成红球HTML red_balls = '\n'.join([ f'<div style="width:40px;height:40px;background:#e74c3c;border-radius:50%;color:white;' f'display:flex;align-items:center;justify-content:center;font-weight:bold;">{num}</div>' for num in red_numbers ])
# 构建HTML模板 message = f''' <div style="background:#f8f9fa;padding:20px;border-radius:12px;font-family:-apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;"> <h2 style="color:#2d3436;margin:0 0;border-bottom:2px solid #e74c3c;display:flex;"> <span style="font-size:1.2em;margin-right:8px;">🎉</span>双色球开奖公告 </h2>
<div style="color:#636e72;display: flex"> <span style="color:#e74c3c;">📅 {open_time} {week}</span> <span style="margin:0 8px">|</span> <span>第{issue}期</span> </div>
<div style="display:flex;flex-wrap:wrap;gap:8px;"> <!-- 红球 --> {red_balls}
<!-- 蓝球 --> <div style="width:40px;height:40px;background:#3498db;border-radius:50%;color:white; display:flex;align-items:center;justify-content:center;font-weight:bold;">{blue_number}</div> </div>
<div style="color:#636e72;display: flex"> <span>⏰ 开奖时间:20:30(每周二、四、日)</span> <span style="margin:0 8px">|</span> <span>📞 客服电话:95086</span> </div> </div> '''
notify.send("双色球", message)🕒 青龙定时任务配置
把脚本放进青龙的脚本目录,然后设置每天晚上开奖时间后自动执行 🧠。
🗓 定时任务规则:
0 22 * * 2,4,0
📱 效果展示
每天开奖后,手机立即收到通知👇:

文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
用 Python 写个双色球青龙通知脚本,再也不用下那些流氓 App
https://muxui.com/posts/用-python-写个双色球青龙通知脚本,再也不用下那些流/相关文章智能推荐
1
从 WordPress 到 Astro迁移实战全记录
文章记录将 Muxui 从 WordPress(B2 Pro)完整迁移到 Astro 静态博客主题 Firefly 的全过程:导出 WXR、HTML 转 Markdown、图床改写、友链与导航定制,以及迁移中踩过的坑。
2
YOLO训练麻将(Mahjong)识别,导出ONNX
文章本文基于 Roboflow Universe 数据集(例如 $1 )与仓库内脚本,在 Windows 上完成训练,并导出 ONNX 供后端推理。下文配图均为本机实测截图,便于对照。快速体验 小程序 1\. 环境要求 \ Windows 10
3
FinalShell专业版激活
Python源码 from Crypto.Hash import keccak from Crypto.Hash import MD5 def md5 msg : hash obj = MD5.new msg return hash obj.hexdi
4
自建 Headscale + DERP 全流程实战记录
文章记录一次完整、可上线、可长期运行的 Headscale + 自建 DERP 搭建过程。 本文不是“能跑就行”的教程,而是 生产可用、已多客户端验证 的配置方案。 简介 Tailscale(Headscale)就是组建一个大的局域网,可以将你
5
基于 Cloudflare Workers + Telegram Bot + D1 的双向匿名聊天系统完整实现
文章在本篇文章中,我将分享一个基于 Cloudflare Workers + Telegram Bot + D1 数据库 的完全无服务器(Serverless)聊天系统。该机器人支持用户匿名与管理员双向通信,具备首访验证、自动诈骗检测、屏蔽管理
随机文章随机推荐













