Instagram自動化ツール「InstaPy」をVultrで動かす

本記事は、Instagram(インスタグラム)で決まったアクションを自動的に行う方法の解説です。

アカウントを作って画像を投稿だけしていても、なかなかインプレッションは増えません。

それは、Instagramが『ソーシャルネットワーク』なので、「ソーシャル」に「ネットワーク」する性質のサービスであるから。

既に他媒体で知名度(認知)を獲得していない場合は、自分からもアクションを起こしましょう。

本来、全て手作業で「いいね」したり「コメント」したりと、アクションする方が良いですね。

投稿はフェイク(偽/嘘)と気づかずとも、自動化された反応は気づくのが人間。

しかし、自分の大切な時間をInstagramへ貢ぎまくるのは惜しい。。。

って方のために、簡単な事は自動化しちゃおうぜというわけです。

初動だけはプログラムを使い、余裕ができたら担当つけるくらいが良いかもしれません。

SNSと商売に関しては、『僕らはSNSでモノを買う』がサクッと読めていい本でした。

僕らはSNSでモノを買う

Instapyとは?

Seleniumを使用し、Pythonで実装されたInstagramの操作を自動化するツールです。

自動化できる処理↓

  • 「Like(いいね)」
  • 「Comment(コメント)」
  • 「Follow(フォロー) / Unfollow(アンフォロー)」

サービスではなく、あくまでもプログラムなので、自分でコードを実行するというわけ。

環境費用以外は無料。

つまりローカルで動かす、あるいは既存のインスタンスで稼働させれば費用は一切かかりません。

https://github.com/timgrossmann/InstaPy

何が良いのか?

Instagramのアクションを自動化するサービスはいくつもあります。

ですが、Facebook社はあまりInstagram上でのBot的な挙動がお好きでないようです。

お好きで
Credit: BARREL

つまり、自動化サービスはいつ停止されるか分かりません。

実際、過去多くのInstagram自動化サービスがアクセス拒否されています。

そういった意味で、全て自分で運用する方がリスクを低減できます。

最悪使えなくなっても、止めるだけですからね🤑

流れ

  1. VPS稼働
  2. Anacondaをインストール
  3. Pipをインストール
  4. InstaPyをインストール
  5. ドキュメント通りに設定
  6. 実行

ローカルで起動させる場合は、VPS立ち上げの項をスキップしてください。

VPS立ち上げ

この記事では、使いやすくかつ非常に安価でクラウドを使用できることから『Vultr』を使っています。

  • DigitalOcean
  • AWS
  • Google Cloud
  • Azure
  • IBM Cloud
  • Alibaba Cloud

Pythonが動かせるコンピューティングリソースであれば何でもOKです。

まずVultrのアカウントを持っていない人は登録するところから。

Vultrを用いているのは、

  • 安くて
  • 使いやすい

ので、自分が正直にオススメできるからです。

今回のチュートリアルで用いたアカウント以外にて、他のプログラムも動かしています。

このリンクから登録すると100ドル分のクレジットが無料で手に入ります。

つまり、しばらく無料でクラウドリソースを使えますのでぜひ。

私の紹介リンクから登録したくない場合は、このリンクから登録してください。

  1. 100ドルクーポンあり
  2. クーポンなし

もちろんウェブアプリケーションにも最適です。

まずは右上の「Sign UP」をクリック。

Vultr

メールアドレスとパスワードを入力してログインします。

Vultr

右中央にある「+」ボタンをクリックし、「Deploy New Instance」とします。

Vultr

インスタンスタイプを選択します。

ただのプログラムを動かす場合は、ノーマルの「Cloud Compute」で十分。

高速なレスポンスを求める場合は、たとえば金融取引のプログラムなどは「High Frequency」やそれ以上のインスタンスを選択すると良いでしょう。

Vultr

ロケショーンを選択します。

この記事では、最小構成のインスタンスが使えるのでNew Yorkとしています。

Vultr

OSは好みです。

私は使い慣れているのでUbuntu18.04にしました。

Vultr

IPv4も使いたいので、10GB SSD、1CPU、メモリ:512MBのインスタンスとしています。

最安のIPv6 Onlyインスタンスでは、Githubの利用が少々面倒でした。

Vultr

その他のオプションは、適当に利用方法によってチェックしたりチェックしなかったりしましょう。

Vultr

Installingになります。

Vultr

Runningになったらインスタンスが起動します。

Vultr

コマンドラインから、ssh [email protected]をたたき、指定のPasswordでログインできます。

Labelにインスタンスを識別する名前を付けると良いです。

Vultr

環境

  • Ubuntu 18.04
  • Python 3

Anacondaをインストール

sshで接続したら、パッケージ管理システムの「Anaconda」をインストールしちゃいましょう。

wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh
bash Anaconda3-2019.03-Linux-x86_64.sh
Welcome to Anaconda3 2019.03
...
[中略]
...
[/home/anaconda3] >>>
...
[中略]
...
PREFIX=/home/anaconda3
...
[中略]
installation finished.
Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>>yes
WARNING: The conda.compat module is deprecated and will be removed in a future release.
...
[中略]
...

.bashrcを再読込する

