web-dev-qa-db-ja.com

特定のドメイン名のHTTPリクエストを特定のIPアドレスに送信する方法

テスト目的で、DNSを回避して特定のドメイン名のHTTPリクエストを特定のIPアドレスに送信することは可能ですか?

たとえば、サーバーexample.com上に1.1.1.1のWebサイトを構築しているとします。

ドメインの実際のDNSレコードを更新しないで(例:レジストラまたはDNSプロバイダー経由)、またはDNSをローカルで操作(例:hostsファイルを更新)せずに、1.1.1.1example.comのHTTPリクエストにどのように応答するかをテストするには?

8
iglvzx

CURLを使用すると、カスタムホストヘッダーを使用してサーバーへのリクエストを開始できます。

curl --header "Host:abc.com" xxxx.xxxx.xxxx.xxxx
7
user738156

もちろん、手作業で行うと簡単です。

シェルプロンプト: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を解析し、その情報を使用して接続を確立することです。

3
Klaus Zeuge

もちろん、Hostファイルを使用してこれを行うことができます。実行しているOSに応じて、方法は少し異なります。

Windows

Windows 10、Windows 8、Windows 7、およびWindows Vistaはユーザーアカウント制御(UAC)を使用するため、メモ帳は管理者として実行する必要があります

Windows 10および8の場合

  1. Windowsキーを押します。
  2. 検索フィールドに「メモ帳」と入力します。
  3. 検索結果でメモ帳を右クリックし、[管理者として実行]を選択します。
  4. メモ帳から、次のファイルを開きます。c:\ Windows\System32\Drivers\etc\hosts
  5. ファイルに必要な変更を加えます。
  6. [ファイル]> [保存]をクリックして変更を保存します。

Windows 7およびVistaの場合

  1. [スタート]> [すべてのプログラム]> [アクセサリ]をクリックします。
  2. メモ帳を右クリックして、[管理者として実行]を選択します。
  3. Windowsで[続行]をクリックすると、許可UACウィンドウが必要になります。
  4. メモ帳が開いたら、[ファイル]> [開く]をクリックします。
  5. [ファイル名]フィールドに、C:\ Windows\System32\Drivers\etc\hostsと入力します。
  6. 開くをクリックします。
  7. ファイルに必要な変更を加えます。
  8. [ファイル]> [保存]をクリックして変更を保存します。

Linux

  1. 端末ウィンドウを開きます。
  2. 次の行を入力して、ホストファイルをテキストエディターで開きます(任意のテキストエディターを使用できます)。Sudo nano /etc/hosts
  3. ドメインユーザーのパスワードを入力します。
  4. ファイルに必要な変更を加えます。
  5. Control-xを押します。
  6. 変更を保存するかどうかを尋ねられたら、yと答えます。

Mac OS X 10.0から10.1.5まで

  1. / Applications/Utilities/NetInfo Managerを開きます。
  2. NetInfoデータベースの編集を許可するには、ウィンドウの左下隅にある南京錠をクリックします。
  3. ドメインユーザーのパスワードを入力し、[OK]をクリックします。
  4. ブラウザービューの2番目の列で、machinesという名前のノードを選択します。
  5. 3番目の列には、-DHCP-、broadcasthost、およびlocalhostのエントリが含まれています。 3番目の列で、localhostを選択します。
  6. [編集]メニューから[複製]を選択します。 (新しいエントリを作成する最も簡単な方法は、既存のエントリを複製することです。)
  7. 確認の警告が表示されます。
  8. 複製をクリックします。
  9. Localhost copyという新しいエントリが表示され、そのプロパティがブラウザビューの下に表示されます。
  10. Ip_addressプロパティの値をダブルクリックし、他のコンピューターのIPアドレスを入力します。
  11. Nameプロパティの値をダブルクリックし、他のコンピューターに使用するホスト名を入力します。
  12. Servesプロパティをクリックし、[編集]メニューから[削除]を選択します。 「ファイル」メニューから「保存」を選択します。
  13. 確認の警告が表示されます。 [このコピーを更新]をクリックします。

追加するホストエントリごとに、手順6〜12を繰り返します。 「NetInfoマネージャ」メニューから「終了」を選択します。

Mac OS X 10.6から10.12まで

  1. [アプリケーション]> [ユーティリティ]> [ターミナル]を開きます。
  2. 端末ウィンドウで次の行を入力して、hostsファイルを開きます。
  3. Sudo nano/private/etc/hosts
  4. プロンプトが表示されたら、ドメインユーザーのパスワードを入力します。
  5. Hostsファイルを編集します。
  6. このファイルには、コメント(#記号で始まる行)とデフォルトのホスト名マッピング(127.0.0.1-ローカルホストなど)が含まれています。デフォルトのマッピングの後に新しいマッピングを追加します。
  7. Ctrl + xを押してyと応答して、hostsファイルを保存します。
  8. 次のコマンドでDNSキャッシュをフラッシュして、変更を有効にします。dscacheutil -flushcache
0
Nathan Rice

うん。

最初に、IPを直接指定することでリクエストを発行できます。つまり、http://192.168.99.99/web/path

2番目に、各HTTPリクエストにはHost:ヘッダーは、どのドメインに到達したいかをHTTPサーバーに伝えます。これは、複数のドメインが単一のIP上に存在できるようにするために存在します。したがって、リクエストを発行して手動で指定できるブラウザ拡張機能やその他のツールを見つけることができれば、それを行うことができます。

まだ使用していませんが、いくつかのクイック検索で ヘッダーの変更Firefox拡張機能 が表示されます。


サイトがHTTPSであり、証明書と比較するドメイン名がないため、URLにIPを指定すると、バイパスする必要のあるSSL証明書エラーが発生する場合があります。

0
LawrenceC

Google Chromeと呼ばれる拡張機能 DNS Overrider と呼ばれ、ページ上のURLのDNSオーバーライドを有効にすることができます。たとえば、ローカルのhtml自分のコンピューター上のファイルをIFRAME 'da url(http://example.com)にして、この拡張機能を使用して1.1.1.1を指すエイリアスを作成できます。

ただし、これはアドレスバーでは機能しないことに注意してください。ページ内のURLでのみ機能します。 IFRAME要素を使用すると機能するはずです。

0
kobaltz