このPostmanユーザーエージェント記事では、以下の内容を学びます:
- User-Agentヘッダーを設定すべき理由
- Postmanのデフォルトユーザーエージェントの形式
- – Postmanリクエストでユーザーエージェントを変更する方法
- Postmanでユーザーエージェントローテーションを実装する方法
さっそく見ていきましょう!
カスタムユーザーエージェント設定が極めて重要な理由
User-Agentヘッダーは、サーバーにHTTPリクエストを送信するクライアントを識別します。通常、クライアントのマシンやリクエストを送信するアプリケーションに関する詳細が含まれます。一般的に、このヘッダーはウェブブラウザ、HTTPクライアント、またはウェブリクエストを実行するソフトウェアによって設定されます。
以下は、ChromeがWebページをリクエストする際に設定するUser-Agent文字列の例です:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
ブラウザのUser-Agentヘッダーは複数の要素で構成されます:
Mozilla/5.0: 当初はMozillaブラウザとの互換性を示すために使用されていましたが、現在ではより広範な互換性のために含まれています。Macintosh; Intel Mac OS X 10_15_7: オペレーティングシステム(Mac OS X 10_15_7)とプラットフォーム(Intel Mac)を指定します。AppleWebKit/537.36: Chrome が使用するレンダリングエンジンを指します。- (
KHTML, like Gecko): KHTMLおよびGeckoレイアウトエンジンとの互換性を示します。 Chrome/127.0.0.0: ブラウザ名とバージョンを示します。Safari/537.36: Safari との互換性を示唆しています。
サーバーは通常、ユーザーエージェントヘッダーを読み取って、受信したリクエストがブラウザからか、それとも別のソフトウェアからか判断します。
ウェブスクレイピングボットが犯しがちな一般的なミスは、デフォルトまたは非ブラウザのUser-Agent文字列を使用することです。これらは、リクエストがボットからのものであると認識できるため、ボット対策技術によるブロックにつながります。詳細については、ウェブスクレイピングのユーザーエージェントに関するガイドをご覧ください。
Postmanのデフォルトユーザーエージェントとは?
Postmanは世界で数百万のユーザーに利用されている、最も人気のあるデスクトップHTTPクライアントの一つです。他のほとんどのHTTPクライアントと同様に、各リクエストに対してデフォルトのUser-Agentヘッダーを自動的に設定します。具体的には、自動生成されるPostmanヘッダーを検証することでこの動作を確認できます:

ご覧の通り、Postmanのデフォルトユーザーエージェントは次の形式に従います:
PostmanRuntime/x.y.z
「PostmanRuntime」はPostmanアプリケーションを識別し、「x.y.z」は現在のバージョン番号です。
上記の文字列が実際にPostmanのデフォルトユーザーエージェントであることを確認するには、httpbin.io/user-agentエンドポイントへのGETリクエストを実行してください。このAPIエンドポイントは受信リクエストのUser-Agentヘッダーを返すため、任意のHTTPクライアントが使用するユーザーエージェントを特定するのに役立ちます。

APIが返すユーザーエージェントが、Postmanのデフォルト設定と一致していることに注目してください。具体的には、Postmanのユーザーエージェントは以下の通りです:
PostmanRuntime/7.41.0
お気づきのように、Postmanが使用するユーザーエージェント文字列は、Chromeなどのブラウザが設定するものと大きく異なります。サーバーがこのようなヘッダーを含むリクエストを受信すると、アンチボットシステムによってブロックされる可能性が高くなります。
これは、ボット対策ソリューションが受信リクエストを監視し、異常なユーザーエージェントなどボット活動を示すパターンを探しているためです。Postmanのデフォルトユーザーエージェントを変更することが極めて重要な理由がここにあります!
Postmanのユーザーエージェントを変更する方法
Postmanでカスタムユーザーエージェントを設定する方法を見ていきましょう。
単一リクエストでのユーザーエージェント設定
Postmanでは、User-Agentヘッダーを手動で指定することで、単一のHTTPリクエストごとにユーザーエージェントを変更できます。
注:Postmanが自動生成したヘッダーは直接変更できません。
「ヘッダー」タブに移動し、新しいUser-Agentヘッダーを追加します:

Postmanは自動生成されたデフォルトのユーザーエージェントを、指定したUser-Agentヘッダーの値で上書きします。HTTPヘッダーは大文字小文字を区別しないため、ヘッダー名をuser-agentや任意の大文字小文字で記述しても問題ありません。
httpbin.io/user-agentエンドポイントへの GET リクエストを実行し、この方法が機能することを確認します:

素晴らしい!APIが返すユーザーエージェントがカスタムUser-Agentヘッダーと一致しています。
コレクション全体にユーザーエージェントを設定する
Postmanコレクションは、ターゲットサーバーやスコープなど共通の特徴を持つAPIリクエストのグループです。特に、コレクション内のエンドポイントは類似した設定を持つ傾向があります。そのためPostmanでは、コレクション内の各リクエストの前後で実行されるカスタムスクリプトの定義をサポートしています。
この仕組みを使って、Postmanコレクション内の全リクエストにカスタムユーザーエージェントを設定する方法を見てみましょう!
Postmanコレクションの作成と操作には、まずアカウントへのログインが必要です。まだお持ちでない場合は、Postmanアカウントを作成してください。
ここでは「HTTPBin」というコレクションがあり、HTTPBinエンドポイントがフォルダで整理されているものと仮定します:

/user-agentエンドポイントへのリクエストを実行すると、デフォルトの Postman ユーザーエージェントが返されます:

これを変更するには、カスタムUser-Agentヘッダーを設定するプリリクエストスクリプトを定義します。プリリクエストスクリプトとは、コレクション内のリクエスト実行前にPostmanが実行するJavaScriptです。
ユーザーエージェント設定用のプリリクエストスクリプトを作成するには、以下の手順に従ってください。
コレクションをダブルクリックし、「スクリプト」タブに移動して「リクエスト前」オプションを選択します:

エディタに以下のコードを貼り付けます:
pm.request.headers.add({
key: "User-Agent",
value: "<your-user-agent>"
});
<your-user-agent>の文字列を、使用したいユーザーエージェントの値に置き換えてください。例:
pm.request.headers.add({
key: "User-Agent",
value: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
});
pm.request.headers.add()は、リクエストに特定のヘッダーを追加するための Postman API の特殊な関数です。
変更を適用するには「保存」ボタンをクリックしてください。
/user-agentエンドポイントへのリクエストを再度実行します:

今回は、スクリプトで設定したユーザーエージェントが返され、デフォルトのPostman設定は使用されません。ミッション完了!
ユーザーエージェントを無効化
User-Agentの自動生成ヘッダーはオプションであり、実際にチェックを外すことができます。チェックを外すと、PostmanはUser-Agentヘッダーを送信しなくなります。
これを確認するため、送信リクエストの全ヘッダーを返すhttpbin.io/headersエンドポイントにリクエストを送信します:

