我試圖打開一個網頁需要的HTTP認證,在PhantomJS。 我的腳本是基於關閉loadspeed.js例如:PhantomJS不發送認證頭
var page = require('webpage').create(),
t, address;
page.settings.userName = "user";
page.settings.password = "password";
if (phantom.args.length === 0) {
console.log('Usage: loadspeed.js <some URL>');
phantom.exit();
} else {
t = Date.now();
address = phantom.args[0];
page.open(address, function (status) {
if (status !== 'success') {
console.log('FAIL to load the address');
} else {
t = Date.now() - t;
console.log('Loading time ' + t + ' msec');
page.render('page.jpg');
}
phantom.exit();
});
}
我可以從我得到每次401渲染page.jpg看到。 我也使用Wireshark來跟蹤HTTP會話,它揭示了GET請求中沒有向給定的URL發送認證頭。
我在這裏做錯了什麼?我剛剛開始使用PhantomJS,但我一直在搜索整個晚上,並沒有得到很遠......
什麼瀏覽器? Chrome 19並不允許你設置XHR的用戶名和密碼。這是因爲他們不允許使用用戶名:密碼@比例的網址。針對不同網站的HTTP認證是一件棘手的事情。我想我會在下週末寫一篇關於這個話題的博客。 – panzi 2012-05-29 00:18:37
不要與這個問題直接做的,但我想指出的是,作爲PhantomJS 1.9.2和0.8.4 SlimerJS的,(是否帶'page.settings'或'page.customHeaders'完成)的認證信息被髮送到該頁面上引用的所有第三方服務器。 (例如,如果您登錄的頁面爲其jQuery使用CDN,那麼該CDN服務器將獲取您的用戶名和密碼;對於廣告服務器也是如此)。至少,SlimerJS正在研究解決方案。 – 2013-10-31 00:57:48