LoginSignup
0
0

More than 5 years have passed since last update.

PhantomJSでTwitterのフォロワーリクエストを自動で承認する

Last updated at Posted at 2017-02-07

コード

追記
アプデしてblacklistとwhitelistを追加しました。
追記ココまで


var page = require('webpage').create();

page.open('https://mobile.twitter.com/login', function(status) {
    if(status !== "success") {
        console.log("Unable to load url.");
        phantom.exit();
    }
    console.log('login...');
    page.evaluate(function() {
        document.getElementById("session[username_or_email]").value = "";
        document.getElementById("session[password]").value = "";
        document.forms[0].submit();
    });
    page.onLoadFinished = loggedIn
});

function loggedIn() {
    console.log('logged in.');
    page.onLoadFinished = null;
    page.open('https://mobile.twitter.com/follower_requests', function(status) {
        if(status !== "success") {
            console.log("Unable to load url.");
            phantom.exit();
        }
        console.log('fetch follower requests');
        var forms = page.evaluate(function() {
            return document.forms;
        });
        if(forms[0]) {
            console.log('requests found');
            approve();
        } else {
            console.log('no follower requests found');
            phantom.exit();
        }
    });
}

function approve() {
    var flag = page.evaluate(function() {
        if(!document.forms[0] || document.forms[0].action.indexOf("search") !== -1) {
            return false;
        } else {
            var ref = document.getElementsByClassName("fullname")[0].parentNode.href;
            document.forms[0].submit();
            return ref.replace(/.*\/(.*?)\?.*/, "$1");
        }
    });
    if(flag) {
        console.log('approve: ' + flag);
        page.onLoadFinished = approve;
    } else {
        page.onLoadFinished = null;
        console.log('approved requests');
        phantom.exit();
    }
}

ライセンスは適当にGPLv3
命名は適当になんかそれっぽく

使い方

document.getElementById("session[username_or_email]").value = "";
document.getElementById("session[password]").value = "";

ここんとこにユーザーネーム/メールアドレスとパスワードを入れて

$ phantomjs ./main.js

とりあえず承認してくれる。

難点

ログインする度にTwitterから「New login to Twitter from ~~」とメールが来る
アカウントの設定でメール通知を全て無効にしてもメールが来る(当たり前だけど)
このあたりどうにかならないものか……

一応既存のものがないか調べたつもりですが、別にもっと良いものがあれば教えて戴けるとこれ幸い。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0