エンドポイントから返されるヘッダーオブジェクトにUser-Agentキーが含まれていないことに注意してください。
注:ほぼ全てのウェブリクエストがこのヘッダーを含んでいるため、ユーザーエージェントヘッダーを無効化することは推奨されません。
Postmanでのユーザーエージェントローテーションの実装
デフォルトのPostmanUser-Agentヘッダーをブラウザのものに置き換えるだけでは、アンチボットシステムを回避するのに不十分な場合があります。特に、同一IPアドレスから同一ヘッダーで多数のリクエストを送信する場合に顕著です。
Postmanでボットとして検出されるリスクを低減するには、リクエストを変化させる必要があります。実用的なアプローチとして、各リクエストで異なるUser-Agentを使用する「ユーザーエージェントローテーション」という手法があります。この方法により、リクエストが自動化としてフラグ付けされる可能性が減少します。
このステップバイステップセクションでは、Postmanでユーザーエージェントローテーションを実装する方法を学びます!
ステップ #1: ユーザーエージェントのリストを取得する
WhatIsMyBrowser.comなどのサイトにアクセスし、有効なユーザーエージェントのリストを作成します:
const userAgents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",
"Mozilla/5.0 (Linux; Android 10; HD1913) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.103 Mobile Safari/537.36 EdgA/127.0.2651.82",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 17_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/127.0.6533.107 Mobile/15E148 Safari/604.1",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 14.6; rv:129.0) Gecko/20100101 Firefox/129.0",
// その他のユーザーエージェント...
];
ヒント: この配列に実世界のユーザーエージェントを多く含めるほど、ローテーションの確率を高められます。
ステップ #2: ユーザーエージェントをランダムに選択
JavaScriptのMathAPIを使用してリストからランダムにユーザーエージェントを選択します:
const userAgent = serAgents[Math.floor(Math.random() * userAgents.length)];
このコード行で実行される処理:
Math.random()は 0 から 1 の間の乱数を生成します。- 生成された数値は、
ユーザーエージェント配列の長さで乗算されます。 Math.floor()は結果を元の数値以下の最大の整数に切り捨てます。結果の数値は 0 からuserAgents.length - 1までのインデックスに対応します。- このインデックスを用いて、ユーザーエージェント配列からランダムな項目にアクセスします。
- ランダムに選択されたユーザーエージェントは変数に代入されます。
ステップ #3: User-Agent ヘッダーの定義
pm.request.headers.add()を使用して、ランダムなuserAgent値を持つUser-Agentヘッダーを定義します:
pm.request.headers.add({
key: "User-Agent",
value: userAgent
});
これでコレクションのHTTPリクエストにはローテーションするUser-Agentヘッダーが付与されます。
ステップ #4: 全てを統合
ユーザーエージェントローテーション用の最終的なPostmanプリリクエストスクリプトは以下の通りです:
// 有効なユーザーエージェントのリスト
const userAgents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.2651.86",
"Mozilla/5.0 (Linux; Android 10; HD1913) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.6533.103 Mobile Safari/537.36 EdgA/127.0.2651.82",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36",
"Mozilla/5.0 (iPhone; CPU iPhone OS 17_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/127.0.6533.107 Mobile/15E148 Safari/604.1",
"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:129.0) Gecko/20100101 Firefox/129.0",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 14.6; rv:129.0) Gecko/20100101 Firefox/129.0",
// その他のユーザーエージェント...
];
// リストからランダムにユーザーエージェントを抽出
const userAgent = userAgents[Math.floor(Math.random() * userAgents.length)];
// ランダムなユーザーエージェントヘッダーを設定
pm.request.headers.add({
key: "User-Agent",
value: userAgent
});
コレクションに追加し、httpbin.io/user-agentエンドポイントをターゲットにして動作を確認してください。リクエストを数回実行すると、ユーザーエージェントが回転しているのがわかります:

素晴らしい、返されるユーザーエージェントが変化し続けています。
これで完了です!Postmanのローテーションするユーザーエージェントロジックの実装方法がわかりました。
関連記事
デフォルトのユーザーエージェント変更はPostman固有ではなく、全てのHTTPクライアントやブラウザ自動化ツールに適用されます。ガイドをご覧ください:
- cURLユーザーエージェントガイド:設定と変更
- Wget ユーザーエージェントガイド:設定と変更
- Python Requests ユーザーエージェントガイド:設定と変更
- Selenium ユーザーエージェントガイド:設定と変更
- Node.js ユーザーエージェントガイド:設定と変更
まとめ
本記事では、User-Agentヘッダーを設定する理由を理解し、Postmanのデフォルトユーザーエージェントがどのようなものかを確認しました。その値を上書きし、基本的なボット対策回避のためのユーザーエージェントローテーションを実装する方法も学びました。ただし、より高度なシステムでは依然としてリクエストがブロックされる可能性があります。IPブロックを防ぐには、Postmanでプロキシを使用する方法もありますが、それだけでは不十分な場合もあります!
より完全な解決策として、次世代スクレイピングAPI「Web Scraper API」をお試しください。Postmanやその他のHTTPクライアントから呼び出せます。IPやユーザーエージェントローテーションなどの組み込み機能により、アンチスクレイピング対策やボット対策の効果的に回避します。ウェブスクレイピングがこれまで以上に簡単になります!
今すぐ登録して無料トライアルを開始しましょう。