gpt4 book ai didi

javascript - PhantomJS 不发送身份验证 header

转载 作者:可可西里 更新时间:2023-11-01 15:05:03 25 4
gpt4 key购买 nike

我正在尝试在 PhantomJS 中打开一个需要 HTTP 身份验证的网页。我的脚本基于 loadspeed.js 示例:

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();
});
}

我可以从呈现的 page.jpg 中看到我每次都收到 401。我还使用 Wireshark 跟踪了 HTTP session ,这表明在 GET 请求中没有向给定 URL 发送身份验证 header 。

我在这里做错了什么?我才刚刚开始使用 PhantomJS,但我整晚都在搜索,并没有走得太远......

最佳答案

PhantomJS(至少从 1.9.0 开始)有一个关于 auth 的错误:它发送没有 auth header 的请求,然后只有在它返回 401 之后它才会再次执行请求,但这次带有 header 。 (这是针对 GET;对于 POST,它根本不起作用。)

解决方法很简单,所以不用:

page.settings.userName = 'username';
page.settings.password = 'password';

你可以使用:

page.customHeaders={'Authorization': 'Basic '+btoa('username:password')};

(我刚刚在博客文章中介绍了这个:http://darrendev.blogspot.jp/2013/04/phantomjs-post-auth-and-timeouts.html,并从 Igor Semenko 的 PhantomJS 邮件列表中了解到该解决方法。)

关于javascript - PhantomJS 不发送身份验证 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com