SQLの窓 イラストAC フリー素材

2014年07月16日

Ruby(mechanize) 使ってmixi と Twitter へのログインテスト

ログインに成功するという事は、テキストの投稿等の一般的なブラウザの操作はなんとかなるという事です。

Ruby(mechanize)は、数年前に、さくらのサーバーにインストールして使っていましたが、いつのまにか動作しなくなっていました。特に重要なものも無く放置していましたが、Windows にインストールするのは簡単である事がわかり、テストを行いました。

1) Ruby for Windows のインストール( 但しテストはしたのは32ビット )
2) mechanize のインストール
※ インストールされた『Ruby コマンドプロンプトを開く』を実行
※ gem install mechanize を実行
#mixiにログイン
print "Content-type: text/html\n\n"

require 'mechanize'

agent = Mechanize.new

agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.follow_meta_refresh = true
agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'

page = agent.get("https://mixi.jp/")

form = page.forms[0]
form["email"] = "ユーザ"
form["password"] = "パスワード"
page = form.submit

page = agent.get("https://mixi.jp/")

print page.body

#Twitterにログイン
print "Content-type: text/html\n\n"

require 'mechanize'

agent = Mechanize.new

agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.follow_meta_refresh = true
agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'

page = agent.get("https://twitter.com/")

form = page.forms[1]
form["session[username_or_email]"] = "ユーザ"
form["session[password]"] = "パスワード"
page = form.submit

page = agent.get("https://twitter.com/")

print page.body


重要なのは、agent インスタンスの設定です
agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.follow_meta_refresh = true
agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'
1) SSL の設定( 証明書チェックを無視 )
2) META 要素でのリフレッシュに対応( 最近では主流のようです )
3) ブラウザの User Agent の設定( 適当にすると、モバイル扱いになる )

処理は、http ヘッダ無しでコマンドプロンプトから実行してもいいですし、http ヘッダ有りで AN HTTP Server で処理してもいいです。

関連する記事


タグ:ruby Mechanize
posted by at 2014-07-16 15:22 | Ruby | このブログの読者になる | 更新情報をチェックする