IP-адрес, указанный в Python CURL - PullRequest
       8

IP-адрес, указанный в Python CURL

1 голос
/ 26 февраля 2012

Я хочу сделать GET-запрос для получения содержимого веб-страницы или веб-службы. Я хочу отправить конкретные заголовки для этого запроса И Я хочу установить IP-адрес, с которого будет отправлен этот запрос. (Сервер, на котором выполняется этот код, имеет несколько доступных IP-адресов).

Как мне добиться этого с помощью Python и его библиотек?

Ответы [ 2 ]

1 голос
/ 26 февраля 2012

Я проверил urllib2, и он не установит адрес источника (по крайней мере, в Python 2.7). Базовая библиотека - httplib, которая имеет эту функцию, так что вам может повезти, если вы воспользуетесь ею напрямую.

Из документации httplib :

class httplib.HTTPConnection(host[, port[, strict[, timeout[, source_address]]]])

Необязательный параметр source_address может быть кортежем (хоста, порта) для использования в качестве адреса источника, с которого устанавливается HTTP-соединение.

Вы даже можете убедить urllib2 использовать эту функцию, создав собственный класс HTTPHandler. Вам нужно будет продублировать некоторый код из urllib2.py, потому что AbstractHTTPHandler использует более простую версию этого вызова:

class AbstractHTTPHandler(BaseHandler):
    # ...
    def do_open(self, http_class, req):
        # ...
        h = http_class(host, timeout=req.timeout) # will parse host:port

Где http_class равно httplib.HTTPConnection для HTTP-соединений.

Вероятно, это будет работать вместо этого, если исправление urllib2.py (или его дублирование и переименование) является приемлемым решением:

        h = http_class(host, timeout=req.timeout, source_address=(req.origin_req_host,0))
1 голос
/ 26 февраля 2012

Для выполнения http-запросов вам доступно множество опций.Я даже не думаю, что на самом деле существует общепринятое «лучшее».Вы можете использовать любой из них:

  1. urllib2: http://docs.python.org/library/urllib2.html
  2. запросы: http://docs.python -requests.org / ru / v0.10.4 / index.html
  3. механизация: http://wwwsearch.sourceforge.net/mechanize/

Этот список не является исчерпывающим.Прочитайте документы и сделайте свой выбор.Некоторые из них более низкого уровня, а некоторые предлагают богатые функции, подобные браузеру.Все они позволяют вам устанавливать заголовки перед выполнением запроса.

...