Pythonには、WindowsのGUI操作を自動化するPyAutoGUIというライブラリがあります。
「GUIの自動化で何か面白い事できないか」と思い、Instagramのいいねツールを作ってみました。
完成形
パソコンのブラウザでInstagramを開いて、ひたすら「いいね」するツールです。
なんともアナログですが、無限いいねができます。
memo ちなみに、Instagramはツールでのいいねを禁止しています。やりすぎると制限がかかります。節度をもって利用しましょう。
仕様
実装はとてもアナログです。
①写真を開いて「L」キーでいいね(Likeのショートカットキー)
②「→」キーで次の写真に移動
③読み込み待ちのため0.8-1.2秒待機
これを指定回数繰り返します。終了する場合は、マウスカーソルを画面の左上に動かします。
環境はWindows、ブラウザはChromeを想定しています。
memo 複数のモニタを繋げたマルチディスプレイでは、特定の画面でのみ動作します。私は3枚のモニタを繋げて作業していますが、2枚目のモニタの座標値が参照されてコマンドが動いていました。理由は不明です。
実装
# 事前に以下をインストールする
pip install pyautogui
pip install Pillow
pip sintall opencv-python
主に使うのはPyAutoGUIですが、PyAutoGUIにはPillowとopenCVを使う機能(画像でクリック位置指定)があるので、もし入れて泣ければインストールしま。
Pythonのコードは以下の通りです。
# Instagram無限いいねツール
import pyautogui
import time
import random
# マウスポインタを左上に移動すると止まるフェールセーフ
pyautogui.FAILSAFE = True
# 指定座標をクリックする関数
def move_page():
pyautogui.press( "right" )
def like():
pyautogui.press( ["tab","tab","tab","tab"] ) # tabキーを4回押す
pyautogui.press( "l" )
# 読み込みのために数秒待つ関数
def stop_and_wait():
time_stop = random.uniform(1.2, 1.5)
time.sleep(time_stop) # 待つ
print("読み込みのため", time_stop, "秒待ちます")
# 指定回数繰り返す
# インスタの「いいね」は24hで1000回で規制かかる
# 実際にためしたところ300くらいで規制されたので、フォロワー数などにも関係していそう
n = 100 # 回数
n_total = 0
# ブラウザをアクティブにする
pyautogui.doubleClick(10, 10)
# 検索結果に表示される最初の9枚「Top Posts」を飛ばす
pyautogui.press( ["tab","tab","tab","tab","tab","tab","tab","tab","tab","tab","tab"] )
pyautogui.press( "enter" )
for i in range(n):
move_page() # 次のページに移動
stop_and_wait()
like()
n_total = n_total +1
print(n_total,"回目のいいねが終わりました")
使い方
まず、「いいね」したいInstagramの特定のタグの検索結果を表示します。
Instagramでよく見る意味のわからないタグ「#キリトリセカイ」の結果をいいねしまくります。
Pythonのプログラムを実行すると、以下のようにいいねの回数と待ち時間が表示されます。
待ち時間に乱数を含めているのは、操作が一定間隔だとInstagramの検出AIに自動ツールだと悟られやすいのではないか、と考えたためです。
memo このコードのように、連続100回いいねすると、InstagramのUIからワーニングが表示され、一定時間「いいね規制」がかかります。テストのために作ったアカウントはフォロワーも少ないため、余計に規制がかかりやすい可能性もありますが、ご自身のアカウントで試す際は節度をもってお願いします。
参考:画面クリックで実装
# Instagram無限いいねツール
import pyautogui
import time
import random
# マウスポインタを左上に移動すると止まるフェールセーフ
pyautogui.FAILSAFE = True
# 指定座標をクリックする関数
# クリックする座標は、ディスプレイの大きさとInstagramの仕様に合わせて変更する
def testkey02():
pyautogui.doubleClick(900, 560)
pyautogui.click(1864, 560)
# 読み込みのために数秒待つ関数
def stop_and_wait():
time_stop = random.uniform(1.2, 1.5)
time.sleep(time_stop) # 待つ
print("読み込みのため", time_stop, "秒待ちます")
# 指定階数繰り返す
# インスタの「いいね」は24hで1000回で規制かかる
# 実際にためしたところ300くらいで規制されたので、フォロワー数などにも関係していそう
n = 100 # 回数
n_total = 0
for i in range(n):
testkey02() # クリック実行
stop_and_wait()
n_total = n_total +1
print(n_total,"回目のいいねが終わりました")
キーボードではなく、マウス操作を自動化することで実装した例がこちらです。
この実装では、以下の要領でクリックして「いいね」をします。
①写真をダブルクリックして「いいね」
②次の写真に移動
③読み込み待ちのため0.8-1.2秒待機
アナログすぎて格好が悪い、座標位置の取得が面倒など、あまりおすすめできませんが、キーボード操作では自動化できないPC操作で役に立つかもしれません。
参考:いいねボタンの画像からクリック場所を判定
import pyautogui
pyautogui.FAILSAFE = True
# いいねボタンの画像と一致する場所を画面上から探してクリックする
submit = pyautogui.locateOnScreen('good.png', confidence = 0.8)
sub_x, sub_y = pyautogui.center(submit)
pyautogui.click(sub_x, sub_y)
print("sub_x=",sub_x)
print("sub_y=", sub_y)
print('fins')
ちなみに、参考となる画像を与えて「この画像に近い部分をクリックするように」設定するコードがこちらです。
この手法で、いいねボタンを参考画像にしてクリックするように実装したかったのですが、様々工夫しても「いいねボタンだけ」を検出することは難しいようで、断念しました。
何か別のことに使えないか考えているところです。
まとめ
Instagramのいいね自動化ツールを作りました。
キーボード操作やマウス操作の自動化は他にも応用できそうです。
クリックだけでなく、キーボード操作や、画像でのクリック位置指定も組み合わせて操作させれば、より活用の幅が広がると思われます。
コメント