今、仕事のプログラム書いてます。
3連休もあったのに、すっかり遊び呆けてしまい、追い詰められています。
でも、現実逃避のために、みなさんのブログを見に行っているので、一向に進みません。
というより、現実逃避している時間の方がはるかに長いんですが…
さて。
ブラウザをプログラム中に埋め込みたいんだけど、User-Agentだけは変更しなければならない、という要求があったとしましょう。
以前の記事 のようにHTTP Clientを自製すれば変更可能ですが、HTMLブラウザまではさすがに自作できません。よって、クラスライブラリで用意されているIEのコンポーネントを使うことになります。
WPFを使わないC#だと、System.Windows.Forms.WebBrowser コンポーネントを使ってWebブラウザ部分を作るのが一般的と思われますが、残念ながらプロパティにはUser-Agentが変更できる項目が見当たらないので、簡単には変更できそうもありません。
と、困ったら、ぐーぐる先生! というわけで。
ありました。
へっぽこSE奮闘記 さんのページで発見。
無事に目的が果たせました。ありがとうございます _O_
まず、DLLの宣言。
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
private static extern int UrlMkSetSessionOption(int dwOption, string str, int nLength, int dwReserved);
そして初期化メソッドの中で
const int URLMON_OPTION_USERAGENT = 0x10000001;
string ua = "Strings you'd like to set to the User-Agent";
UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, ua, ua.Length, 0);
これでOK。
元のページには、書き換えだけじゃなくて、User-Agentに任意の文字列を追加する方法も載ってます。
この方法を使ってブラウザを作れば、普段見れない場所も見れるようになるはず。例えば、携帯専用サイトはUser-Agentで見分けていることが多いらしいので、この方法を使ってブラウザを作ればPCからも見ることができるようになると思います。
問題は、携帯電話のUser-Agentが何か、、、ですね。
こんな記事書いてる場合じゃねぇーー。