Thu 12 Jun 2008
如果連接的網站有用 .htaccess 設定帳號密碼,則可以用 user:password@URL 的方式通過檢查,如下:
GM_xmlhttpRequest(
{
method: 'GET',
url: encodeURI('http://user:password@URL'),
onload: function(req)
{
// do something
}
});
還有一種情況是網頁本身有一個 login 的地方,需要使用者打入帳號密碼這種,那這就不能用前面的方式,反而得在 method 那邊改用 POST method,另外還要加上 data 的敘述:
GM_xmlhttpRequest(
{
method: 'POST',
url: encodeURI('URL'),
headers: { "Content-type" : "application/x-www-form-urlencoded" },
data: encodeURI("username="+username+"&password="+password+"&submit=Submit"),
onload: function(req)
{
// do something
}
});
所以對於一般用 form 的方式也可以採用這種模式。不過需要注意的是,過去 PHP 和網頁溝通在變數上的方式有點改變。本來是網頁的 form 如果有個變數叫 formname,那在 PHP 檔案裡面就可以直接使用 $formname ,但現在在一般的使用上就變成 $_POST["formname"] 了。
3 Responses to “用 GM_xmlhttpRequest 連結有密碼保護的網頁”
Comments
Trackbacks
February 2nd, 2009 at 10:24 am
您好
是將要連結的URL/username/password分別填上A/B/C三處然後以 index.html存起麼?
我試過了但似乎沒效, 請指點, 謝謝!
GM_xmlhttpRequest(
{
method: ‘POST’,
url: encodeURI(’A),
headers: { “Content-type” : “application/x-www-form-urlencoded” },
data: encodeURI(”username=”+B+”&password=”+C+”&submit=Submit”),
onload: function(req)
{
// do something
}
});
February 2nd, 2009 at 10:47 am
另請問如何避免洩露該組 username/password 呢?
February 9th, 2009 at 9:08 am
您可能誤會了,對於用 .htaccess 的,是會另外跳出一個窗讓你打帳號密碼的,對於這類型的,就是用 http://user:password@URL 這種方法。也就是說其實你連線的時候是 http://URL,但是為了不要讓那個窗跳出來,所以先把帳號密碼給它。
如果是網頁方式透過 POST 這種方法的,基本上會需要一些額外的程式,比方說用 firefox 的話,就可以用 firebug 來看自己輸入密碼的時候送了什麼樣的連結出去,或者自己解譯原始檔來做。原文只是做一個範例,並不是必然的規則。
至於如何避免洩漏,基本上因為 javascript 是明文,大概沒有辦法不洩漏。當初寫這篇,印象中是為了抓一些有帳號密碼保護的網站的東西,怕自己日後忘記留個紀錄罷了。