我使用如何禁用
import requests
requests.post(url='https://foo.com', data={'bar':'baz'})
在Python安全證書檢查請求,但我得到一個request.exceptions.SSLError。 該網站有一個過期的證書,但我沒有發送敏感數據,所以對我無關緊要。 我會想象有一個像'verifiy = False'這樣的我可以使用的參數,但我似乎無法找到它。
我使用如何禁用
import requests
requests.post(url='https://foo.com', data={'bar':'baz'})
在Python安全證書檢查請求,但我得到一個request.exceptions.SSLError。 該網站有一個過期的證書,但我沒有發送敏感數據,所以對我無關緊要。 我會想象有一個像'verifiy = False'這樣的我可以使用的參數,但我似乎無法找到它。
請求也可以忽略驗證SSL certficate如果你設置
verify
爲False。>>> requests.get('https://kennethreitz.com', verify=False) <Response [200]>
如果您使用的是第三方模塊,並要禁用的檢查,這裏有一個上下文管理器猴子補丁requests
並改變它,以便verify=False
是默認和取消警告。
import warnings
import requests
import contextlib
try:
from functools import partialmethod
except ImportError:
# Python 2 fallback: https://gist.github.com/carymrobbins/8940382
from functools import partial
class partialmethod(partial):
def __get__(self, instance, owner):
if instance is None:
return self
return partial(self.func, instance, *(self.args or()), **(self.keywords or {}))
@contextlib.contextmanager
def no_ssl_verification():
old_request = requests.Session.request
requests.Session.request = partialmethod(old_request, verify=False)
warnings.filterwarnings('ignore', 'Unverified HTTPS request')
yield
warnings.resetwarnings()
requests.Session.request = old_request
以及如何使用它的一個例子:
with no_ssl_verification():
requests.get('https://93.184.216.3/')
print('It works')
try:
requests.get('https://93.184.216.3/')
except requests.exceptions.SSLError:
print('It broke')
使用requests.packages.urllib3.disable_warnings()。
import requests
requests.packages.urllib3.disable_warnings()
requests.post(url='https://foo.com', data={'bar':'baz'})
當你想擺脫「未經驗證的HTTPS請求正在進行」等警告時,你的回答是有用的。 但是''verify = False''無論如何都必須存在。 TNX。 – Lufa 2016-01-27 11:29:10
並避免隱藏所有警告:'從urllib3.exceptions導入InsecureRequestWarning'然後'requests.packages.urllib3.disable_warnings(category = InsecureRequestWarning)' – 2017-10-04 13:38:43
如果您要發送準確發佈與驗證= False選項要求,最快的方法是使用下面的代碼:
import requests
requests.api.request('post', url, data={'bar':'baz'}, json=None, verify=False)
謝謝,這個工作,如果你有幾個請求自己的代碼中調用,但想象一下,我想在第三部分使用請求的庫中禁用此功能,...這將不可能像這樣修復第三方庫。 – sorin 2013-12-17 18:49:42
@sorin:只是猴子補丁'請求'並且'verify'默認爲'False'。 – Blender 2013-12-18 01:16:08
如何抑制仍然打印的嚴重惡意警告消息? – Michael 2015-01-15 18:33:49