Instagram'da oturum açmayı otomatikleştirmek için bu PhantomJS komut dosyasını yazdım. Form alanlarını başarıyla doldurabilir ve gönderme düğmesine basabilir, ancak her zaman aşağıdaki iletiyle oturum açma ekranına yeniden yönlendirilir:Instagram'da oturum açmak için PhantomJS kodunda sorun giderme
Kullanıcı adınız veya parolanız yanlış.
Kimlik bilgilerinin doğruluğundan% 100 olumluyım ve bunu birden çok Instagram hesabıyla denedim.
Ben terminalden Mac'te senaryoyu çalıştırıyorum:
$ phantomjs --ssl-protocol=any --cookies-file=cookies.txt script.js username password
Not --ssl-protocol=any
seçeneği. Onsuz PhantomJS, HTTPS'den dolayı giriş sayfasını bile açamaz. Bakınız this question.
İşte kod. this tutorial'u temel aldım ve Instagram'ın giriş sayfasının kaynak kodundaki son değişiklikleri hesaba katmak için kodu güncelledim.
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);
}
);
Ve burada şimdiye kadar çalıştığım buydu:
- Ayar kurabiyeler.
--cookies-file=cookies.txt
komut satırı seçeneğini eklemenin yanı sıra, koduphantom.addCookie
denedim. Hiç bir fark yaratmıyor gibiydi. - Auth başlıklarını açıkça gönderiyor. Bakınız this question.
- Saat dilimini değiştirme. Bunun mantıklı olup olmadığından emin değilim. Bakınız this question.
Görünüşte PhantomJS'nin SSL ile ilgili bazı sorunları var. Bunu bu amaçla kullanmam mı gerekiyor?
Teşekkür ederiz! Şimdi mükemmel çalışıyor. Komut dosyası için gerekli ayarlamaları yaptım ve bunu Github'da yayınladım - [link here] (https://github.com/eafreitas/autoig) – Euripedes
@Euripedes Size yardımcı olmaktan çok memnun oldum. Her girdi değişikliğinin ayrı bir page.evaluate dosyasına yerleştirilmesi gerektiğini anlamak benim için zordu. –