偵測「請輸入代號……」就自動送帳密,太過方便了,送出敏感資訊時,還是經過人手操作卡一道比較好。

執行畫面

Script 放在 Greasy Fork → PTT 半自動登入
原始碼也有放在 Github


現有的自動登入方案

這邊說的 PTT 是指 https://term.ptt.cc/,採用修改版 PttChrome(登入後按右鍵「關於」就能看到)在網頁上提供類似純文字介面的操作,是官方維護、使用者眾的服務。當年上線消息:[公告] 使用瀏覽器直接連線至批踢踢

BBS 沒有自動登入功能,早期都是靠連線軟體(例如 PCMan)的自動回應,看見「請輸入代號……」就自動回答。

當直接用瀏覽器上站變成主流,需求就落到擴充套件或 user script 上。 參考一些目前解法:

  1. term.ptt autologin by swstar / 2017

    實作是把 window.WebSocket 換掉以便在 open handler 送出帳密。

  2. term.ptt.cc 自動登入 by maple3142 / 2018

    除了登入,還提供自動跳過一些畫面的功能。 實作是捕捉 PttChrome 的 console 輸出(loginfo),解析訊息判斷發生什麼事,再做反應。

  3. PttChrome+term.ptt.cc Add-on by alan23273850 / 2019

    功能眾多,自動登入只是其一。 實作是比對畫面 innerText 做自動回應。

    這幾支 user script 有一個共通限制,就是要把帳密直接寫在 script 裡才能使用。

  4. PTT Auto Login by c910335 / 2021

    這個不是 user script 而是 Chrome 擴充,利用瀏覽器的密碼管理員儲存/取得密碼,終於不必再寫死帳密了。

    但 Firefox 由於未支援 PasswordCredential,所以是不能用的。


新路數

「如果登入表單是一般 HTML <form>,應該就能沿用密碼管理員了吧?」

之前雖然想過,但一直沒試成功,最近用 <dialog> 避開跟 PttChrome 介面打架,場景乾淨之下就試出來了。

不過只有 Firefox 成功,Chrome 就無法讓密碼管理員跳出來(詢問要不要存密碼),所以 Chrome 的話會退回 PasswordCredential 解法。

實際使用上,只要做一次表單登入並儲存密碼,之後每次登入就只要按 Enter 即可。
如果臨時不想登入,也可以把對話框關掉,就回歸一般使用。


特色總結

  • 不要在 script 內文寫明帳號、密碼
  • 使用瀏覽器的密碼管理員
  • 支援 Firefox(測過版本 126.0.1)
  • 按下「送出」或 Enter 才真正執行登入