1. ホーム
  2. python

[解決済み] InsecureRequestWarningを抑制する。Python2.6 で検証されていない HTTPS リクエストが作成されている

2022-03-20 10:28:37

質問

Python2.6でスクリプトを書いています。 pyVmomi という接続メソッドを使用しています。

service_instance = connect.SmartConnect(host=args.ip,
                                        user=args.user,
                                        pwd=args.password)

次のような警告が表示されます。

/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
  InsecureRequestWarning)

面白いのは、pipでurllib3がインストールされていないことです(でも /usr/lib/python2.6/site-packages/requests/packages/urllib3/ ).

提案された通りにやってみました ここで

import urllib3
...
urllib3.disable_warnings()

が、これでは何も変わりません。

解決方法は?

Python の警告は PYTHONWARNINGS 環境変数を使用します。この場合、あなたが望むのは

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

Pythonのコードで無効にする場合( requests >= 2.16.0 ):

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

について requests < 2.16.0 は、以下のオリジナルの回答を参照してください。

オリジナル回答

を行う理由は urllib3.disable_warnings() がうまくいかなかったのは、 リクエストの中に組み込まれた別の urllib3 のインスタンスを使っているように見えるからです。

ここのパスから推測すると /usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py

requests の vendored urllib3 で警告を無効にするには、そのモジュールの特定のインスタンスをインポートする必要があります。

import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)