このPhantomJSスクリプトを書いて、Instagramへのサインインを自動化しました。フォームフィールドに入力して送信ボタンを押すと、次のメッセージが表示され、常にログオン画面にリダイレクトされます。PhantomJSコードでInstagramにサインインするトラブルシューティング
ユーザー名またはパスワードが間違っています。
資格情報が正しいと私は100%肯定的であり、私は複数のInstagramアカウントで試しました。
私は、端末からのMac上でスクリプトを実行している:
$ phantomjs --ssl-protocol=any --cookies-file=cookies.txt script.js username password
は--ssl-protocol=any
オプションに注意してください。それがなければ、PhantomJSはHTTPSのためにログインページを開くことさえできません。 this questionを参照してください。
ここにコードがあります。私はthis tutorialを基にし、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); } );
そして、ここでは、私がこれまで試したものです。
--cookies-file=cookies.txt
コマンドラインオプションを追加するだけでなく、phantom.addCookie
もコード内で試してみました。何の違いもありませんでした。 - authヘッダーを明示的に送信しています。 this questionを参照してください。
- タイムゾーンを変更しています。これが意味をなさないかどうかはわかりません。 this questionを参照してください。
明らかに、PhantomJSにはSSLに関するいくつかの問題があります。私はちょうどこの目的のためにそれを使用してあきらめるべきですか?
ありがとうございました!今は完璧に動作します。私はスクリプトに必要な調整を行い、Githubに掲載しました - [リンクはこちら](https://github.com/eafreitas/autoig) – Euripedes
@Euripedes非常にお手伝いします。すべての入力の変更を別のpage.evaluateに配置する必要があることはわかりにくいです。 –