Ich versuche, eine Webseite zu öffnen, die HTTP-Authentifizierung in PhantomJS erfordert. Mein Skript wird das loadspeed.js Beispiel basiert weg:PhantomJS sendet keine Authentifizierung Header
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();
});
}
ich aus dem gerenderten page.jpg sehen kann, dass ich jedes Mal ein 401 bin immer. Ich habe auch die HTTP-Sitzung mit Wireshark verfolgt, die offenbart, dass kein Authentifizierungsheader in der GET-Anfrage an die angegebene URL gesendet wird.
Was mache ich hier falsch? Ich fange gerade mit PhantomJS an, aber ich habe den ganzen Abend gesucht und bin nicht weit gekommen ...
Welcher Browser? Chrome 19 erlaubt Ihnen nicht, eine XHR-Einstellung vorzunehmen, die den Benutzernamen und das Passwort festlegt. Dies wurde verursacht, als der Benutzername: password @ Anteil der URLs nicht zugelassen wurde. HTTP Auth gegen eine andere Website ist ein kniffliges Geschäft. Ich schätze, ich werde nächstes Wochenende einen Blog über dieses Thema schreiben. – panzi
Nicht direkt mit dieser Frage zu tun, aber ich möchte darauf hinweisen, dass ab PhantomJS 1.9.2 und SlimerJS 0.8.4 Ihre Authentifizierungsinformationen (egal ob mit 'page.settings' oder' page.customHeaders') gesendet werden alle Server von Drittanbietern, auf die auf dieser Seite verwiesen wird. (Wenn z. B. die Seite, auf der Sie sich anmelden, ein CDN für ihre jQuery verwendet, erhält dieser CDN-Server Ihren Benutzernamen und Ihr Passwort; ähnlich für Ad-Server.) SlimerJS arbeitet zumindest an einer Lösung. –