【发布时间】:2013-10-17 15:03:07
【问题描述】:
我可以在nodejs中抓取一个网页,但我需要先验证自己。在 curl 中,您可以使用 curl --user user:password [url] 执行此操作。
如何在节点中实现相同的结果?
【问题讨论】:
我可以在nodejs中抓取一个网页,但我需要先验证自己。在 curl 中,您可以使用 curl --user user:password [url] 执行此操作。
如何在节点中实现相同的结果?
【问题讨论】:
您只需要在您的 HTTP 请求中添加一个授权标头。 Authorization 标头应该包含用户名和密码以及一个冒号,然后应该是 Base64 编码,然后在前面加上 Basic 和一个空格。
var header = 'Basic ' + new Buffer(user + ':' + pass).toString('base64');
这是一个涉及 GET 请求的完整示例。
var http = require('http');
var user = 'username';
var pass = 'password';
var auth = new Buffer(user + ':' + pass).toString('base64');
var options = {
host: 'example.com',
port: 80,
path: '/path',
headers: {
'Authorization': 'Basic ' + auth
}
};
http.get(options, function(res) {
// response is here
});
【讨论】: