使用CasperJS获取HTTP 412

时间:2017-06-04 04:42:30

标签: javascript http web-scraping phantomjs casperjs

我正在编写一些CasperJS脚本,允许我从控制台登录网站。但是,当我尝试登录https://www.zara.com/us/时,我不断收到HTTP 412 Precondition Failed。我已经尝试了--ssl-protocol=any--ignore-ssl-erros=true,但它无法解决问题。有谁知道如何解决这个问题?

谢谢!

2 个答案:

答案 0 :(得分:0)

您也可以尝试--web-security=false,但我认为您的问题与HTTPS无关。使用这个简单的脚本,我得到一个200代码(即使我没有任何选项运行它):

var casper = require('casper').create();

casper.start('https://www.zara.com/us/');

casper.then(function () {
  this.echo(this.getTitle());
});

casper.run();

当您填写表单或请求的HTTP标头时,代码中可能存在错误。为了记录,这里是412错误(MDN)的描述:

  

HTTP 412 Precondition Failed客户端错误响应代码指示   已拒绝访问目标资源。发生这种情况   当GET或HEAD以外的方法有条件请求时   由If-Unmodified-Since或If-None-Match标头定义的条件   没有实现。在这种情况下,请求,通常是上传或   修改资源,无法进行此错误响应   送回来了。

答案 1 :(得分:0)

这个测试脚本对我来说很好。怀疑是useragent还是viewportsize

casper.options.viewportSize = { width:1024, height: 800 }

casper.test.begin('ZARA', 1, function (test) {

  casper.userAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X)');    

  casper.start("https://www.zara.com/us/", function () {
    test.assertTitle("ZARA United States - Official Website");
  });

  casper.waitUntilVisible("#newsletter-subscribe-form", function() {
    this.capture("pass.jpg");
  }, function() {
    this.capture("fail.jpg");
  });


  casper.run(function () {
    test.done();
  });
});

enter image description here