$ source ~/.bashrc

Anacondaが読み込まれているかバージョンを確認する

$ conda -V

最新バージョンへアップデートする

$ conda update conda

InstaPyをインストール

$ sudo apt-get update
$ sudo apt-get -y upgrade
$ sudo apt-get -y install unzip python3-pip python3-dev build-essential libssl-dev libffi-dev xvfb
$ sudo pip3 install --upgrade pip
$ export LANGUAGE=en_US.UTF-8
$ export LANG=en_US.UTF-8
$ export LC_ALL=en_US.UTF-8
$ locale-gen en_US.UTF-8
$ sudo dpkg-reconfigure locales
$ pip3 install --upgrade pip
$ cd ~
$ wget "https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb"
$ sudo dpkg -i google-chrome-stable_current_amd64.deb
$ sudo apt-get install -y -f
$ sudo rm google-chrome-stable_current_amd64.deb
$ pip install instapy

Seleniumでブラウザ操作を行うプログラムなので、Firefoxもインストールする。

$ sudo apt-get install firefox

コード

アカウント情報を保存する。

session = InstaPy(username="<>", password="<>")

GUIを必要とせずCLIのみで稼働させるため、以下のコードを使う。

headless_browser=True

Likeするハッシュタグと数を指定する。

session.like_by_tags(["自転車"], amount=10)

指定ワードを含む投稿にはLikeしない。

session.set_dont_like(["naked", "nsfw"])

Followする場合、割合を指定出来る。

session.set_do_follow(True, percentage=20)

Commentする場合、割合を指定できる。

session.set_do_comment(True, percentage=20)

コメントを指定する。

session.set_comments(["お前はすでに死んでいる! :stuck_out_tongue_winking_eye:", "ひでぶっ、あべしっ! :kissing_cat:", "競うな!持ち味をイカせッッ! :heart_eyes:", "努力する者が楽しむ者に勝てるワケがない! :wink:", "我が生涯に一片の悔いなし :zap:"])

絵文字のショートコードはこのサイトで確認できます。

プログラムの稼働を高度に制限する。

session.set_quota_supervisor()

実行動作の数を制限する。

set_relationship_bounds()

詳細はドキュメントにて確認を!

大体以下の様なコードになります。

#sample_instagrambot_by_instapy.py

from instapy import InstaPy

session = InstaPy(username="<>", password="<>", headless_browser=True, want_check_browser=True)
session.login()
session.like_by_tags(
	["<>",
	"<>",
	"<>",
	"<>",
	"<>"],
	 amount=10)
session.set_dont_like(["naked", "nsfw"])
session.set_do_follow(True, percentage=20)
session.set_do_comment(True, percentage=20)
session.set_comments(["お前はすでに死んでいる! :stuck_out_tongue_winking_eye:", "ひでぶっ、あべしっ!! :kissing_cat:", "競うな!持ち味をイカせッッ! :heart_eyes:", "努力する者が楽しむ者に勝てるワケがない! :wink:", "Dope! :zap:"])
session.set_quota_supervisor(enabled=True, sleep_after=["likes", "comments_d", "follows", "unfollows", "server_calls_h"], sleepyhead=True, stochastic_flow=True, notify_me=True,
                              peak_likes_hourly=57,
                              peak_likes_daily=585,
                               peak_comments_hourly=21,
                               peak_comments_daily=182,
                                peak_follows_hourly=48,
                                peak_follows_daily=None,
                                 peak_unfollows_hourly=35,
                                 peak_unfollows_daily=402,
                                  peak_server_calls_hourly=None,
                                  peak_server_calls_daily=4700)
session.set_relationship_bounds(enabled=True, max_followers=8500)
session.end()

実行

pythonのバージョンを確認

$ python --version
Python 3.7.4

python 3になっていない場合は、python 3で実行する(Anacondaをインストールしたのでpython3になるはず)。

$ python sample_instagrambot_by_instapy.py
$ python3 sample_instagrambot_by_instapy.py

SSH接続が切れても実行する場合①

$ sudo apt-get install screen
$ screen python sample_instagrambot_by_instapy.py

screenコマンドの詳細は検索ください(面倒だった😇 )!

SSH接続が切れても実行する場合②

$ nohup python sample_instagrambot_by_instapy.py

nohupコマンドの詳細は検索ください(面倒だった😇 )!

ティップス

Instagramはあまり自動化を推奨していないので、ある程度の時間にわたって実行させているとセションが切れてしまう可能性があります。

したがって、僕は自分がローカルPCを使ってる時にバックグラウンドで稼働させておくのが良いのではと思いました。

セッションが終了した際は、VPNでIPアドレスを変更し、新たなセッションとして利用出来るからです。

インスタンスでセッションが終了したらIPアドレスを変更するというプログラムまで組める人は、完全リモートでも良いかもしれません笑

ただし、SNSアカウントの運用は、

生身の人間が行ったほうが良い

です。

これだけは紛れもない事実ですので、頭に入れておきましょう。

Python
Default image
Keisuke Kuribara
零細企業の代表 / ウェブマーケティング、コンサルティング、EC / 漫画と本が好き / 生物捕獲が趣味