6

我有很多GreaseMonkey腳本,我在我的作品中寫了這些腳本,它們會自動將我登錄到我們在此處的內部網站。除了我們的使用HTTP身份驗證的時間表應用程序之外,我幾乎爲這些網站中的每一個都設法編寫了腳本。GreaseMonkey腳本使用HTTP身份驗證進行自動登錄

有沒有一種方法可以使用GreaseMonkey自動登錄我的網站?

編輯:我知道瀏覽器中的商店密碼功能,但我的腳本更進一步,通過檢查我是否在加載時登錄到網站(通過遍歷HTML),然後向登錄提交帖子頁。這消除了不得不加載網站,進入登錄頁面,輸入我的憑據,然後點擊提交的步驟

回答

6

可以通過設置「授權」HTTP標頭使用HTTP認證登錄,該標頭的值設置爲字符串「基本用戶名:密碼」,但使用「用戶名:密碼」部分字符串Base 64編碼。

http://frontier.userland.com/stories/storyReader$2159

的研究發現的GreaseMonkey有內置的AA功能,您可以發送GET/POST請求稱爲GM_xmlhttpRequest

服務器有點

http://diveintogreasemonkey.org/api/gm_xmlhttprequest.html

所以把他們放在一起(並獲取此JavaScript代碼將字符串轉換爲base64我得到以下內容

http://www.webtoolkit.info/javascript-base64.html

var loggedInText = document.getElementById('metanav').firstChild.firstChild.innerHTML; 
if (loggedInText != "logged in as jklp") { 
    var username = 'jklp'; 
    var password = 'jklpPass'; 
    var base64string = Base64.encode(username + ":" + password); 

    GM_xmlhttpRequest({ 
     method: 'GET', 
     url: 'http://foo.com/trac/login', 
     headers: { 
      'User-agent': 'Mozilla/4.0 (compatible) Greasemonkey/0.3', 
      'Accept': 'application/atom+xml,application/xml,text/xml', 
      'Authorization':'Basic ' + base64string, 
     } 
    }); 
} 

所以,當我現在訪問該網站,它遍歷DOM,如果我沒有登錄,它自動地記錄我進去。

1

爲什麼你不使用Firefox(我假設你使用Firefox)來記住你的憑證密碼管理器?

我發現此鏈接:HTTP Authentication with HTML Forms。看起來你可以使用JavaScript做HTTP認證。當你第一次導航到一個URL時,我認爲你不會有Greasemonkey中斷。您可能需要設置某種啓動點,以便您可以使用greasemonkey自動重定向+登錄。例如,您可以讓本地頁面在查詢字符串中使用目標URL,讓Greasemonkey自動執行身份驗證+重定向。唯一的問題是,您必須將網站書籤封裝在您用作入口點的書籤的啓動頁面中。

1

HTTP驗證信息在每次請求時都會發送,而不僅僅是登錄。瀏覽器會在第一次登錄後緩存會話的登錄信息。所以,你真的不試圖通過檢查,如果您已經登錄保存任何

你也可以忘記的Greasemonkey乾脆,只是給你登錄到該URL像這樣:

http://username:[email protected]/ 

當然,將它保存在書籤中可能會帶來安全風險,但並不僅限於將密碼保存在瀏覽器中。