WSHやUWSCのバッチでIEを自動操作する時,ユーザーエージェント改変でiPhoneからのアクセスに偽装するサンプルコード (UA設定で,スマホ向けのWebページをブラウザ上に表示)
バッチで,ブラウザのUAを改変し,別のブラウザ向けのページを表示させるサンプル。
たとえばIE上で,iPhone向けのWebページを表示させたい。
自作プログラムからブラウザを自動操作する際に,スマホ用のページを表示させたいのだ。
バッチで,COM経由でIEを操作しているのであれば
ユーザーエージェントを書き換えればよい。
そのためには,ie.Navigate の第五引数に,独自のリクエストヘッダを設定すればよい。
実際に動作するサンプルコードを下記に掲載。
サンプルコード(WSH/JScript)
hoge.jsとして保存してダブルクリックで実行。
// ----- 設定項目 ----- // リクエスト送信対象のURL var target_url = "http://q.hatena.ne.jp/1448212865"; // リクエストヘッダのカスタマイズ(ユーザエージェントを改ざん) var request_header = "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13A404 Safari/601.1"; // ----- リクエスト発行 ----- // IEを起動 var ie = WScript.CreateObject("InternetExplorer.Application") ie.Visible = true; // POSTリクエストを発行 var optional_flags = null; var target_frame_name = null; var byte_post_parameters = null; ie.Navigate( target_url, optional_flags, target_frame_name, byte_post_parameters, request_header );
実行すると,iPhone向けのはてなのページが表示される。
参考:
バッチで,リファラを改ざんし,ユーザエージェントを改ざんし,POSTリクエストを自動発行しよう (HTTPリクエストヘッダを自由に生成)
http://language-and-engineering.hatenablog.jp/entry/20100914/p1#%EF%BC%92IE%E...
- IEを使う方法なら, リファラ改ざん, UA改ざん, POSTリクエスト自動発行... のいずれも可能。
iOS 9 Safari のユーザーエージェント - iPhone, iPad, iPod... « をぶろぐ
http://tetsuwo.tumblr.com/post/129810...
- iOS バージョン 9 系のユーザーエージェント一覧です。
サンプルコード(UWSC版)
上記と同じことを,UWSCマクロで実装してみよう。
WSHのコードをUWSCに置き換えるだけだ。
hoge.uws
// // UWSCマクロでIEを自動操作するサンプルコード // (ユーザエージェントの書き換え) // // ----- 設定項目 ----- // リクエスト送信対象のURL target_url = "http://q.hatena.ne.jp/1448212865"; // リクエストヘッダのカスタマイズ(ユーザエージェントを改ざん) request_header = "User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 9_0_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13A404 Safari/601.1"; // ----- 操作の開始 ----- // IEを起動 ie = createOLEobj("InternetExplorer.Application") // 起動中のIEを見えるように ie.visible = True // 位置調整(左上) window_id = HNDtoID( ie.hwnd ) ACW( window_id, 0, 0 ) // ブラウザの画面を最大化 CtrlWin( window_id, MAX ) // URLにジャンプ optional_flags = null target_frame_name = null byte_post_parameters = null ie.Navigate( _ target_url, _ optional_flags, _ target_frame_name, _ byte_post_parameters, _ request_header _ ) ie_wait( ie ) // 一応,開発者ツールを開いてみる kbd( VK_F12 ) // このあと,TABキーでチマチマと操作することもできる // ----- ルーチン ----- // IEがビジー状態の間待ちます procedure ie_wait( ie ) repeat sleep( 0.1 ) until ( ! ie.busy ) and ( ie.readystate = 4 ) sleep( 0.2 ) fend
上記をuwsc.exeにドラッグ・ドロップで放り込むと,WSHと同じように処理され,スマホ向けのページが表示される。
いちおう処理の最後の部分で,SendKeysに相当するキーボード操作により,F12開発者ツールを開いている。
TABキーの押下を自動化すれば,ここから先 開発者ツールを自動操作することも不可能ではない。
だが,できればその路線は避けたほうが良いだろう…。DOM操作ではないから。
参考:
UWSCのマクロで,IEを起動して自動操作するサンプルコード
http://language-and-engineering.hatenablog.jp/entry/20140204/controlIeBrowser...
キーボード入力をさせる方法 | UWSCサンプル&画像認識テクニック
http://uwsc.wpblog.jp/?p=114
- KBD(VK_A) // Aのキーをクリック
補足
この記事は,下記の質問への回答のために執筆いたしました。
UWSCというWindows自動操作マクロがあるのですが、IE11の開発者…
http://q.hatena.ne.jp/1448212865