[亲测有效] Codex 赠送的重置机会,有效期查询方法

4 小时 55 分钟前
 LonelyM

🚀教大家一个方法,查询 Codex 赠送的重置机会什么时候到期!

方法很简单,将下面的提示词发送给 Codex 即可。

========🔥提示词==========

请使用本机 Codex 凭证查一下 rate-limit reset credits:

读取 ~/.codex/auth.json 里的 tokens.access_token ,请求接口: https://chatgpt.com/backend-api/wham/rate-limit-reset-credits

要求:

  1. 不要打印 access_token 、refresh_token 、cookie 或完整唯一 ID
  2. 只汇总 available_count 、每个 credit 的 status/title/granted_at/expires_at
  3. 把 granted_at/expires_at 从 UTC 转成本地时间
  4. 如果状态码返回 401 ,说明是凭证失效或没带对 Authorization header

========🔥提示词==========

809 次点击
所在节点    程序员
6 条回复
plmsuper8
4 小时 32 分钟前
或者这个:
```
python3 - <<'PY'
import json
import os
import urllib.request
from datetime import datetime, timezone

AUTH_PATH = os.path.expanduser("~/.codex/auth.json")
URL = "https://chatgpt.com/backend-api/wham/rate-limit-reset-credits"

def to_local_time(value):
if not value:
return None
try:
if isinstance(value, (int, float)):
# 兼容秒或毫秒时间戳
if value > 10_000_000_000:
value = value / 1000
dt = datetime.fromtimestamp(value, tz=timezone.utc)
else:
s = str(value).replace("Z", "+00:00")
dt = datetime.fromisoformat(s)
if dt.tzinfo is None:
dt = dt.replace(tzinfo=timezone.utc)
return dt.astimezone().strftime("%Y-%m-%d %H:%M:%S %Z")
except Exception:
return value

with open(AUTH_PATH, "r", encoding="utf-8") as f:
auth = json.load(f)

token = auth.get("tokens", {}).get("access_token")
if not token:
raise SystemExit("未找到 tokens.access_token")

req = urllib.request.Request(
URL,
headers={
"Authorization": f"Bearer {token}",
"Accept": "application/json",
},
method="GET",
)

try:
with urllib.request.urlopen(req, timeout=20) as resp:
status = resp.status
body = resp.read().decode("utf-8")
except urllib.error.HTTPError as e:
status = e.code
body = e.read().decode("utf-8", errors="replace")

if status == 401:
print("HTTP 401:凭证失效,或请求没有带正确的 Authorization header")
raise SystemExit(1)

if status < 200 or status >= 300:
print(f"HTTP {status}")
print("请求失败;未输出敏感信息。")
raise SystemExit(1)

data = json.loads(body)

available_count = data.get("available_count")
credits = data.get("credits", [])

print("available_count:", available_count)
print()

for i, c in enumerate(credits, 1):
print(f"credit #{i}")
print(" status:", c.get("status"))
print(" title:", c.get("title"))
print(" granted_at:", to_local_time(c.get("granted_at")))
print(" expires_at:", to_local_time(c.get("expires_at")))
PY
```
unusualcat
4 小时 23 分钟前
试了,确实可以查询到每个 reset 的获得时间和过期时间。
zls3201
3 小时 29 分钟前
cpa 不是自带么 搞这么麻烦
littlefishzzz
1 小时 16 分钟前
@zls3201 问一下 codex 不是就行么 cpa 搞这么麻烦
tylearymf
1 小时 10 分钟前
可以,很强👍
Dream4U
1 小时 8 分钟前
@zls3201 codex 自带

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1223610

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX