Java | Web 基礎・HTTP・REST:HTTP 詳細 - User-Agent

Java Java
スポンサーリンク

User-Agent を一言でいうと

User-Agent は
「このリクエストを送っている“クライアントの正体”をサーバーに伝えるヘッダー」
です。

ブラウザなのか、スマホアプリなのか、Java のプログラムなのか。
Chrome なのか、Safari なのか、あるいは bot なのか。
その“名札”の役割を果たすのが User-Agent です。

サーバーはこの情報を使って、
「どんな相手に向けてレスポンスを返すべきか」を判断することがあります。


User-Agent の基本構造と実例

ブラウザが送る User-Agent の例

Chrome が送る User-Agent はこんな感じです。

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
 AppleWebKit/537.36 (KHTML, like Gecko)
 Chrome/123.0.0.0 Safari/537.36

長くて複雑ですが、
「OS は Windows」「ブラウザは Chrome」
といった情報が含まれています。

Safari ならこうです。

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 14_3)
 AppleWebKit/605.1.15 (KHTML, like Gecko)
 Version/17.3 Safari/605.1.15

スマホアプリや bot も User-Agent を持っています。


User-Agent の役割その1:クライアントの種類をサーバーに伝える

ブラウザかアプリかで返す内容を変えられる

サーバーは User-Agent を見て、
「この相手はどんなクライアントか」を判断できます。

例えば、
スマホブラウザならスマホ向けページを返す
古いブラウザなら軽量版ページを返す
bot ならクロール用の軽い HTML を返す

といった対応が可能です。

Java の Web アプリでも、
User-Agent を見てレスポンスを変えることがあります。


User-Agent の役割その2:ログ解析やアクセス分析に使われる

「どんな端末からアクセスされているか」を知るための情報

Web サーバーのアクセスログには、
User-Agent が必ず記録されます。

これにより、
アクセスの何割がスマホか
どのブラウザが多いか
bot がどれくらい来ているか

といった分析ができます。

Java のバックエンドでも、
ログに User-Agent を残しておくことで、
「特定のブラウザだけで不具合が起きている」
といった調査がしやすくなります。


User-Agent の役割その3:bot やクローラの識別

Googlebot などは専用の User-Agent を持つ

検索エンジンのクローラは、
自分が bot であることを User-Agent で宣言します。

User-Agent: Googlebot/2.1 (+http://www.google.com/bot.html)

サーバー側はこれを見て、
クロール用の軽いページを返したり、
アクセス制御をしたりできます。


Java(Spring)で User-Agent を扱う方法

リクエストヘッダーとして受け取る

Spring では、User-Agent を簡単に取得できます。

@GetMapping("/info")
public String info(@RequestHeader("User-Agent") String userAgent) {
    return "Your User-Agent is: " + userAgent;
}
Java

これで、
ブラウザやアプリが送ってきた User-Agent をそのまま取得できます。

外部 API を叩くときに自分で User-Agent を設定する

Java で外部 API を呼ぶとき、
User-Agent を設定しておくと、
相手側のログに「どのシステムから来たか」が分かりやすくなります。

webClient.get()
        .uri("https://api.example.com/data")
        .header("User-Agent", "MyJavaApp/1.0")
        .retrieve()
        .bodyToMono(String.class);
Java

これで、
User-Agent: MyJavaApp/1.0
というヘッダーが送られます。


User-Agent で気をつけたいポイント

1. 信頼しすぎてはいけない

User-Agent は「名札」ですが、
偽装が簡単 です。

悪意ある bot が Chrome を名乗ることもできます。
だから、User-Agent を完全に信用して
「Chrome なら OK」
のような判断をするのは危険です。

2. セキュリティ目的で使わない

User-Agent はあくまで“参考情報”。
認証や権限チェックに使うべきではありません。

3. 長くて複雑だが、全部理解する必要はない

User-Agent は歴史的な理由で複雑になっています。
初心者が全部理解する必要はありません。

「ブラウザ名」「OS」「アプリ名」などが含まれている
という程度の理解で十分です。


初心者向けまとめ:User-Agent を自分の言葉で説明するなら

あなたの言葉で整理すると、こうなります。

User-Agent は、
「このリクエストを送っているクライアント(ブラウザ・アプリ・bot)の種類をサーバーに伝えるヘッダー」。

サーバーはこれを使って、
スマホ向けページを返したり、
古いブラウザ向けに調整したり、
bot を識別したりできる。

Java(Spring)では @RequestHeader("User-Agent") で取得でき、
外部 API を呼ぶときは自分で User-Agent を設定することもできる。

もしよければ、
あなたが今使っているブラウザの User-Agent を
実際に取得してみるコード例も一緒に作れるよ。

タイトルとURLをコピーしました