SE吾郎の備忘録

24歳SEの勉強用の備忘録です.皆様の役にも立てれば幸いです.

【備忘録】インスタのフォロワーが自動で増える!? pythonで自動いいねを押すプログラム

seleniumを使用したブラウザ自動操作によってフォロワーが自動で増えるプログラムの作成を目指します.
本記事はこんな方におすすめです.

  • seleniumを使用したプログラムの勉強をしたい人
  • インスタのフォロワーを何もせずに増やしたい人

実装するプログラムのアルゴリズムは以下のようになります.
seleniumを起動
・instagrmのページにアクセスし,ログインする.
・設定したタグを検索し,最新投稿から複数個の投稿にいいねをつける.
このような手順の方がフォロワーが増えやすいよというアドバイスがありましたら,コメントいただけると嬉しいです.
以下に実際のコードを載せます.実際に使用する場合は,コピペしてID****とpass****を自分のユーザIDとパスワードに変更するだけで実行可能です.
検索ワードも自分に合ったものに変えて見てください.


from selenium import webdriver
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
import time
import random

def login():
    # Instagramのログインページを指定
    driver.get('https://www.instagram.com/accounts/login/?source=auth_switcher')
    time.sleep(1)

    ### 追加箇所 Start ###
    # メアドとパスワードを入力
    driver.find_element_by_name('username').send_keys('ID*******')
    time.sleep(1)
    driver.find_element_by_name('password').send_keys('pass*****')
    time.sleep(1)

    # ログインボタンを押す
    driver.find_element_by_class_name('L3NKy').click()
    time.sleep(5)

    #後で
    driver.find_element_by_class_name('yWX7d').click()
    time.sleep(5)

    #後で
    driver.find_element_by_class_name('_a9_1').click()
    time.sleep(3)

def tagsearch(tag, driver):
    # tagで渡ってきたハッシュタグのページにアクセス
    tagurl = 'https://www.instagram.com/explore/tags/'
    driver.get(tagurl + tag)
    time.sleep(3)

def pushnice(nice_num, driver): # いいねの回数を引数で指定
    # 最新の投稿が見える位置まで移動(スクロール)
    time.sleep(3)
    target = driver.find_elements_by_class_name('_aa8k')[10]
    actions = ActionChains(driver)
    actions.move_to_element(target)
    actions.perform()
    time.sleep(3)

    # 最新の投稿の1枚目をクリックしていいねを実行
    driver.find_elements_by_class_name('_aa8k')[9].click()
    time.sleep(3)
    #次の投稿を表示(矢印を押す)
    driver.find_element_by_class_name('_aamw').click()
    time.sleep(5)

    # 指定回数繰り返し
    for nn in range(nice_num-1):
        # ループ中のエラー対策
        print(nn)
        MAX_RETRY = 10 # エラーリトライ上限
        for retry_n in range(MAX_RETRY): # エラー発生時MAX_RETRY回リトライする
            try:
                # 次の投稿へ移動
                driver.find_element_by_class_name('_aaqg').click()
                x = random.randint(0, 5)
                time.sleep(20 + x)

                # いいねを押す
                driver.find_element_by_class_name('_aamw').click()
                x = random.randint(0, 5)
                time.sleep(5)
            # エラー時にはリトライ
            except:
                time.sleep(5)
                print("except")
                x = random.randint(0, 5)
                # 次の投稿へ移動
                driver.find_element_by_class_name('_aaqg').click()
                x = random.randint(0, 5)
                time.sleep(20 + x)

            # エラーなし
            else:
                break


if __name__ == '__main__':
    # Macの方用のChrome Driverのパスの設定
    driver = webdriver.Chrome('./chromedriver')
    time.sleep(1)
    # ログイン
    login()

    #タグ検索
    # 検索するハッシュタグを指定する。
    taglist = ['followforfollowback', 'likeforfollow', 'l4f']
    countlist = [5, 5, 5] 
    
    for j in range (0, 10):
        for i in range(0, 3):
            print(taglist[i])
            tagsearch(taglist[i], driver)
            pushnice(countlist[i], driver) 

    

こちらから簡単にコードの動作と解説を行います.
chorme driverを起動後,login関数でinstagramのサイトにアクセスし,入力したIDとパスワードでログインを行います.
chrome driverの実行には少し時間がかかるので,sleep関数で時間を開けています.

インスタ自動ログイン画面

次に,「ログイン情報の保存」と「お知らせをオンにする」のポップアップの後でボタンを押してログイン関数は終了になります

ポップアップ画面スキップ

pushnice関数では,


       target = driver.find_elements_by_class_name('_aa8k')[10] 

検索した投稿の最新投稿の画面に移動し,


       driver.find_elements_by_class_name('_aa8k')[9].click()

いいねを押し,


       driver.find_element_by_class_name('_aamw').click()

次の投稿に移動の矢印を押す というプロセスを繰り返します.
ループ内ではsleepあ関数の待ち時間をランダムにすることで,インスタ側からの機能制限を回避する狙いがあります.
また,何らかの失敗が発生しても自動プログラムが終了しないように例外処理で次の投稿に進むように設定しています.

みなさんも自動プログラムで,寝ている間にフォロワー獲得を目指してみませんか?