urllib2 - получить ресурс, если вы уже знаете IP - PullRequest
0 голосов
/ 25 марта 2012

В моем скрипте Python я загружаю страницы, но я уже знаю IP-адрес сервера. Так что я мог бы избавить вас от хлопот, связанных с поиском DNS, если я смогу как-то передать IP и имя хоста в запросе.

Итак, если я позвоню http://111.111.111.111/ а затем передать имя хоста в атрибуте HOST, я должен быть в порядке. Однако проблема, с которой я сталкиваюсь, связана со стороной сервера: если пользователь просматривает входящий запрос (т. Е. REQUEST_URI), то он увидит, что я пошел за IP.

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 25 марта 2012

Вы можете добавить сопоставление IP-адресов в файл hosts.

0 голосов
/ 25 марта 2012

Во-первых, основная идея подозрительна. Ну, вы можете «знать» IP сервера, но это знание временно, и время его корректности контролируется DNS TTL. Для стабильной конфигурации администратор сервера может предоставить DNS-запись с длинным TTL (например, несколько дней), поэтому DNS-запрос всегда будет выполняться с использованием ближайшего решателя кэширования или nscd. Для изменения конфигурации TTL может быть уменьшен до нескольких секунд или даже до 0 (означает отсутствие кэширования), и это может быть полезно для некоторых видов балансировщиков нагрузки. Вы пытаетесь организовать собственный кэш распознавателя, который не знает TTL, и это может привести к запросам к неработающим или неправильным серверам с неверным содержимым. Поэтому я предлагаю не делать этого.

Если вы абсолютно уверены, что должны сделать это, и вы не можете использовать внешние инструменты в качестве пользовательского преобразователя или даже / etc / hosts, попробуйте установить пользовательский «opener» (см. Функцию urllib2.build_opener () в документации), который переопределяет Поиск DNS. Однако я никогда не делал этого, знания только о документации, прочитанной только сейчас.

...