2007/3/1 木曜日

Webページに自動ログインする@WSH

Filed under: スクリプト — pnpk @ 1:17:23

初めに言っておきます。僕はプログラムがほとんど出来ません。
初めにソースコードがあって、ちょこっと修正するくらいなら出来なくは無いんですが、プログラムを作らないとやっていけない状況になった事が無いってのが一番大きいんだと思うんですが・・・、まあ、とにかくプログラムが出来ないんですよ。で、VBSって呼ばれている正式名称VB Scriptでリハビリからやっていこうじゃないか。と思っているわけです。

昔からセコイ事をやるためにパソコンはしょうがなく覚えていったんですが、まあ、しょうもない事をスクリプトで解決していこうじゃないか、その中でプログラムへの耐性をつけていけば良いじゃないか。ってのが趣旨です。

基本的にですね、自分でやるのが面倒な物をスクリプトでなんとかしていこう。っていう中で、なんとなく「あー、プログラムもやってみればそれなりに出来るかも知れないな・・・」みたいな事が思えれば良いと思っています。

今回のミッション
認証のあるWebページってあるじゃないですか。パスワードを覚えてくれて自動ログインしてくれれば良いんですが、セキュリティの観念からかパスワードを記憶してくれるページって少ないですよね。
僕はあれが毎度毎度うっとおしいと思っていたわけです。どうせならルーチンワークなんてやりたくないですよね。今回はそこを自動化してみます。

Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("notepad.exe")

とりあえずここに謎の文字列があるわけです。これを適当にデスクトップ等に新規作成でテキスト文書を作成して保存してください。そうしたら拡張子を.vbsに変更します。最近のご時世じゃvbsなんてウイルスくらいしか見ないって・・・。なんて思うかも知れませんがとりあえずここは百歩譲って拡張子はvbsにしてください。もちろんファイル名は適当で良いですよ。
優柔不断過ぎてファイル名も決められない場合には以下のように名前を付けてください。

notepad.vbs

名前をつけたらこのファイルを実行してみましょう。メモ帳が開きましたか?開けば成功です。

Set WshShell=Wscript.CreateObject("Wscript.Shell")

この部分で

Wscript.CreateObject("Wscript.Shell")は次回からWshShellって呼びますよ、良いですね?

と決めています。
で、次の行の

WshShell.Run("notepad.exe")

でメモ帳を実行しているわけです。Setを使わないでそのまま書くと

Wscript.CreateObject("Wscript.Shell").Run("notepad.exe")

こうなります。プログラムの世界は出来るだけ言葉を省略して事を進めていくようです。物ぐさな訳ですね。

そしたらさっきのスクリプトを以下のように書き換えてみましょう。

Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("notepad")
WScript.Sleep(2000)
WshShell.SendKeys("I have a pen")
WshShell.SendKeys("{ENTER}")
WshShell.SendKeys("I am a pen")

どうでしょう?今度はメモ帳が開いた後、謎の英語が繰り広げられたと思います。自動化ですね。

WshShell.SendKeys("I have a pen")

見たままですが、この行でI have a penって文字をメモ帳に送っているわけです。

WshShell.SendKeys("{ENTER}")

こんな感じに書くと改行してくれます。

WScript.Sleep(2000)

この行は2000ミリ秒次の行に行くの待ってて。って意味です。これが無いとメモ帳が開く前にI have a penと入力してしまうわけです、早技です。

ここまで書けばなんとなくWebページに自動ログインする方法が分かったんじゃないかと思います、セコイですが。例えばHotmailに自動でログインするスクリプトを作ってみました。

Set WshShell=Wscript.CreateObject("Wscript.Shell")
WshShell.Run("http://hotmail.msn.co.jp")
WScript.Sleep(4000)
'ここにメールアドレス
WshShell.SendKeys("hogehoge@hotmail.com")
WshShell.SendKeys("{TAB}")
'ここにパスワード
WshShell.SendKeys("password")
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("{TAB}")
WshShell.SendKeys("{ENTER}")

WshShell.SendKeys("hogehoge@hotmail.com")

ここに自分のメールアドレス

WshShell.SendKeys("password")

ここに自分のパスワードを入力する事でこのスクリプトを実行すると勝手にログインしてくれます。もちろんファイルの拡張子はvbsね。

VBSの場合、行頭に’を付ける事でその行を読み飛ばします。コメントアウトってやつです。’を付けた場所に自分で分らなくならないようにコメントを書くことが出来ます。

今日のまとめ
とりあえずですね、本職プログラマの方から見ればかなりダサいプログラミングだと思います。ただ、最初からカッコイイ物なんて作れるわけないんだし、僕と同じでなんとなくスクリプト作れれば便利かな?くらいに思ってもらえれば嬉しいです。
最後に言っておきますが、このスクリプトを使ってログインを行う場合には、パスワードが平文(暗号化されていないって事です)で保存されてしまうのでセキュリティ的に最悪だと思います。なのでヘビーな使い方はしないで自宅のパソコンで使ってくださいね。
セキュリティを考慮した設計もおそらく可能だと思いますが、いかんせん僕に知識が無いので書けません。今度本職プログラマに聞いておくことにします。
まあ、要するにこれを使えばパスワードが保存されないWebページにだって自動ログイン出来てしまうわけです。
そう、例えば勤怠管理システムとかでもね。

Popularity: 6%

コメント (0) »

この記事にはまだコメントがついていません。

コメント RSS トラックバック URI

コメントをどうぞ

HTML convert time: 0.485 sec. Powered by WordPress ME