OAuthを用いずにTwitterに自動投稿する (回数制限あり, Selenium with Ruby)
[履歴] [最終更新] (2016/06/03 21:53:24)

概要

こちらのページで紹介されているSeleniumを用いて、OAuthを用いずにTwitterに自動投稿するRubyスクリプトを記述してみます。連続で複数回実行すると、ボット判定としてキャプチャ認証が発生します。その認証までは通過できませんので悪しからず。また、Twitterの仕様変更次第ではDOMの構造が変化するため、下記サンプルは機能しなくなる恐れが有ります。

twitter_post.rb

#!/usr/bin/ruby
require "selenium-webdriver"
driver = Selenium::WebDriver.for :firefox
driver.manage.timeouts.implicit_wait = 10 # seconds

# トップページを表示
driver.get "https://twitter.com/"

# ログイン処理
input_email = driver.find_element :id => "signin-email"
input_email.clear
input_email.send_keys "warren757"
input_password = driver.find_element :id => "signin-password"
input_password.clear
input_password.send_keys "warren757's password"
input_password.submit

# つぶやき内容をフォームに入力
driver.find_element(:id => "tweet-box-mini-home-profile").send_keys "Posted from a ruby script using Selenium."

# サブミット
driver.find_elements(:class, "tweet-action").each do |tweet_btn|
  tweet_btn.click if tweet_btn.attribute("class").split(' ').select{|cname| cname=='disabled'}.size == 0
end

# スクリーンショット生成
sleep 5
driver.save_screenshot "/tmp/twitter_post.png"
関連ページ
    概要 人間がブラウザを用いて手作業でできること: 業務でのWebシステムの操作 巡回サイトでの定型処理 Webアプリケーションの自動テスト etc. は、プログラミングによって自動化できます。例えばPerlではWWW::Mechanizeというモジュールを用いて上記のような自動操作が可能です。同様にRubyにも