javaによるHTTP接続(UserAgentの偽装)


ここに書いた
javaによるHTTP接続のサンプルにおける②と③の間で、
 
 con.setRequestParameter("User-Agent" , "iPhone***");
 
というような実装を施すと、
UserAgent情報を上書きしてタイトルにあるようないわゆる「偽装」を行うことができます。
ローカルに自前のWEBサーバ立ち上げて、こいつを呼び出してから目的のサイトにアクセスすれば、
元のブラウザ(やOS)がなんであろうと-たとえばIE11だったりGoogle Chromeだったり-、
「iPhone***」という情報でリクエストしたことになるわけです。
 
====
 
なんで「iPhone***」という文字列にしてるかというと、
シーサーブログのページレイアウト切り替えの判断が
 User-Agentに"iPhone"という文字列が存在するか
だからという程度の理由であってあまり意味はありません。
 
別にシーサーブログに限らず、
PCとスマフォに対応したサイトというのは世の中に数多存在すると思いますが
逆に言うとPCかスマフォか、どっちからのアクセスなのか?を判断して
表示するページレイアウトを切り替えるロジックが必ずどこかに存在するはずで、
その判断には多くの場合、ブラウザやOSの情報が載っているUser-Agentが使われていると思います。
スマフォは個人的にほとんど経験ありませんが
昔ガラケー用のWEBサイトシステム開発する案件があったときに同じやり方を実装しました。
(その場合は「PCから来てたらエラーにする」というもんでしたが)
 
こういうケースは最終的に実機での操作検証が必ず必要になってきますが、
こと単体レベルの動作検証であれば
最悪ここに挙げたようなやり方でUser-Agent偽装して確認するしかありません。
なんとなく「偽装」というと聞こえが悪いですが
開発者の立場からだとそうせざるを得ない(必要な)やり方なわけですね。



ちなみに個別実装するならここで挙げたようなやり方になりますが
FireFoxにはUser-Agent偽装専用のアドオンが存在するのでそれ使ったほうが絶対早いです。
IEにもあんのかな?よく知りませんが。