Можно ли добавить номер порта к имени хоста запросов Python? - PullRequest
0 голосов
/ 14 марта 2019

Я посмотрел некоторые сообщения, в которых предлагается указать номер порта с запросом Python, просто добавьте его после хоста, например, как «google.com:443» (я хочу сделать https запросы на порт 443).

Однако я не уверен, что произойдет, если я использую requests.Session()?

В этом случае я указываю адаптер (код получен из этого поста )

myCiphers = "AES128-SHA" +":"+  "AES256-SHA"

class myAdapter(HTTPAdapter):

  def init_poolmanager(self, *args, **kwargs):
      context = create_urllib3_context(ciphers=myCiphers)
      kwargs['ssl_context'] = context
      return super(myAdapter, self).init_poolmanager(*args, **kwargs)

  def proxy_manager_for(self, *args, **kwargs):
      context = create_urllib3_context(ciphers=defaultCiphers)
      kwargs['ssl_context'] = context
      return super(myAdapter, self).proxy_manager_for(*args, **kwargs)

myhost = 'https://google.com:443'
s = requests.Session()
s.mount(myhost,myAdapter())
response = s.get(myhost,verify=False,timeout=1)

Код работает, но эти библиотеки немного сложны иЯ боюсь, что этот способ указания номера сообщения не является правильным при подключении хоста к адаптеру.

Может ли опытный специалист подтвердить, пожалуйста, что вышеупомянутый метод указания номера порта с HTTP-адаптером, подключенным к запросусеанс, а при оформлении get запрос корректен?

1 Ответ

0 голосов
/ 14 марта 2019

Зарегистрированные (смонтированные) адаптеры HTTP в requests.Session() сопоставляются без учета регистра только с самым длинным префиксом строки . Если вы хотите, чтобы ваш адаптер применялся к URL-адресам, начинающимся со строки https://google.com:443, вы использовали его правильно.

Синтаксис :port после имени хоста в противном случае является правильным способом указания порта для использования. Без :port используется значение по умолчанию для схемы . Для схемы https по умолчанию используется порт 443, поэтому использование :443 в URL здесь избыточно.

Однако при монтировании адаптера нормализация не выполняется, поэтому префикс 'https://google.com:443' не будет совпадать с https://google.com/, даже если оба адреса используют одно имя хоста и порт.

...