Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用casperjs或新浏览器登录时询问验证码的网站_Javascript_Phantomjs_Casperjs_Headless Browser - Fatal编程技术网

Javascript 使用casperjs或新浏览器登录时询问验证码的网站

Javascript 使用casperjs或新浏览器登录时询问验证码的网站,javascript,phantomjs,casperjs,headless-browser,Javascript,Phantomjs,Casperjs,Headless Browser,正在尝试登录admin.booking.com并从预订页面取消我的酒店的所有预订。但问题是,每当我使用CasperJS或从新位置(新浏览器)登录时,它都会要求进行电话验证。它会将预订页面重定向到电话验证页面。这是我的密码 var casper = require('casper').create({ verbose: true, logLevel: 'debug', viewportSize: {width: 950, height: 950} }); casper.

正在尝试登录
admin.booking.com
并从预订页面取消我的酒店的所有预订。但问题是,每当我使用CasperJS或从新位置(新浏览器)登录时,它都会要求进行电话验证。它会将预订页面重定向到电话验证页面。这是我的密码

var casper = require('casper').create({
    verbose: true, 
    logLevel: 'debug',
    viewportSize: {width: 950, height: 950}
});

casper.userAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36');

casper.start('https://admin.booking.com/', function() {
    //this.captureSelector('bhuwan1.png', 'body');
});

casper.then(function(){

    this.evaluate(function(){

       document.getElementById("loginname").value="1123123";
       document.getElementById("password").value="*******";
    });
});



casper.then(function(){

//$("button").eq(1).click();
this.click('button.btn-primary');
//this.wait(10000);
    console.log("first wait for 10sec");
});

casper.then(function(){
    this.wait(10000);
});


casper.then(function(){

var ses = this.getCurrentUrl().split("ses=")[1].split("&")[0];
console.log(ses);
//this.wait(10000);
console.log("first wait for 10sec");
var url = "https://admin.booking.com/hotel/hoteladmin/extranet_ng/manage/search_reservations.html?stay_to=2017-01-08&stay_from=2017-01-07&type=arrival&hotel_id=xxxxx&ses="+ses;

console.log(url);

this.evaluate(function(url){
var newDiv = document.createElement("div"); 
  var newContent = document.createElement("a");

 newContent.setAttribute("href",url);
   newContent.innerText="button";
   newDiv.appendChild(newContent);

  document.body.appendChild(newDiv);
  this.wait(10000);


},url);

});

casper.then(function(){

this.clickLabel("button",'a');
});


casper.then(function(){
    this.wait(10000);
    console.log("first wait for 10sec");

   this.capture('stack15.png', {
        top: 0,
        left: 0,
        width:1000,
        height: 2000
    });

   this.captureSelector('bhuwan15.png', 'body');

});



casper.run();

如何避免手机验证页面和登录,就像从熟悉的或旧的浏览器登录一样

我建议您使用基于cookie的身份验证。 您需要找到保持会话所需的最小cookie量。之后,您需要在脚本中添加以下内容:

phantom.cookies = [{// an array of objects
  'name'     : 'theAuthCookie',
  'value'    : '<very long string>',
  'domain'   : 'www.wikifolio.com',
  'path'     : '/',
  'httponly' : false,
  'secure'   : true,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60 * 43800) //5 years
},{ 'name'     : 'DisclaimerCountryPopupV2',
  'value'    : 'de',
  'domain'   : 'www.wikifolio.com',
  'path'     : '/',
  'httponly' : false,
  'secure'   : true,
  'expires'  : (new Date()).getTime() + (1000 * 60 * 60 * 43800) }]

如果有任何问题,您需要使用
--debug=true
命令行选项

这些回调也可能有用:

casper
.on("error", function(msg){ this.echo("error: " + msg, "ERROR") })
.on("page.error", function(msg, trace){ this.echo("Page Error: " + msg, "ERROR") })
.on("remote.message", function(msg){ this.echo("Info: " + msg, "INFO") })
.on("resource.error", function(resourceError){
    console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
    console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
});

如何使用cookies文件选项what is my_file--cookies file=/path/to/cookies.txt指定存储持久cookies的文件名。幻影--。我还认为,它可能不需要,或者您可以在不设置phatom.cookies的情况下尝试它。不设置phatom.cookies,它就可以将所有cookies传输到cookies.txt。感谢在我的系统中的nodejs命令提示符下运行代码它可以工作,但在aws ubuntu中不工作。帮助
casper
.on("error", function(msg){ this.echo("error: " + msg, "ERROR") })
.on("page.error", function(msg, trace){ this.echo("Page Error: " + msg, "ERROR") })
.on("remote.message", function(msg){ this.echo("Info: " + msg, "INFO") })
.on("resource.error", function(resourceError){
    console.log('Unable to load resource (#' + resourceError.id + 'URL:' + resourceError.url + ')');
    console.log('Error code: ' + resourceError.errorCode + '. Description: ' + resourceError.errorString);
});