【问题标题】:HTTP 407 CasperJS through corporate proxyHTTP 407 CasperJS 通过公司代理
【发布时间】:2015-11-27 07:53:43
【问题描述】:

我正在尝试使用 casperjs 访问 creditkarma.com(未被防火墙阻止)。但是我不断收到 407 错误和一个页面说我需要提供用户名和密码,没有表单只是一个错误。我试过http://username:password@example.com。我还尝试了 --proxy 和 --proxy-auth 我也尝试发送标头。

casper.options.pageSettings = {
    customHeaders:{
        'Authorization':'Basic '+btoa('myUserName:myPassword')
    }
}

该命令是通过 windows 命令提示符运行的,所以我还设置了 HTTP_PROXY。我在这上面花了几个小时,似乎无法弄清楚为什么这不起作用。有没有人有其他想法我可以尝试?

【问题讨论】:

  • 你使用最新的 CasperJS 版本吗?
  • 是和幻影1.9.2
  • 请展示您如何启动脚本。另外,企业 vpn 还是企业代理?
  • Casper 中的 Casperjs 测试 ck.js 是对 phantomjs--ssl-protocol=any 的调用,然后我包含了代理选项。我不太确定。我连接了一个 Vpn,但我有一个在我们的内部论坛中提到的代理 url
  • 我只是查看了发送的标头,它实际上是代理授权协商。有没有办法为此编码?

标签: javascript proxy phantomjs casperjs


【解决方案1】:

根据 407 响应判断,您必须 1.使用代理 2. 提供代理身份验证要求。

在 CasperJS(和 PhantomJS)中,你可以这样做:

casperjs --proxy=192.168.0.100:8080 --proxy-auth=user:pass ck.js

此外,由于目标站点仅使用 https 协议,您最好在参数列表中包含防止 ssl 错误的说明。

casperjs --ignore-ssl-errors=yes --ssl-protocol=any --proxy=192.168.0.100:8080 --proxy-auth=user:pass ck.js

如果需要 NTLM 授权,它在 PhantomJS 2.0.0 版本中存在,但 CasperJS 尚不支持该版本。您可以启用本地 NTLM 代理以绕过该限制并仍然使用 CasperJS,如以下答案所示:cntlm proxy with phantomjs

【讨论】:

  • 我试过了,还是不行。我确实注意到标题是协商的而不是基本的,我是否需要为此做一些不同的事情
  • 我不熟悉windows网络,那可能是NTLM身份验证吗?似乎 PhantomJS 支持它from version 2 bur CasperJS 不支持 v2。另一个工具有一个很好的解决方法:stackoverflow.com/questions/31209449/cntlm-proxy-with-phantomjs
  • 我最终使用了 cntlm 本地代理,但它不是一个很好的解决方案,因为您需要管理员权限才能使用它,这意味着我的脚本不容易为其他用户运行。正如您所指出的,casperjs 不适用于与 ntlm 一起使用的 phantomjs 版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 2013-02-11
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
相关资源
最近更新 更多