74 lines
2.6 KiB
Markdown
74 lines
2.6 KiB
Markdown
# 2925 Webmail correct scraping flow for OpenAI codes (2026-05-11)
|
|
|
|
## Problem found
|
|
|
|
BOSS manually checked `chickliu2030@2925.com` / `chickliu2031@2925.com` and saw OpenAI verification messages in Inbox, while the automation reported `candidateCount=0` and no current alias mail.
|
|
|
|
Root cause: the previous automation used an unreliable route-based folder switch:
|
|
|
|
```text
|
|
https://2925.com/#/mailList?type=收件箱
|
|
https://2925.com/#/mailList?type=垃圾箱
|
|
```
|
|
|
|
On 2925 Webmail this can leave the app in an empty-list state even when Inbox has messages. The correct UI state is reached by clicking the left navigation item `收件箱`; the URL then becomes:
|
|
|
|
```text
|
|
https://2925.com/#/mailList
|
|
```
|
|
|
|
## Correct scraping flow
|
|
|
|
1. Verify visible account gate: top profile text contains the selected pool account, e.g. `chickliu2031@2925.com`.
|
|
2. Click the left nav item whose exact text is `收件箱`. Do not rely on `#/mailList?type=收件箱`.
|
|
3. Click the actual toolbar `刷新` button after the list is visible.
|
|
4. Read mail rows from:
|
|
|
|
```js
|
|
document.querySelectorAll('table.maillist-table tr')
|
|
```
|
|
|
|
Rows can have class `unread-mail`.
|
|
|
|
5. Match OpenAI/ChatGPT rows by visible row text:
|
|
|
|
```text
|
|
OpenAI / ChatGPT / 你的 ChatGPT 临时验证码 / verification / code
|
|
```
|
|
|
|
6. The generated alias/local-part may not be visible in row text. For 2925 OpenAI mail it was found in hidden tooltip/sender DOM, for example:
|
|
|
|
```text
|
|
bounce+...-chickliu2031som6d8=2925.com@tm1.openai.com
|
|
```
|
|
|
|
So row matching must inspect `innerText`, `textContent`, `title`, `aria-label`, and tooltip descendants, not only visible row text.
|
|
|
|
7. Click the newest row whose hidden row text contains the current alias local-part. Then extract the strict 6-digit code from the opened mail body near:
|
|
|
|
```text
|
|
输入此临时验证码以继续:
|
|
[6-digit-code]
|
|
```
|
|
|
|
8. If OpenAI returns `代码不正确`, click OpenAI resend once, wait briefly, click 2925 left `收件箱` again, refresh, then select the newest row. Old rows remain visible and can produce stale codes.
|
|
|
|
## Verified result
|
|
|
|
For:
|
|
|
|
```text
|
|
2925 account: chickliu2031@2925.com
|
|
OpenAI alias: chickliu2031som6d8@2925.com
|
|
```
|
|
|
|
The corrected scraper found rows in Inbox and extracted a new verification code from the latest message at `2026-5-11 21:16:37`. Submitting that new code succeeded and OpenAI advanced to:
|
|
|
|
```text
|
|
https://auth.openai.com/add-phone
|
|
```
|
|
|
|
## Do not repeat
|
|
|
|
Do not conclude “no mail delivered” from `candidateCount=0` if the script only used URL route parameters or did not inspect `table.maillist-table tr`. Confirm by clicking the left Inbox item and checking the table rows.
|