Tôi đã viết kịch bản PhantomJS này để tự động đăng nhập vào Instagram. Nó có thể điền thành công vào các trường biểu mẫu và nhấn nút gửi nhưng nó luôn được chuyển hướng trở lại màn hình đăng nhập với thông báo sau:Khắc phục sự cố mã PhantomJS để đăng nhập vào Instagram
Tên người dùng hoặc mật khẩu của bạn không chính xác.
Tôi tích cực 100% rằng thông tin xác thực là chính xác và tôi đã thử bằng nhiều tài khoản Instagram.
Tôi đang chạy kịch bản trên máy Mac từ thiết bị đầu cuối:
$ phantomjs --ssl-protocol=any --cookies-file=cookies.txt script.js username password
Lưu ý tùy chọn --ssl-protocol=any
. Không có nó, PhantomJS thậm chí không thể mở trang đăng nhập vì HTTPS. Xem this question.
Đây là mã. Tôi dựa trên nó this tutorial, và cập nhật mã để tài khoản cho những thay đổi gần đây trong mã nguồn của trang đăng nhập của Instagram.
var system = require('system');
var username = system.args[1];
var password = system.args[2];
var page = require('webpage').create();
page.open('https://instagram.com/accounts/login/',
function (status) {
if (status === "success") {
page.evaluate(function (uid, pwd) {
var username_field = document.getElementById('lfFieldInputUsername');
username_field.value = uid;
var password_field = document.getElementById('lfFieldInputPassword');
password_field.value = pwd;
}, username, password);
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.render('before-submit.png');
page.sendEvent('click', point.x, point.y);
}
setTimeout(function() {
var error = page.evaluate(function() {
var element = document.getElementById('errorAlert');
var error_message = false;
if (element !== null) {
error_message = element.innerText.trim();
}
return error_message;
});
page.render('after-submit.png');
if (!error) {
console.log('Login Successful: ' + page.url);
} else {
console.log('Login Failed: ' + error);
}
phantom.exit(0);
}, 5000);
}
);
Và đây là những gì tôi đã cố gắng cho đến nay:
- Thiết cookie. Ngoài việc thêm tùy chọn dòng lệnh
--cookies-file=cookies.txt
, tôi cũng đã thử sử dụngphantom.addCookie
trong mã. Dường như không tạo ra bất kỳ sự khác biệt nào. - Gửi các tiêu đề auth một cách rõ ràng. Xem this question.
- Thay đổi múi giờ. Không chắc chắn nếu điều này có ý nghĩa. Xem this question.
Rõ ràng PhantomJS có một số vấn đề với SSL. Tôi có nên từ bỏ việc sử dụng nó cho mục đích này không?
Cảm ơn bạn! Hoạt động hoàn hảo ngay bây giờ. Tôi đã thực hiện những điều chỉnh cần thiết cho kịch bản và xuất bản nó trên Github - [link here] (https://github.com/eafreitas/autoig) – Euripedes
@Euripedes Rất vui được giúp bạn. Thật khó cho tôi để tìm ra rằng mọi thay đổi đầu vào nên được đặt trong trang riêng biệt.đánh giá. –