我正在尝试使用casperjs来访问creditkarma.com(它没有被防火墙阻止)。但我一直收到407错误和一个页面说我需要提供用户名和密码,没有形式只是一个错误。我试过了http://username:password@example.com。我也试过--proxy with --proxy-auth我也试过发送头文件。
casper.options.pageSettings = {
customHeaders:{
'Authorization':'Basic '+btoa('myUserName:myPassword')
}
}
该命令正在通过windows命令提示符运行,所以我也设置了HTTP_PROXY。我已经花了几个小时在这上面,似乎无法弄清楚为什么这不起作用。有没有人有我可以尝试的其他想法?
答案 0 :(得分:2)
根据407的回应来判断 1.使用代理 2.提供代理授权。
在CasperJS(和PhantomJS)中,您可以:
var val = 'val';
var connect_clients = [];
connect_clients.push({
'a': val
});
function lookup(keyName) {
var i;
for ( i = 0; i < connect_clients.length; i++) {
var keys = Object.keys(connect_clients[i]);
if(keys.indexOf(keyName) !== -1) {
return true;
}
}
return false;
}
console.log(lookup('a'));
此外,看到目标站点仅使用https协议,您最好在参数列表中包含指令以防止ssl错误。
casperjs --proxy=192.168.0.100:8080 --proxy-auth=user:pass ck.js
如果需要NTLM授权,它在版本2.0.0中出现在PhantomJS中,但CasperJS还不支持该版本。您可以启用本地NTLM代理来绕过该限制,仍然使用CasperJS,如下面的答案所示:cntlm proxy with phantomjs