Skip to content

magicwang1111/dm-ticket

 
 

Repository files navigation

dm-ticket 使用说明

仅用于学习和研究 Rust、Docker 与接口调用流程。请遵守法律法规、平台规则和活动规则;不要用于任何违法违规用途。账号、Cookie、配置和运行结果由使用者自行负责。

最简单用法:照着复制

下面命令在 Windows PowerShell 里执行。

1. 进入项目

cd E:\dm-ticket

2. 复制配置文件

第一次运行才需要执行。如果已经有 config\config.yaml,不要重复覆盖。

Copy-Item config\config.yaml.example config\config.yaml

3. 启动依赖服务

这里启动的是 token-server,用于提供程序需要的 bx_token / bx_ua。不用自己构建镜像。

docker compose -f docker-compose.dev.yml up -d

4. 扫码登录,拿 Cookie

$env:TOKEN_SERVER_URL="http://127.0.0.1:8080"
cargo run --bin dm-login

用大麦 App 扫终端里的二维码。成功后,终端会输出一长串 Cookie。

浏览器里 Cookie 大概长这样,扫码登录输出的也是同类内容:

Cookie 示例

5. 打开配置,把 Cookie 和票信息填进去

notepad config\config.yaml

最少要改这些:

accounts:
  - cookie: "这里粘贴扫码登录输出的 Cookie"
    remark: 账号1

    ticket:
      id: "这里填门票 itemId"
      num: 1
      sessions: 1
      grade: 1

保存后关闭记事本。

6. 运行购票程序

$env:TOKEN_SERVER_URL="http://127.0.0.1:8080"
cargo run --bin dm-ticket

运行后会打印账号、门票、场次、票档、开售时间等信息:

运行示例

提交结果示例:

运行结果示例

另一个运行示例:

运行示例 2

7. 不用了再停止依赖服务

抢票前不要执行这条。只有不用了再执行:

docker compose -f docker-compose.dev.yml down

一整段命令版

第一次运行:

cd E:\dm-ticket
Copy-Item config\config.yaml.example config\config.yaml
docker compose -f docker-compose.dev.yml up -d

$env:TOKEN_SERVER_URL="http://127.0.0.1:8080"
cargo run --bin dm-login

notepad config\config.yaml

$env:TOKEN_SERVER_URL="http://127.0.0.1:8080"
cargo run --bin dm-ticket

以后再运行:

cd E:\dm-ticket
docker compose -f docker-compose.dev.yml up -d

$env:TOKEN_SERVER_URL="http://127.0.0.1:8080"
cargo run --bin dm-ticket

不用了再停:

docker compose -f docker-compose.dev.yml down

配置怎么填

配置文件位置:

E:\dm-ticket\config\config.yaml

最重要的是这一段:

accounts:
  - cookie: "你的 Cookie"
    remark: 账号1

    interval: 30
    early_submit_time: 5
    request_time: -1
    wait_for_submit_time: 0
    retry_times: 2
    retry_interval: 100

    ticket:
      id: "721571231867"
      num: 1
      sessions: 1
      grade: 2
      priority_purchase_time: 0

      pick_up_leaks:
        num: 0
        interval: 2000
        times: 100
        grades: [1, 2]
配置 意思
cookie 扫码登录后输出的 Cookie
remark 账号备注,随便写
ticket.id 门票详情页 URL 里的 itemId
ticket.num 买几张票
ticket.sessions 场次序号,从 1 开始
ticket.grade 票档序号,从 1 开始
retry_times 失败后重试几次
retry_interval 每次重试间隔,单位毫秒
early_submit_time 提前多少毫秒开始提交
wait_for_submit_time 生成订单后等多久再提交,默认 0

itemId、场次、票档怎么找

itemId

门票详情页 URL 里一般有:

itemId=710947802955

那就填:

id: "710947802955"

示例图:

itemId 示例

场次 sessions

点购买后看到场次列表,从第一个开始数:

sessions: 1

示例图:

场次示例

票档 grade

选完场次后看到票档,从第一个开始数:

grade: 1

示例图:

票档示例

常见问题

1. Connection refused

依赖服务还没启动好。等几秒再运行,或者重新启动:

docker compose -f docker-compose.dev.yml up -d

错误示例:

Connection refused 示例

2. cookie已过期

重新扫码:

$env:TOKEN_SERVER_URL="http://127.0.0.1:8080"
cargo run --bin dm-login

然后把新 Cookie 填进 config\config.yaml

3. 找不到配置文件

执行:

Copy-Item config\config.yaml.example config\config.yaml

4. 场次或票档不存在

sessionsgrade 都是从 1 开始,不是从 0 开始。

5. Docker 拉镜像失败

如果看到:

Could not resolve host
lookup auth.docker.io timeout
failed to fetch oauth token

这是 Docker 网络、DNS 或代理问题,不是代码问题。

如果看到:

pull access denied for classmatelin/alitoken-server

说明你用的是旧版 compose 文件。当前仓库已经改成可拉取的:

xdp1998/alitoken-server:latest

先更新代码,或者手动把 docker-compose.dev.yml 里的 token-server 镜像改成上面这个。

开发验证命令

cargo fmt --check
cargo test --locked -j1
cargo check --locked --bins -j1
cargo build --locked --release --bins -j1

About

大麦网自动购票, 支持docker一键部署。Damai automatically purchases tickets, running in docker container.

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Rust 97.8%
  • Dockerfile 2.0%
  • Shell 0.2%