gpt4 book ai didi

javascript - 如何使用 casperjs 登录 Instagram

转载 作者:行者123 更新时间:2023-12-01 23:24:28 25 4
gpt4 key购买 nike

我是 CasperJs 的初学者,我编写了以下代码:

'use strict';

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

var username = "XXXXXXXX";
var password = "XXXXXXXX";

casper.start('https://instagram.com/accounts/login/', function() {

this.echo(this.getTitle());
console.log('Starting location is ' + this.getCurrentUrl());

});

casper.then(function() {

/*this.fill('form[data-reactid=".0.0.1.0.1"]', {
username: username,
password: password
}, true); i tried this*/

/*this.fill('form[data-reactid=".0.0.1.0.1"]', {
'input[id="lfFieldInputUsername"]': username,
'input[id="lfFieldInputPassword"]': password
}, true); i tried this too*/

//i am trying this too because the page have only one form element
this.fill('form', {
username: username,
password: password
}, true);

});

casper.then(function() {
console.log('Authentication ok, new location is ' + this.getCurrentUrl());
});

casper.run(function() {
this.echo('end');
});

我发现在CasperJs加载的页面中找不到form元素。在Instagram表单登录中,它没有表单的name/id/class/action。当我使用以下代码片段时,它可以与 Twitter 登录一起使用

this.fillSelectors('form.signin', {
'input[name="session[username_or_email]"]': email,
'input[name="session[password]"]': auth
}, true);

当我使用 this.fillSelectors 时,它会显示以下错误:

类型错误:“undefined”不是this上下文的函数(评估“this.fillSelectors”)

当我使用 this.fill 时,它显示以下错误:

CasperError:填写表单时遇到错误:找不到表单

如有任何建议,我们将不胜感激。

最佳答案

我遇到了完全相同的问题。最终我放弃了寻找 form 元素。我没有使用 this.fill('form', ...),而是使用标准 javascript 分别填充每个字段:

var username_field = document.getElementById('lfFieldInputUsername');
username_field.value = "XXXXXX";
var password_field = document.getElementById('lfFieldInputPassword');
password_field.value = "XXXXXX";

我没有提交表单,而是在 button 元素上发送了一个点击事件。

以下代码实际上适用于 PhantomJS,但您可以将其转换为 CasperJS API。

// Create a page object
var page = require('webpage').create();

// Open the page
page.open('https://instagram.com/accounts/login/', ...
// do other stuff like filling the form fields

// Send the click event
var point = page.evaluate(function () {
var element = document.getElementsByTagName('button')[0];
var rect = element.getBoundingClientRect();
return {
x: rect.left + Math.floor(rect.width / 2),
y: rect.top + Math.floor(rect.height / 2)
};
});
page.sendEvent('click', point.x, point.y);

坏消息是,之后我收到“密码不正确”错误,即使我确定密码是正确的。我还是没能解决这个问题。

也许使用 CasperJS 你会比我更幸运。

你可以看到我的完整代码here .

关于javascript - 如何使用 casperjs 登录 Instagram,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32330264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com