sudo apt updatesudo apt install chromium xvfb screen python3-pip -y3. 安装 Python 核心库需要在root情况下
pip3 install DrissionPage pyvirtualdisplay --break-system-packagescat << 'EOF' > bot.py# -*- coding: utf-8 -*-import timeimport sysimport randomimport shutilfrom pyvirtualdisplay import Displayfrom DrissionPage import ChromiumPage, ChromiumOptions# ================= ⚡ 请在下方修改账号 ⚡ =================PID = "183" # 这里填你要抢的商品 PIDEMAIL = "你的邮箱@xx.com" # 这里填 DMIT 账号邮箱PASS = "你的密码" # 这里填 DMIT 密码# =======================================================def main(): print("[-] 初始化虚拟屏幕...") try: Display(visible=0, size=(1920, 1080)).start() except Exception as e: print(f"❌ 虚拟屏幕失败: {e}\n👉 请运行: apt install xvfb") return print("[-] 配置浏览器...") co = ChromiumOptions() # 自动寻找 Chromium 路径 path = shutil.which("chromium") or shutil.which("chromium-browser") or shutil.which("google-chrome") if not path: print("❌ 错误:没找到浏览器,请运行: apt install chromium") return co.set_browser_path(path) co.set_argument('--no-sandbox') co.set_argument('--disable-gpu') try: page = ChromiumPage(co) page.set.load_mode.none() # 极速模式:不加载图片 print("✅ 浏览器启动成功!") except Exception as e: print(f"❌ 启动报错: {e}") return print(f"[-] 准备登录: {EMAIL}") try: page.get("https://www.dmit.io/clientarea.php") # 检查是否已登录 if not (page.ele('text:Logout') or page.ele('text:注销')): page.ele('#inputEmail').input(EMAIL) page.ele('#inputPassword').input(PASS) page.ele('#login').click() page.wait.load_start() print("✅ 登录检查完毕") except: print("⚠️ 登录遇到小问题,尝试继续监控...") # 构造直连购买链接 url = f"https://www.dmit.io/cart.php?a=add&pid={PID}" print(f"🚀 开始监控 PID: {PID}") count = 0 while True: try: page.get(url) # 场景1: 有货 (跳转到配置页) if "confproduct" in page.url: print("\n🚨 发现库存!锁单中...") # 点击继续 page.ele('#btnCompleteProductConfig', timeout=10).click() page.wait.load_start() # 勾选协议 page.run_js('document.getElementById("accept").click()') # 结账 page.ele('#btnCompleteOrder', timeout=10).click() print("🏆 抢单成功!请立即去官网支付!") break # 场景2: 缺货 elif "Out of Stock" in page.html or "缺货" in page.html: count += 1 sys.stdout.write(f"\r[-] 缺货... (已刷新 {count} 次)") sys.stdout.flush() # 随机延迟 5-10 秒,防止封 IP time.sleep(random.uniform(5, 10)) # 场景3: 被盾或其他 else: print(f"\n[?] 状态未知,暂停 20 秒") time.sleep(20) except Exception as e: print(f"\n[!] 网络波动: {e}") time.sleep(5)if __name__ == "__main__": main()EOF修改内容
nano bot.py新建窗口
screen -S dmit运行
python3 bot.py有什么不对的可以自己修改,仅供参考,给个小赞呗
评论 (0)