HTTP でアクセスするオブジェクトは、サーバー用とクライアント用と二つありますが、現時点ではサーバー用が優れているように思われます。この場合(記事下のサンプルコード)は、おそらくクライアント用では動かないと思いますが、少なくともタイムアウトの設定が可能なのは、サーバー用です。 経験上、クッキーの処理はオブジェクトが自動的に引き継いでいるようなので、このサンプルではクッキーの処理はありません。しかし、WEB サービスのシステムとして突然 URL にアクセスしても拒否されるので( Seesaa では、POST する場合は事前に表示されたページのキーが必要です )正規表現での処理が必要になります。 これが理由で、ページの HTML 構成が変更されると、この手のアプリケーションは動かなくなるので注意が必要です。( 今回を含めて過去に2回変更しています ) 実際のブラウザで処理してネットワークの情報を読み、どのような情報が必要かは各ブラウザの開発者用ツールを使って確認しますが、IE のそれは役に立たないので注意して下さい。Google Chrome か Firefox を使うと良いです。 POST する場合は、HTTP ヘッダに "application/x-www-form-urlencoded" を送るのは HTTP の仕様なので必ず必要ですが、POST も通常の POST 以外に "multipart/form-data; boundary=xxxxxxx" というバイナリデータを送る事が可能な仕様もあります。そのあたりの仕様はなかなか解りづらいですが、ここでは説明していません。 Seesaa のシステムも人間の作ったアプリケーションなので、完璧では無いので、この手のアプリで対応しようとする場合、首をかしげるような時もありますが、だいたいにおいて『結果オーライ』で深く考えないほうがいいと思います。あと、システム的な不明点もあり、どうしてもこのサンプルで返ってくるページが utf-8 ではなく SHIFT_JIS でかえって来ます。しかし、次の処理には関係無いので『ログイン』としてはこれで OK であると思います。 テキストファイルへの書き込みは、取得したページを確認できるようにする為で処理とは直接関係はありません。
' *********************************************************** ' サーバーオブジェクトの準備 ' *********************************************************** Set objHTTP = Wscript.CreateObject("Msxml2.ServerXMLHTTP") lResolve = 60 * 1000 lConnect = 60 * 1000 lSend = 60 * 1000 lReceive = 60 * 1000 ' *********************************************************** ' 正規表現用 ' *********************************************************** Set regEx = New RegExp ' *********************************************************** ' ページ書き込み用 ' *********************************************************** Set Fs = CreateObject( "Scripting.FileSystemObject" ) ' ログインページの取得 Call objHTTP.Open("GET","https://ssl.seesaa.jp/auth",False) Call objHTTP.setTimeouts(lResolve, lConnect, lSend, lReceive) Call objHTTP.Send() ' ページ全体 strPage = objHTTP.responseText ' 書き込み専用(2)で、存在しない場合は作成(True) Set OutObj = Fs.OpenTextFile( "page_login.html", 2, True ) OutObj.Write objHTTP.responseText OutObj.Close ' 投稿用のキーを取得 regEx.IgnoreCase = True regEx.Global = True regEx.Pattern = "authpost""><input value=""([^""]+)""" Set Matches = regEx.Execute( strPage ) For Each Match in Matches strPostKey = Match.SubMatches(0) Exit For Next Wscript.Echo strPostKey ' *********************************************************** ' ログイン用の情報 ' *********************************************************** ' Seesaa のログインユーザ( メールアドレス ) emailData = "" ' Seesaa のログインパスワード passData = "" ' 対象となるブログの ID blogData = "" ' *********************************************************** ' ログイン ( POST ) ' *********************************************************** ' ログイン URL Call objHTTP.Open("POST","https://ssl.seesaa.jp/auth",False) Call objHTTP.setTimeouts(lResolve, lConnect, lSend, lReceive) Call objHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded") strData = "" strData = strData & "aXt=" & strPostKey strData = strData & "&email=" & emailData strData = strData & "&password=" & passData strData = strData & "&return_to=http%3A%2F%2Fblog.seesaa.jp%2F" Call objHTTP.SetRequestHeader("Content-Length",Len(strData)) Call objHTTP.Send(strData) Set OutObj = Fs.OpenTextFile( "page_login_after.html", 2, True ) OutObj.Write objHTTP.responseText OutObj.Close
関連する記事 Seesaa ブログのエクスポートを呼び出して全てをバックアップするスクリプト VBScript で Seesaaブログへ禁止ワード一括登録( アップロード )
|
【Seesaaの最新記事】
- Seesaa のスマホページで表示される広告が左に寄りすぎでみっともないので CSS( 属性セレクター ) で調整する
- テンプレートでその記事の編集画面に直接リンクする
- Seesaaブログのテンプレート内で使用できる page_name 変数を JavaScript で使用する
- Seesaa ブログのエクスポートを呼び出して全てをバックアップするスクリプト
- Seesaa のテンプレートのタイトル部分 ( 2015年2月現在 ) ☀
- Seesaa ブログの記事一覧の一括編集時に一括設定できるようにする Greasemonkey
- Seesaa : 単一記事ページのナビゲート文字列の調整
- Seesaa : 記事テンプレートの同一カテゴリのリンクのタイトル表示を完全にする