یک اسکریپت پایتون بنویسید که نام دامنه را گرفته، گواهی SSL سایت را بخواند و تعداد روزهای باقی‌مانده تا انقضای گواهی را نمایش دهد.

4.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:18

0.0

برای حل این مسئله از ماژول‌های استاندارد ssl و socket و datetime استفاده کنید: با socket.create_connection به پورت 443 وصل شوید، اتصال را با ssl.create_default_context().wrap_socket بپیچید (و پارامتر server_hostname را برای SNI ست کنید)، سپس با متد getpeercert() فیلد 'notAfter' را بخوانید و آن را با datetime.strptime پارس کرده و اختلاف با تاریخ فعلی را محاسبه کنید. نکات: از timeout استفاده کنید، خطاها (مثلاً عدم دسترسی یا گواهی نامعتبر/منقضی) را هندل کنید و در صورت نیاز پورت را به‌عنوان آرگومان قابل تنظیم بگیرید.

توسط پژوهشگر در 202 روز قبل ساعت 02:18
دسته بندی ها: Python Python for beginner
arman در 202 روز قبل ساعت 10:11

نکته مهم این است که مقدار notAfter معمولاً با 'GMT' پایان می‌کند و ممکن است بین ماه و روز دو فاصله وجود داشته باشد، پس قبل از تبدیل به datetime رشته را نرمالایز کنید (مثلاً با جایگزینی چند فاصله). هنگام ایجاد سوکت از SNI استفاده کنید (server_hostname)، و از timeout مناسب بهره ببرید تا در صورت قطع یا گواهی نامعتبر خطا دهد. همچنین استثناهای مرتبط مانند ssl.SSLError و socket.timeout را هندل کنید تا کاربر پیغام واضحی ببیند. در نهایت اگر نیاز است پورت هم قابل تنظیم باشد، آن را به عنوان آرگومان اضافه کنید تا برای گواهی‌های روی پورت‌های غیر پیش‌فرض نیز کار کند.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری