4

В целях тестирования возможно ли обойти DNS и отправить HTTP-запрос для определенного доменного имени на определенный IP-адрес?

Например, допустим, вы создаете веб-сайт для example.com на сервере 1.1.1.1 .

Без обновления фактических DNS-записей домена (например, через регистратора или поставщика DNS) или локальной настройки DNS (например, обновление файла hosts), как вы можете проверить, как 1.1.1.1 будет отвечать на HTTP-запрос для example.com?

6 ответов6

2

Конечно, если вы делаете это вручную, это легко.

При подсказке оболочки: 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

Это соединится с localhost = 127.0.0.1 на http port = 80 и запросит http://google.com/some/resource

Вы можете сделать соответствующее в некоторой программе, конечно. Хитрость заключается в том, чтобы не использовать браузер или веб-компонент для анализа URL-адреса и использовать эту информацию для установления соединения.

2

Вы можете использовать CURL, чтобы инициировать запрос к серверу с пользовательским заголовком узла.

curl --header "Host:abc.com" xxxx.xxxx.xxxx.xxxx
0

Конечно, вы можете сделать это, используя файлы хоста. В зависимости от того, какую операционную систему вы используете, это делается немного по-разному:

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. Откройте файл hosts в текстовом редакторе (вы можете использовать любой текстовый редактор), введя следующую строку: sudo nano /etc/hosts
  3. Введите пароль пользователя вашего домена.
  4. Внесите необходимые изменения в файл.
  5. Нажмите Control-x.
  6. На вопрос, хотите ли вы сохранить изменения, ответьте y.

Mac OS X с 10.0 по 10.1.5

  1. Открыть / Приложения / Утилиты / NetInfo Manager.
  2. Чтобы разрешить редактирование базы данных NetInfo, нажмите на замок в левом нижнем углу окна.
  3. Введите пароль пользователя вашего домена и нажмите ОК.
  4. Во втором столбце представления браузера выберите узел с именем машины.
  5. Третий столбец содержит записи для -DHCP-, broadcasthost и localhost. В третьем столбце выберите localhost.
  6. В меню «Правка» выберите «Дублировать». (Самый быстрый способ создать новую запись - дублировать существующую.)
  7. Появится подтверждающее предупреждение.
  8. Нажмите Дублировать.
  9. Появляется новая запись с именем localhost copy, а ее свойства отображаются под окном браузера.
  10. Дважды щелкните значение свойства ip_address и введите IP-адрес другого компьютера.
  11. Дважды щелкните значение свойства name и введите имя хоста, которое вы хотите для другого компьютера.
  12. Нажмите на свойство serve и выберите «Удалить» в меню «Правка». В меню «Файл» выберите «Сохранить».
  13. Появится подтверждающее предупреждение. Нажмите Обновить эту копию.

Повторите шаги с 6 по 12 для каждой дополнительной записи хоста, которую вы хотите добавить. В меню NetInfo Manager выберите «Выйти».

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. Сохраните файл hosts, нажав Control+x и ответив y.
  8. Чтобы изменения вступили в силу, очистите кэш DNS следующей командой: dscacheutil -flushcache
0

Ага.

Во-первых, вы можете отправить запрос, указав IP-адрес напрямую, т.е. http://192.168.99.99/web/path .

Во-вторых, каждый HTTP-запрос включает заголовок Host: который сообщает HTTP-серверу, какой домен он хочет получить. Это существует для того, чтобы несколько доменов могли жить на одном IP. Так что, если вы можете найти расширение для браузера или другой инструмент, который позволяет вам отправить запрос и указать это вручную, вы можете сделать это.

Я не использовал его, но некоторые быстрые поиски обнаружили расширение Modify Headers Firefox, которое вы можете попробовать.


Вы можете получить ошибки сертификата SSL, которые вам нужно обойти, если ваш сайт HTTPS и вы указали IP-адрес для URL, так как у него не будет имени домена для сравнения с сертификатом.

0

Существует расширение Google Chrome, называемое DNS Overrider , которое позволит вам включить DNS-переопределение URL-адреса на странице. Например, если у меня на компьютере был локальный html-файл с адресом IFRAME da url (http://example.com), я мог бы использовать это расширение для создания псевдонима, указывающего на 1.1.1.1 .

Однако имейте в виду, что это не будет работать в вашей адресной строке. Он будет работать только с URL-адресами на странице. Использование элемента IFRAME должно работать.

-1

Нет.

Я не знаком с этим расширением Chrome, но использование IP-адресов вместо разрешающих их записей DNS не является надежным средством тестирования поведения веб-сайта. Например, в спецификации HTTP/1.1 была введена идея заголовка Host: этот виртуальный хостинг разрешен (несколько сайтов имеют один и тот же IP-адрес, и я бы поспорил с последующим взрывом в недорогом хостинге). Я хочу сказать, что если вы используете IP-адрес, а не полное доменное имя, ваш браузер (за исключением расширения Chrome и аналогичных) не будет генерировать такие же заголовки, как это было бы с опубликованной записью DNS, так что это не настоящий тест в реальном Мир.

"Типичный" способ сделать это именно то, что вы пытаетесь избежать: файлы хостов, "разделенный" DNS и т.д.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .