sudo apt update
sudo apt install chromium xvfb screen python3-pip -y

3. 安装 Python 核心库需要在root情况下

pip3 install DrissionPage pyvirtualdisplay --break-system-packages
cat << '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

有什么不对的可以自己修改,仅供参考,给个小赞呗