スポンサーリンク

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