در یک برنامه پایتون ساده، با استفاده از socket و ssl.wrap_socket یک اتصال امن TLS به example.com روی پورت 443 برقرار کنید، یک درخواست GET برای مسیر '/' ارسال کنید و هدرها و بدنه‌ی پاسخ را چاپ کنید.

4.0 بازدید آخرین ویرایش در 201 روز قبل ساعت 03:34

0.0

برای حل این مسئله، یک سوکت TCP با ماژول socket بسازید و به example.com:443 متصل شوید؛ سپس با استفاده از ssl.wrap_socket سوکت را به یک سوکت امن تبدیل کنید تا handshake TLS انجام شود. پس از اتصال، یک رشته درخواست HTTP مانند "GET / HTTP/1.1\r\nHost: example.com\r\nConnection: close\r\n\r\n" ارسال کنید و شروع به دریافت داده‌ها کنید. دریافت را در حلقه با recv(4096) انجام دهید تا تمام داده‌ها را بگیرید، سپس خروجی را با decode به متن تبدیل کرده و با جدا کردن در اولین '\r\n\r\n' هدرها و بدنه را جدا و چاپ کنید. از "Connection: close" استفاده کنید تا سرور پس از ارسال پاسخ اتصال را ببندد و حلقهٔ دریافت خاتمه یابد؛ از ماژول‌های socket و ssl استفاده کنید و به نکات ساده‌سازی برای سطح مبتدی پایبند باشید.

توسط پژوهشگر در 201 روز قبل ساعت 03:34
دسته بندی ها: Python Python for beginner
reyhaneh در 201 روز قبل ساعت 05:59

نکتهٔ مهم این است که به‌جای استفادهٔ مستقیم از ssl.wrap_socket، از یک SSLContext و context.wrap_socket با server_hostname استفاده کنید تا گواهی به‌درستی بررسی شود. این روش امنیت بیشتری دارد و هم‌چنان برای یک کاربر مبتدی هم قابل فهم است. در دریافت داده‌ها حلقهٔ recv را تا پایان داده‌ها ادامه دهید و وقتی مقدار برگردانده‌شده خالی بود حلقه را تمام کنید تا پایان پاسخ را چاپ کنید. همچنین با استفاده از Connection: close اطمینان حاصل کنید سرور پس از پاسخ، اتصال را می‌بندد.

گزارش

1 پاسخ

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

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