【Selenium + Python】パソコンからインスタを自動で投稿する方法

インスタ(Instagram)を投稿する時に、スマホから入力するのが面倒なので、

パソコンから投稿できないか考えた。

ユーザーエージェントの設定を変えることで、可能になる。

今回は、ブラウザにFirefoxを使った。

プラグインに、「User-Agent Switcher」を使い、Andoroid に設定。

画面がスマホバージョンに切り替わらない時は、ブラウザのリフレッシュボタンを押すとよい。

パソコンの中の画像を選択して、インスタ投稿することができた。

さらに、これを自動で投稿することができないか考えた。

Selenium と Python を使ってできた。

insta_upload.py

# coding:utf-8

import os
import sys
import time

import requests
from selenium import webdriver

def main():

    opt = Options()
    profile_dir = 'プロファイルを保存している場所'
    os.makedirs(profile_dir, exist_ok=True)
    opt.add_argument("-profile")
    opt.add_argument(profile_dir)
    opt.add_argument(
            "--user-agent=Mozilla/5.0 (Linux; Android 4.2.2; SHL24 Build/S2040) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.59 Mobile Safari/537.36")

    driver = webdriver.Firefox(options=opt)

    driver.get("https://www.instagram.com/【ユーザー名】/")

    driver.refresh() #スマホ画面に切り替わらない時 用

    driver.find_element_by_css_selector('div[data-testid="new-post-button"]').click()

    os.system('/bin/sh 【パス】/insta_upload_app.sh')  #画像選択ダイアログ

    time.sleep(3)

    ele = driver.find_element_by_css_selector('span[class*="createSpriteExpand"]')
    driver.execute_script("arguments[0].click();", ele)

    time.sleep(1)

    eles = driver.find_elements_by_css_selector('button')
    for ele in eles:
        if "次へ" in ele.text:
            ele.click()
            break

    driver.find_element_by_css_selector('textarea[aria-label*="キャプションを入力"]').send_keys("インスタのテキスト")

    time.sleep(1)

    eles = driver.find_elements_by_css_selector('button')
    for ele in eles:
        if "シェア" in ele.text:
            ele.click()
            break

main()

画像選択ダイアログには、Shell経由で、Apple Script を使用した。

insta_upload_app.sh

#!/bin/sh

osascript <<EOS
    tell application "System Events"
        key code 102 -- 英数キー
        key code 44 -- スラッシュ
        keystroke "【画像を保存の用のパス】/insta"
        key code 76 -- エンター
        key code 125 -- down
        key code 76 -- エンター
    end tell
    return
EOS

パソコンからの自動投稿で、気をつけなければいけないことが1つある。

不正アクセスをしたとみなされて、一時的にアカウントがロックされることがある。
その場合、パスワードを変更しなければならなくなる。

Options で、ユーザーエージェントの設定をするといけると思うのだが・・・。