Python использует глаголы CONNECT http, манипулирование заголовками и TLS / SSL - PullRequest
0 голосов
/ 17 мая 2018

Как в Python использовать глагол CONNECT http и манипулировать заголовком http, а также TLS / SSL?

К сожалению requests/urllib не поддерживает это .

Попытка избежать этого вручную с помощью openssl + sockets.

1 Ответ

0 голосов
/ 17 мая 2018

Вы читаете сообщение в блоге 2013 года, в котором содержится ссылка на urllib3 проблему Github , которая была исправлена ​​примерно через месяц , и поддержка была добавлена ​​вrequests вскоре после этого и присутствует во всех версиях 2.x.

Итак, вы ищете обходной путь для проблемы, которая была решена почти 5 лет назад.

Чтобы использовать HTTPS-прокси, вы просто настраиваете его так же, как HTTP-прокси :

proxies = {
    'https': 'http://10.10.1.10:12345',
}
page = requests.get('https://example.org', proxies=proxies)

Если вы, например, запускаете nc -kl 1080 10.10.1.10вы увидите это:

CONNECT example.org:443 HTTP/1.0

И если вы запустите там действующий HTTPS-прокси, он будет просто работать.


Вы также утверждаете, что urllib необрабатывать HTTPS прокси, но он всегда имеет.Настроить его немного сложнее, но все же не так сложно:

ph = urllib.request.ProxyHandler({'https': '192.168.42.100:1080'})
op = urllib.request.build_opener(p)
page = op.open('https://example.com')

… или, если вы хотите использовать его для всего, а не для одного запроса:

ph = urllib.request.ProxyHandler({'https': '192.168.42.100:1080'})
urllib.request.install_opener(urllib.request.build_opener(p))
page = urllib.request.open('https://example.com')

И, конечно, если у вас есть настройки прокси по умолчанию, настроенные соответствующим образом для вашей платформы, вам даже не нужно делать это много;и requests, и urllib будут просто использовать их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...