テスト目的で、DNSを回避して特定のドメイン名のHTTPリクエストを特定のIPアドレスに送信することは可能ですか?
たとえば、サーバーexample.com
上に1.1.1.1
のWebサイトを構築しているとします。
ドメインの実際のDNSレコードを更新しないで(例:レジストラまたはDNSプロバイダー経由)、またはDNSをローカルで操作(例:hostsファイルを更新)せずに、1.1.1.1
がexample.com
のHTTPリクエストにどのように応答するかをテストするには?
CURLを使用すると、カスタムホストヘッダーを使用してサーバーへのリクエストを開始できます。
curl --header "Host:abc.com" xxxx.xxxx.xxxx.xxxx
もちろん、手作業で行うと簡単です。
シェルプロンプト:sleep 1; echo GET /some/resource HTTP/1.1; echo Host: google.com; echo ''; sleep 10)|tee /dev/tty|telnet 127.0.0.1 80
これはhttpポート= 80でlocalhost = 127.0.0.1に接続し、http://google.com/some/resource
を要求します
もちろん、いくつかのプログラムで対応することができます。秘訣は、ブラウザやWebコンポーネントに依存せずにURLを解析し、その情報を使用して接続を確立することです。
もちろん、Hostファイルを使用してこれを行うことができます。実行しているOSに応じて、方法は少し異なります。
Windows
Windows 10、Windows 8、Windows 7、およびWindows Vistaはユーザーアカウント制御(UAC)を使用するため、メモ帳は管理者として実行する必要があります
Windows 10および8の場合
Windows 7およびVistaの場合
Linux
Sudo nano /etc/hosts
Mac OS X 10.0から10.1.5まで
追加するホストエントリごとに、手順6〜12を繰り返します。 「NetInfoマネージャ」メニューから「終了」を選択します。
Mac OS X 10.6から10.12まで
dscacheutil -flushcache
うん。
最初に、IPを直接指定することでリクエストを発行できます。つまり、http://192.168.99.99/web/path
。
2番目に、各HTTPリクエストにはHost:
ヘッダーは、どのドメインに到達したいかをHTTPサーバーに伝えます。これは、複数のドメインが単一のIP上に存在できるようにするために存在します。したがって、リクエストを発行して手動で指定できるブラウザ拡張機能やその他のツールを見つけることができれば、それを行うことができます。
まだ使用していませんが、いくつかのクイック検索で ヘッダーの変更Firefox拡張機能 が表示されます。
サイトがHTTPSであり、証明書と比較するドメイン名がないため、URLにIPを指定すると、バイパスする必要のあるSSL証明書エラーが発生する場合があります。
Google Chromeと呼ばれる拡張機能 DNS Overrider と呼ばれ、ページ上のURLのDNSオーバーライドを有効にすることができます。たとえば、ローカルのhtml自分のコンピューター上のファイルをIFRAME
'da url(http://example.com
)にして、この拡張機能を使用して1.1.1.1
を指すエイリアスを作成できます。
ただし、これはアドレスバーでは機能しないことに注意してください。ページ内のURLでのみ機能します。 IFRAME
要素を使用すると機能するはずです。