Saya menulis skrip dalam Python2.6 dengan menggunakan pyVmomi dan saat menggunakan salah satu metode koneksi:
service_instance = connect.SmartConnect(host=args.ip,
user=args.user,
pwd=args.password)
Saya mendapatkan peringatan berikut:
/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)
Yang menarik adalah bahwa saya tidak menginstal urllib3 dengan pip (tetapi ada di /usr/lib/python2.6/site-packages/requests/packages/urllib3/ ).
Saya sudah mencoba seperti yang disarankan di sini
import urllib3
...
urllib3.disable_warnings()
tapi itu tidak mengubah apa pun.
Jawaban:
Anda dapat menonaktifkan peringatan Python melalui
PYTHONWARNINGS
variabel lingkungan. Dalam hal ini, Anda ingin:Untuk menonaktifkan menggunakan kode Python (
requests >= 2.16.0
):Untuk
requests < 2.16.0
, lihat jawaban asli di bawah ini.Jawaban asli
Alasan melakukan
urllib3.disable_warnings()
tidak berfungsi untuk Anda adalah karena sepertinya Anda menggunakan contoh terpisah urllib3 yang dibatalkan dalam permintaan.Saya mengumpulkan ini berdasarkan jalur di sini:
/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py
Untuk menonaktifkan peringatan di urllib3 permintaan yang dibatalkan, Anda harus mengimpor contoh spesifik modul tersebut:
sumber
PYTHONWARNINGS="ignore:Unverified HTTPS request"
from requests.packages.urllib3.exceptions import InsecureRequestWarning
import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
.Ini adalah jawabannya pada tahun 2017.
urllib3
bukan bagian darirequests
lagisumber
requests >= 2.16.0
requests
Versi saya sudah2.21.0
dan sudah adaurllib3
. Saya mencoba2.16.0
, `2.16.1, and
2.17.0` dan mereka semua memilikinyaurllib3
. Saya mencoba2.4.0
dan yang satu tidak memilikinya. Apakah mereka menambahkannya kembali?Per komentar github ini , seseorang dapat menonaktifkan
urllib3
peringatan permintaan melaluirequests
dalam 1-liner:requests.packages.urllib3.disable_warnings()
Ini akan menekan semua peringatan, bukan hanya
InsecureRequest
(yaitu juga akan menekanInsecurePlatform
dll). Dalam kasus di mana kami hanya ingin barang-barang bekerja, saya menemukan keringkasan berguna.sumber
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)
sepertinya berhasil.Cara yang benar adalah dengan membaca bagian yang relevan pada tautan yang disediakan dan melakukan apa yang dikatakan. Cara khusus untuk
requests
(yang digabungkan dengan salinannya sendiriurllib3
), sesuai Sertifikat CA - Penggunaan Lanjutan - Permintaan 2.8.1 dokumentasi :requests
dikirimkan bersama bundel sertifikat sendiri (tetapi hanya dapat diperbarui bersama dengan modul)requests
v2.4.0
) yangcertifi
paket bukan jika itu terinstalTindakan keamanan verifikasi sertifikat HTTPS bukanlah sesuatu yang harus dibuang dengan hati-hati. Serangan Man-in-the-middle yang mencegah Anda melindungi dari pihak ketiga misalnya menyesap virus atau merusak atau mencuri data Anda.
Yang mana, dengan operasi peretasan global yang didukung pemerintah saat ini seperti Operasi Akses Tersesuaikan dan Great Firewall China yang menargetkan infrastruktur jaringan, lebih memungkinkan daripada yang Anda pikirkan.
sumber
verify=False
.Untuk tidak sabar, cara cepat untuk menonaktifkan python HTTPS peringatan yang tidak diverifikasi:
sumber
$env:PYTHONWARNINGS="ignore:Unverified HTTPS request"
Jawaban yang diterima tidak berfungsi jika beberapa vendor paket memiliki salinan urllib3 sendiri, yang dalam hal ini masih berfungsi:
sumber
Saya memiliki masalah serupa dengan Klien PyVmomi. Dengan Python Versi 2.7.9, saya telah memecahkan masalah ini dengan baris kode berikut:
Perhatikan bahwa, agar ini berfungsi, Anda memerlukan Python 2.7.9 minimal.
sumber
Mengapa tidak menggunakan fungsi asli pyvmomi
SmartConnectNoSSL
. Mereka menambahkan fungsi iniJune 14, 2016
dan menamainyaConnectNoSSL
, satu hari setelah mereka mengubah namanyaSmartConnectNoSSL
, menggunakannya alih-alih dengan memberikan peringatan dengan baris kode yang tidak perlu dalam proyek Anda?sumber
Untuk Python 2.7
Tambahkan variabel lingkungan PYTHONWARNING sebagai kunci dan nilai yang sesuai untuk diabaikan seperti:
os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"
sumber