跳至内容

Jixun's Blog 填坑还是开坑,这是个好问题。

下载全部 Octopus Energy 账单

因为近期从 MSE: The Big Energy Switch II 了解到更便宜的电费和瓦斯费的计划,决定从 Octopus Energy 转到新的供应商。

希望存档旧的账单信息方便以后查阅,但是 Octopus Energy 的网站没有提供批量下载账单的功能。于是写了个小脚本来自动化这个过程。

项目: octobill_downloader

项目可以在 GitHub 上获取:jixunmoe/octobill_downloader

使用方法很简单:

  1. 获取账户凭证(JWT token)
  2. 运行脚本下载账单

获取账户凭证

首先登录 Octopus Energy 网站:https://octopus.energy/dashboard/

打开浏览器的开发者工具(按下 F12 打开),切换到 Application 标签页 → Local Storage → https://octopus.energy,找到名为 token 的项,复制它的值(通常为 eyJhbG... 开头的字符串):

开发者工具截图

配置运行环境

确保你已经安装了 Python 3 以及 uv。

如果还没有安装 uv,可以查阅 uv 官方文档

运行下述指令来初始化环境:

uv venv
uv sync

运行下载脚本

你可以带上 -h 参数来查看帮助信息:

$ uv run python download_bills.py -h
usage: download_bills.py [-h] [-O OUTPUT_DIR] [-t TOKEN]

options:
  -h, --help            show this help message and exit
  -O, --output-dir OUTPUT_DIR
                        Directory to save downloaded bills to
  -t, --token TOKEN     Bearer token to use for authentication

例如:

uv run python download_bills.py -t eyJhbG... -O ./bills

脚本会自动创建输出目录(如果不存在的话),并将所有账单下载到该目录下。

碎碎念

全都是 GraphQL API,目前还没在自己的项目用过。感觉在服务端要做好安全检查应该不太容易。

还好接口本身很简单,一个 POST 打天下 - 一种间接执行 SQL 的感觉。

题外话:做好后发现有公开的 API 文档,也就是说我其实不需要自己抓。

知识共享许可协议 本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。

评论区