Tôi đang cố chạy một ví dụ từ trang web tài liệu về cloudera trong python. Tôi đang gặp lỗi chứng chỉ ssl
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed [_ssl.c:749]
Nhận chứng chỉ không phải là giải pháp cho vấn đề của tôi. Tôi có thể bỏ qua xác thực chứng chỉ khi truy cập api, tương tự như cách có thể thực hiện thông qua yêu cầu thông thường không?
Ví dụ
import requests
res = requests.get[url, auth=[login, pass], timeout= 1000000, verify= False]
mã của tôi
import cm_client
cm_client.configuration.username = login
cm_client.configuration.password = pass
api_url = api_host + ':' + port + '/api/' + api_version
api_client = cm_client.ApiClient[api_url]
cluster_api_instance = cm_client.ClustersResourceApi[api_client]
Mô-đun yêu cầu trong Python gửi các yêu cầu HTTP bằng một phương thức cụ thể tới một URL được chỉ định. Một đối tượng phản hồi, bao gồm dữ liệu và thông tin như mã hóa, trạng thái, nội dung, v.v. , được trả lại để đáp ứng yêu cầu này. Tuy nhiên, bất cứ khi nào chúng tôi thực hiện các hành động như đăng, nhận, xóa, v.v., chúng tôi sẽ gặp lỗi được gọi là SSLCertVerificationError, còn được gọi là SSL. Chứng chỉ_Verify_Failed chứng chỉ tự ký.
Thí dụ
Import requests requests.post[url = '//data1', data = {'a': 'az'}]
đầu ra
/usr/local/lib/python3.7 /site packages/urllib3/connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: //urllib3.readthedocs.io/en/latest/advanced usage.html#ssl warnings InsecureRequestWarning]
✨ Bạn có thể loại bỏ lỗi này bằng cách tắt kiểm tra chứng chỉ bảo mật
Điều kiện tiên quyết. Bạn phải cài đặt thư viện yêu cầu trên máy của mình. Nếu chưa có, bạn có thể dễ dàng cài đặt bằng pip bằng cách sao chép lệnh sau. pip install requests
Bây giờ, hãy xem chi tiết các phương pháp vô hiệu hóa kiểm tra chứng chỉ bảo mật cho các yêu cầu trong Python
Phương pháp 1. Bằng cách đặt xác minh = Sai
Mô-đun yêu cầu trong Python chứa các phương thức khác nhau như bài đăng, nhận, xóa, yêu cầu, v.v. Chúng tôi có thể gửi yêu cầu HTTP đến các phương thức này vì mỗi phương thức chấp nhận một URL. Bạn có thể đặt tham số
/usr/local/lib/python3.7 /site packages/urllib3/connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: //urllib3.readthedocs.io/en/latest/advanced usage.html#ssl warnings InsecureRequestWarning]0 là
False
để tắt kiểm tra chứng chỉ bảo mật cho các yêu cầu trong PythonKhi thư viện yêu cầu gửi một URL, tập hợp các thao tác sau đây sẽ xảy ra
- Tra cứu DNS chuyển đổi URL thành địa chỉ IP [ví dụ. 312. 245. 123. 21],
- Thư viện yêu cầu gửi yêu cầu đến địa chỉ IP này,
- Máy chủ cố gắng xác thực yêu cầu này,
- Máy chủ trả về mã trạng thái
Tìm hiểu thêm về các yêu cầu trong “Thư viện yêu cầu Python – Yêu cầu HTTP đầu tiên của bạn trong Python. ”
Tiếp cận
- Đầu tiên, nhập mô-đun yêu cầu
- Chúng ta cần gọi phương thức yêu cầu để thực hiện các yêu cầu. Chúng ta cần truyền một chuỗi với phương thức HTTP [“GET”] làm đầu vào đầu tiên và điểm cuối mà chúng ta muốn gửi yêu cầu làm đầu vào thứ hai.
- Để tắt kiểm tra chứng chỉ bảo mật cho các yêu cầu, chúng tôi phải chuyển tham số xác minh với giá trị là Sai.
- Phương thức yêu cầu trả về một đối tượng của lớp Phản hồi, mà chúng tôi lưu trữ trong một biến. Cuối cùng, chúng tôi sẽ in phản hồi từ máy chủ
Mã số
# Importing the requests module import requests # Sending a get http request to the specified url response = requests.request[ "GET", "//finxter.com/", verify = False] # Printing the response print[response]
đầu ra
/usr/lib/python3/dist-packages/urllib3/connectionpool.py:999: InsecureRequestWarning: Unverified HTTPS request is being made to host 'finxter.com'. Adding certificate verification is strongly advised. See: //urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings warnings.warn[
Thảo luận. Bằng cách chuyển tham số
/usr/local/lib/python3.7 /site packages/urllib3/connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: //urllib3.readthedocs.io/en/latest/advanced usage.html#ssl warnings InsecureRequestWarning]0 là
False
cho phương thức yêu cầu, chúng tôi đã quản lý để vô hiệu hóa kiểm tra chứng chỉ bảo mật và làm cho mã không có lỗi. Tuy nhiên, phương pháp này sẽ đưa ra các cảnh báo như hình trên. Để xử lý các cảnh báo trên ta phải dùng phương thức /usr/local/lib/python3.7 /site packages/urllib3/connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: //urllib3.readthedocs.io/en/latest/advanced usage.html#ssl warnings InsecureRequestWarning]4. Cảnh báo bị loại bỏ bằng cách sử dụng phương pháp
/usr/local/lib/python3.7 /site packages/urllib3/connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: //urllib3.readthedocs.io/en/latest/advanced usage.html#ssl warnings InsecureRequestWarning]5 khi tham số
/usr/local/lib/python3.7 /site packages/urllib3/connectionpool.py:851: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: //urllib3.readthedocs.io/en/latest/advanced usage.html#ssl warnings InsecureRequestWarning]0 được đặt thành
False
Hãy xem đoạn mã sau minh họa cách bạn có thể thoát khỏi cảnh báo
# Importing the requests module import requests from urllib3.exceptions import InsecureRequestWarning # Handling the warnings from urllib3 requests.packages.urllib3.disable_warnings[category=InsecureRequestWarning] # Sending a get http request to the specified url response = requests.request[ "GET", "//finxter.com/", verify=False] # Printing the response print[response] # Output:
Ghi chú. Khi chúng tôi chạy mã sau khi vô hiệu hóa kiểm tra chứng chỉ bảo mật cho các yêu cầu, cảnh báo sẽ được gửi đến trình bao cho biết- “xác thực chứng chỉ được khuyến khích mạnh mẽ“. Đó là bởi vì, trong các ứng dụng thời gian thực, các xác thực như vậy phải được thực hiện và do đó, chúng ta chỉ nên làm theo phương pháp mà chúng ta đang xem xét cho các kịch bản thử nghiệm được kiểm soát
Phương pháp 2. Sử dụng phiên. xác minh và Đặt nó là Sai
Chúng tôi có thể tắt kiểm tra chứng chỉ bảo mật cho các yêu cầu trong Python bằng cách đặt Session.verify
thành False
. Chỉ cần khai báo
# Importing the requests module import requests # Sending a get http request to the specified url response = requests.request[ "GET", "//finxter.com/", verify = False] # Printing the response print[response]0 thay vì chuyển
# Importing the requests module import requests # Sending a get http request to the specified url response = requests.request[ "GET", "//finxter.com/", verify = False] # Printing the response print[response]1. Hãy xem đoạn mã sau để chúng ta hiểu rõ hơn về cách giải quyết vấn đề
Giải pháp
# Importing requests import requests # Creating the session object and declaring the verify variable to False session = requests.Session[] session.verify = False # Sending a get http request to the specified url response = requests.get["//finxter.com/"] # Printing the response data print[response] # OUTPUT:
miếng ngon. Nếu bạn cố gắng in toàn bộ phản hồi do máy chủ trả về để xác minh xem kiểm tra chứng chỉ bảo mật đã bị vô hiệu hóa hay chưa thì bạn sẽ nhận được một trang đầy mã HTML theo đúng nghĩa đen. Điều này là không cần thiết và nó cũng có vẻ khó hiểu. Do đó, bạn nên in trạng thái phản hồi để kiểm tra xem các kiểm tra chứng chỉ bảo mật đã bị vô hiệu hóa hay chưa, trừ khi bạn có một yêu cầu khác khi bạn cần toàn bộ văn bản phản hồi. Tôi hy vọng bạn có điểm
Phần kết luận
Trong bài viết này, chúng tôi đã xem xét các phương pháp khác nhau để tắt kiểm tra chứng chỉ bảo mật cho các yêu cầu trong Python. Tôi hy vọng bạn thấy nó hữu ích. Hãy theo dõi và đăng ký để có thêm nhiều bài viết thú vị như vậy
Quét web với BeautifulSoup
Một trong những kỹ năng được tìm kiếm nhiều nhất trên Fiverr và Upwork là tìm kiếm trang web
Không phạm lỗi. trích xuất dữ liệu theo chương trình từ các trang web là một kỹ năng sống quan trọng trong thế giới ngày nay được định hình bởi web và công việc từ xa
Khóa học này hướng dẫn bạn thông tin chi tiết về thư viện BeautifulSoup của Python để tìm kiếm trên web
Shubham Sayon
Tôi là một người tạo nội dung và Blogger Python chuyên nghiệp. Tôi đã xuất bản nhiều bài báo và tạo các khóa học trong một khoảng thời gian. Hiện tại tôi đang làm việc với tư cách là một freelancer toàn thời gian và tôi có kinh nghiệm trong các lĩnh vực như Python, AWS, DevOps và Networking