بانک آموزشی

بانک آموزشی

نرم افزار - سخت افزار - طراحی - برنامه نویسی _ ویروس شناسی ...
بانک آموزشی

بانک آموزشی

نرم افزار - سخت افزار - طراحی - برنامه نویسی _ ویروس شناسی ...

چگونه یک رمز عبور قوی و ایمن ایجاد کنیم؟


در دنیای دیجیتال امروز، حفظ امنیت اطلاعات شخصی و حساس مانند شبکه های اجتماعی، ایمیل‌ها، حساب‌های بانکی و دیگر موارد یک چالش بسیار مهم است. یکی از عوامل اساسی در ایجاد پویایی امنیتی، استفاده از یک پسورد قوی و مقاوم در برابر هکرها و حملات سایبری است. رمز عبور، به عنوان دروازه‌ای مهم، اطلاعات شما را از دسترسی غیرمجاز محافظت می‌کند. اما، متأسفانه بسیاری از افراد هنوز به ویژگی‌های یک رمز عبور قوی توجه کمی دارند و از رمزهای ضعیف یا قابل پیش‌بینی استفاده می‌کنند.

پسوردهای ضعیف می‌توانند امنیت افراد را به خطر بیندازند. حملاتی نظیر بروت فورس، حدس زدن، حملات دیکشنری و موارد دیگر که مرتبط به حملات پسوردها هستند، ممکن است اطلاعات حساس شما را در معرض خطر قرار دهند. در این مقاله این موضوع را بررسی می کنیم که یک رمز عبور قوی دارای چه مشخصه هایی است و چگونه یک رمز عبور قوی بسازیم؟

قبل از شروع، به نظر شما رمزی مانند “Google is My Favorite WEBSite:)” قوی تر است یا ” J4fS<2″ ؟ به خواندن مقاله ادامه دهید تا جواب آن را پیدا کنید.

یک پسورد چگونه هک می شود؟

فرآیند هک پسورد بسیار ساده است و 5 راه اثبات شده برای انجام این کار وجود دارد عبارتند از:

  1. پرسیدن: رایج ترین راه برای دسترسی به رمز عبور شخصی، صرفاً درخواست آن است (اغلب در رابطه با چیز دیگری). مردم اغلب رمز عبور خود را به همکاران، دوستان و خانواده می گویند. داشتن یک رمز عبور پیچیده این واقعیت را تغییر نمی دهد. 
  2. حدس زدن: این دومین روش رایج برای دسترسی به حساب یک شخص است. به نظر می رسد که اکثر مردم پسوردی را انتخاب می کنند که به راحتی به خاطر بسپارند و ساده ترین آن ها رمزهایی هستند که به آن ها مربوط می شوند. گذرواژه‌هایی مانند نام خانوادگی، نام همسر، تاریخ تولد، گل مورد علاقه‌تان و غیره همگی بسیار رایج هستند.
  3. حمله بروت فورس (Brute force attack): انجام این حملات با وجود ابزارهای موجود این کار بسیار ساده است. یک هکر به سادگی سعی می کند با استفاده از پسوردهای مختلف در یک زمان وارد سیستم شود. اگر رمز عبور شما “sun” باشد، او سعی خواهد کرد با استفاده از “aaa, aab, aac, aad … sul, sum, sun (MATCH)” وارد سیستم شود. تنها چیزی که جلوی حمله brute force را می گیرد پیچیدگی بالاتر و پسورد طولانی تر است.
  4. حمله کلمات رایج (Common word attacks): شکل ساده ای از حملات brute-force است که در آن هکر سعی می کند با استفاده از لیستی از کلمات رایج وارد سیستم شود. هکر به جای اینکه ترکیب متفاوتی از حروف را امتحان کند، کلمات مختلفی را امتحان می کند. “sum, summer, summit, sump, sun (MATCH)”
  5. حملات دیکشنری (Dictionary attacks): مشابه حمله کلمات رایج است و تنها تفاوت این است که هکر اکنون از فرهنگ لغت کلمات استفاده می کند (حدود 500000 کلمه در زبان انگلیسی وجود دارد).

یک رمز عبور چگونه هک میشود؟

چه زمانی یک رمز عبور امن است؟

شما نمی توانید از رمز خود در برابر روش های هک “پرسیدن” که زیر مجموعه مهندسی اجتماعی میشود و “حدس زدن” محافظت کنید، اما می توانید از خود در برابر انواع دیگر حملات محافظت کنید. یک هکر معمولا یک اسکریپت خودکار یا برنامه ای ایجاد می کند که کار را برای او انجام می دهد. او قرار نیست به صورت دستی 500000 کلمه مختلف را امتحان کند تا ببیند آیا یکی از آن ها رمز عبور شماست یا خیر.

سپس معیار امنیت باید این باشد که “برنامه چند درخواست پسورد می تواند داشته باشد (به عنوان مثال در هر ثانیه). تعداد متفاوت است، اما اکثر اپلیکیشن های وب قادر به رسیدگی به بیش از 100 درخواست ورود به سیستم در ثانیه نیستند.

این بدان معناست که برای هک کردن یک رمز عبور ساده مانند “sun” که میتوانید شامل 17576 ترکیب کاراکتر باشد، زمان زیر نیاز است:

  • بروت فورس: 3 دقیقه
  • کلمات رایج: 3 دقیقه
  • دیکشنری: 1 ساعت و 20 دقیقه

البته این یک پسورد بسیار ناامن است، اما چقدر زمان برای ایمن شدن یک پسورد کافی است؟

  • رمز عبوری که در عرض 1 دقیقه هک شود بسیار خطرناک است.
  • 10 دقیقه – هنوز خیلی خطرناک است.
  • 1 ساعت – هنوز به اندازه کافی خوب نیست.
  • 1 روز – بد نیست. احتمال اینکه شخصی برنامه ای داشته باشد که برای هک حساب شما برای یک روز کامل اجرا شود بسیار کم است. با این حال، باز هم ممکن است.
  • 1 ماه – این کاری است که فقط یک هکر استخدام شده انجام می دهد.
  • 1 سال – اکنون از ریسک عملی به ریسک تئوریک می رسیم. اگر ناسا یا سی آی اِی هستید این مدت زمان هنوز هم ناکافی است. اما برای بقیه ما، خب، شما نه چنین دشمنانی دارید و نه اطلاعات شما آنقدر جالب است.
  • 10 سال – اکنون ما کاملاً نظری صحبت می کنیم.
  • یک عمر یا 100 سال – این در واقع حداکثر سن مردم است. چه کسی اهمیت می دهد که پسورد آن ها پس از مرگ هک شود؟ با این حال، خوب است بدانید که شما باید از پسوردی استفاده ‌کنید که شکستن آن 100 سال طول بکشد.

چگونه یک رمز عبور قوی و ایمن ایجاد کنیم؟

هکرها می‌دانند که اکثر مردم رمزهایی را ایجاد می‌کنند که به راحتی قابل یادآوری هستند و اغلب از همان رمز عبور در چندین حساب کاربری استفاده می‌کنند. به همین دلیل، تنها چیزی که لازم است هک کردن یک حساب کاربری برای دسترسی سریع به بقیه آنهاست. چند دقیقه وقت بگذارید و به موارد زیر برای ساخت یک پسورد بسیار قوی توجه کنید و برای هر حسابی که از دستورالعمل‌های زیر پیروی نمی‌کنند رمز عبور جدیدی ایجاد کنید.

1- از اعداد یا حروف متوالی استفاده نکنید

به عنوان مثال از 1234، qwerty، jklm، 6789 و غیره استفاده نکنید.

2- اطلاعات شخصی خود را در رمز عبور خود وارد نکنید

پسورد نباید شامل هیچ یک از اطلاعات شخصی کاربر مانند نام، آدرس، شماره تلفن یا تاریخ تولد و به طور کلی موارد مرتبط با او باشد. به یاد داشته باشید که هکرها می توانند به راحتی این اطلاعات را با جست و جو در شبکه های اجتماعی شما پیدا کنند.

3- از ترکیب حداقل 16 حرف کوچک و بزرگ، عدد و نماد استفاده کنید

هرچه رمز عبور شما طولانی تر باشد و از تنوع کاراکترهای بیشتری استفاده کند، حدس زدن آن سخت تر است. مثلا SL@gd$T2h7H0j!AH از ترکیب منحصر به فردی از حروف بزرگ و کوچک، اعداد و نمادها استفاده می کند.

4- کلمات غیر مرتبط مختلف را در رمز عبور یا عبارت عبور خود ترکیب کنید

این عمل، حدس زدن پسورد شما را برای هکرها دشوار می کند. از عبارات آهنگ ها، فیلم ها یا برنامه های تلویزیونی محبوب استفاده نکنید. از سه یا چهار کلمه طولانی تر برای ایجاد عبارت عبور خود استفاده کنید. به عنوان مثال، 9MaNdARARDABilzendegiMikonam.

5- از اسامی یا کلمات موجود در فرهنگ لغت استفاده نکنید

حروف را با اعداد یا نمادها جایگزین کنید تا حدس زدن پسورد دشوار شود. یا عمداً از اشتباهات املایی در رمز عبور یا عبارت عبور استفاده کنید. به عنوان مثال، P8tty0G#5dn برای “patio garden”.

6- از یک مدیریت رمز عبور برای ذخیره رمزهای عبور خود استفاده کنید

رمز عبور خود را در یک فایل در کامپیوتر خود ذخیره نکنید. اطمینان حاصل کنید که از ابزار مدیریت رمز عبور (password manager) برای ذخیره همه رمزهای عبور حرفه ای و شخصی استفاده می کنید.

7- از رمز عبور خود مجدد استفاده نکنید

هر دستگاه، برنامه، وب سایت و نرم افزاری به پسورد یا پین منحصر به فرد و قوی نیاز دارد. به یاد داشته باشید، اگر یک هکر یکی از رمزهای عبور شما را حدس بزند، از آن برای هک کردن تمام حساب های شخصی شما استفاده می کند.

به یاد داشته باشید که هرگز پسورد خود را با کسی به اشتراک نگذارید. این شامل همکاران شما، تیم پشتیبانی، اعضای خانواده و دوستان می شود.

همچنین، در مورد ایمیل‌های فیشینگ  و تماس‌هایی که اطلاعات رمز عبور شما را می‌خواهند آگاه باشید. از پاسخ دادن یا ارائه اطلاعات شخصی، از جمله رمز عبور، تاریخ تولد، آدرس، یا جزئیات کارت اعتباری خودداری کنید.

چگونه یک رمز عبور قوی و ایمن ایجاد کنیم؟

اطلاعاتی که هرگز نباید در رمز عبور خود قرار دهید

هنگام به روز رسانی و ایجاد رمزهای عبور جدید، اطلاعات زیر را وارد نکنید:

  • نام حیوان خانگی شما
  • تاریخ تولد شما یا اعضای خانواده
  • هر کلمه ای که مربوط به سرگرمی، شغل یا علایق شما باشد.
  • بخشی از آدرس منزل شما، از جمله شهر/شهرک، خیابان، شماره خانه/آپارتمان، یا کشور.
  • نام شما یا نام یکی از اعضای خانواده

هکرها در مورد قربانیان خود به صورت آنلاین تحقیق می کنند و به دنبال سرنخ هایی می گردند که به آن ها کمک کند رمز عبور شما را هک کنند. آن ها از هر سرنخ در مورد شما، محل زندگی، علایق و خانواده شما برای حدس زدن پسورد شما به صورت استراتژیک استفاده خواهند کرد.

آیا رمز عبور من قوی است؟ و هک کردن آن چقدر زمان میبرد؟

برای اطمینان از اینکه پسورد شما قوی و امن است، می‌توانید از ابزارهای آنلاین Password Checker استفاده کنید. این ابزارها معمولاً برای اطمینان از اینکه رمز عبور کاربران با معیارهای امنیتی تطابق دارند و از حداقل الزامات امنیتی پیروی می‌کنند، استفاده می‌شوند. این ابزارها می‌توانند به شما کمک کنند تا پسورد قوی‌تر و مطمئن‌تری ایجاد کنید.

آیا رمز عبور من قوی است؟ و هک کردن آن چقدر زمان میبرد؟

برخی از مواردی که یک Password Checker بررسی می کند شامل موارد زیر می‌شود:

  • طول رمز عبور: بررسی طول رمزهای عبور و اطمینان از اینکه حداقل تعداد کاراکترها رعایت شده باشد.
  • استفاده از حروف بزرگ و کوچک، اعداد و نمادها: اطمینان از اینکه رمز عبور شامل ترکیبی از حروف بزرگ و کوچک، اعداد و نمادها باشد.
  • عدم استفاده از اطلاعات شخصی قابل پیش‌بینی: جلوگیری از استفاده از اطلاعات شخصی مانند نام، تاریخ تولد و اطلاعات مشابه به عنوان رمز عبور.
  • عدم استفاده از الگوهای قابل پیش‌بینی: جلوگیری از استفاده از الگوهای ساده و قابل پیش‌بینی مانند “123456” یا “password”.
  • بررسی عدم وابستگی به کلمات دیکشنری: جلوگیری از استفاده از کلماتی که به راحتی در دیکشنری‌های متداول قابل یافتن هستند.
  • بررسی عدم تکرار الگوها: جلوگیری از استفاده از الگوها یا کاراکترهای تکراری در رمزهای عبور.

چگونه رمز عبور قوی خود را به خاطر بسپاریم؟

اکنون با تمام این نکات که گفته شد و تاکید می کند پسوردهای قوی متفاوتی برای حساب‌های خود ایجاد کنید، ممکن است بپرسید که چگونه همه آن ها را به خاطر بسپارید. در اینجا چند نکته برای به خاطر سپردن رمزهای عبور قوی وجود دارد.

1- از عبارت عبور استفاده کنید

عبارت عبور (passphrase) مانند یک رمز عبور (password) است، با این تفاوت که میتواند مانند جمله طولانی بوده و شامل فاصله و علائم نگارشی باشد. مزیت عبارت عبور این است که معمولاً به خاطر سپردن آن ها آسان تر است و در عین حال به دلیل طول آن ها شکستنش دشوارتر است. برای هر کاراکتر اضافی در طول یک رمز عبور یا عبارت عبور، زمان شکستن به طور تصاعدی افزایش می یابد. این بدان معنی است که داشتن یک رمز عبور طولانی یا عبارت عبور می تواند شما را بسیار امن تر از داشتن یک رمز عبور کوتاه با تعدادی نماد یا اعداد در آن کند.

بنابراین از یک عبارت یا جمله به جای کلمه استفاده کنید. این یکی از موثرترین راه ها برای ایجاد رمز عبور قوی است که به راحتی قابل یادآوری است. به جای استفاده از یک کلمه، سعی کنید چند کلمه را با هم ترکیب کنید تا یک عبارت یا جمله بسازید. به عنوان مثال، به جای “password”، می توانید از عبارت “My password is very strong!” استفاده کنید. استفاده از بیش از یک کلمه ساده به عنوان رمز عبور، امنیت شما را بطور قابل ملاحظه ای افزایش می دهد (از 3 دقیقه به 2 ماه). اما، با استفاده از 3 کلمه یا بیشتر به جای دو کلمه، ناگهان یک رمز عبور بسیار امن دریافت می کنید.

چگونه یک رمز عبور قوی و ایمن ایجاد کنیم؟

پس اکنون می دانید چرا عبارت عبوری مانند “Googleis My Favorite WEBSite:)” از رمز عبوری مانند ” J4fS<2″ بسیار قوی تر و ایمن تر است.

2- رمز عبور خود را شاعرانه کنید

به شعری فکر کنید که حفظ کرده اید یا معنای قوی دارد. یک خط از آن بردارید و از آن به عنوان رمز عبور خود استفاده کنید. شایان ذکر است که برای سخت‌تر کردن آن، باید برخی از حروف را به نمادها یا اعداد تبدیل کنید.

پنج نکته برای محافظت و ایمن نگه داشتن رمز عبور شبکه های اجتماعی

  • از پسورد تکراری استفاده نکنید و مرتباً آنها را تغییر دهید. حتی اگر پسورد قوی ایجاد کرده اید، از آن در چندین شبکه اجتماعی، وب سایت و برنامه مجدد استفاده نکنید.
  • از ابزار مدیریت پسورد برای ذخیره رمزهای عبور خود استفاده کنید. برخی از محبوب ترین مدیران رمز عبور Dashlane، Keeper و LastPass هستند. پسورد خود را در یک فایل در کامپیوتر یا تلفن هوشمند خود ذخیره نکنید.
  • از احراز هویت دو مرحله ای استفاده کنید. اگر یک هکر نام کاربری و پسورد شبکه اجتماعی شما را حدس بزند، احراز هویت دو مرحله ای هکر را مجبور می کند تا یک پین برای ورود به سیستم ارائه دهد.
    • شما یک اعلان تلاش برای ورود دریافت خواهید کرد که به شما هشدار می دهد پسورد شما هک شده است. اگر این ایمیل یا متن اعلان را دریافت کردید، از دادن دسترسی خودداری کنید و بلافاصله رمز عبور و نام کاربری خود را تغییر دهید.
  • با اعتبار اکانت گوگل یا شبکه اجتماعی خود وارد حساب ها یا وب سایت ها نشوید. اگر اعتبار گوگل شما به خطر بیفتد، هکر اکنون می تواند با استفاده از رمز عبور شما به هر برنامه و وب سایتی دسترسی داشته باشد.
  • به درخواست‌های دوستی، پیام‌های چت و دنبال‌کنندگان یا دوستان جدید توجه کنید. در اینستاگرام مراقب درخواست‌های دوستی از طرف افرادی باشید که بدون پست هستند.

هکرها ممکن است حساب دوست یا آشنای شما را هک کنند، برای شما درخواست دوستی ارسال کنند و سپس شروع به جمع آوری اطلاعاتی درباره شما کنند که می تواند برای هک کردن حساب های شما مورد استفاده قرار گیرد.

مهمتر از همه، مشکوک و محتاط باشید. به ایمیل هایی که از شما می خواهند پسورد خود را ریست کنید اعتماد نکنید. هیچ شرکتی هرگز برای شما ایمیلی برای ریست رمزعبور یا اعتبارسنجی حساب کاربری ارسال نمی‌کند (مگر اینکه خودتان از قبل درخواست داده و در جریان باشید).

سوالات متداول

ایمن ترین و قوی ترین پسورد چیست؟

هیچ پسوردی وجود ندارد که “ایمن ترین” باشد، و اگر وجود داشت، نوشتن آن در اینجا آن را ناامن می کرد، زیرا هزاران نفر از آن در حساب های خود استفاده می کردند. در عوض، رمز عبورهای امن حاوی ترکیبی به ظاهر تصادفی از اعداد، حروف و نمادها هستند و حداقل شامل 16 تا 20 کاراکتر هستند.

مثالی از پسورد قوی چیست؟

نمونه ای از یک پسورد امن bL8%4TO&t9b% است که توسط مدیر رمز عبور LastPass تولید شده است، که شکستن آن برای یک کامپیوتر 46 میلیون سال طول می کشد!

آیا رمز عبورهای طولانی امن تر هستند؟

پسوردهای طولانی امن تر از پسوردهای کوتاه هستند. توصیه می‌کنیم از رمز عبوری استفاده کنید که بین 16 تا 20 کاراکتر داشته باشد، اگرچه اکثر افراد از پسورد هشت کاراکتری یا کمتر استفاده می‌کنند.

رمز عبورهای رایج کدامند؟

بر اساس تحقیقات سال 2020 از NordPass، پنج پسورد رایج عبارتند از 123456، 123456789، picture1، password و 12345678.

رمز عبورهای رایج کدامند؟

جمع بندی

در جمع‌بندی، میتوان گفت که پسورد یکی از پایه‌های اساسی امنیت آنلاین است که نقش حیاتی در حفظ حریم خصوصی و اطلاعات فردی دارد. رعایت اصول ساخت یک رمز عبور قوی و پیچیده، از جمله تنوع در کاراکترها و اجتناب از الگوهای قابل پیش‌بینی، می‌تواند به شدت احتمال حملات سایبری را کاهش دهد. با توجه به رشد روزافزون تهدیدات سایبری، هر فرد باید به جدی‌ترین شکل ممکن به ایجاد و مدیریت رمز عبورهای خود بپردازد.

نحوه صدا زدن API های خارجی با پایتون


امروزه تقریباً هیچ نرم‌افزاری بدون API کار نمی‌کند. از سیستم‌های پرداخت آنلاین تا پیام‌رسان‌ها، از دیجی‌کالا تا گوگل مپ، از سامانه‌های بانکی تا سرویس‌های هوش مصنوعی تمام این ابزارها با API کار می‌کنند. API به برنامه‌ها اجازه می‌دهد با یکدیگر صحبت کنند، داده رد و بدل کنند، عملیات انجام دهند و حتی رفتار یکدیگر را کنترل کنند. در این مقاله، قصد داریم نحوه صدا زدن API های خارجی با پایتون را به صورت جامع، کاربردی و مرحله‌به‌مرحله ارائه کنیم.

در پایتون، محبوب‌ترین و ساده‌ترین کتابخانه برای کار با API، کتابخانه‌ی requests است. دلیل این محبوبیت چند چیز است:

  1. ساده بودن و خوانایی بالا
  2. پشتیبانی از همه انواع HTTP Request
  3. پشتیبانی از Token، Header، Timeout و Session
  4. مناسب برای محیط‌های Production

 

بخش اول: نصب کتابخانه Requests

برای کار با APIها ابتدا باید کتابخانه Requests را نصب کنید:

pip install requests

کتابخانه Requests امکانات زیر را فراهم می‌کند:

  • ارسال درخواست‌های GET, POST, PUT, DELETE
  • ارسال Headers
  • ارسال Query Parameters
  • ارسال Body به صورت JSON یا فرم
  • مدیریت Timeout
  • مدیریت خطاهای HTTP و شبکه
  • پشتیبانی از Session
  • پیاده‌سازی Retry
  • احراز هویت Token و Basic Auth

در ادامه تک‌تک این موارد را بررسی می‌کنیم.

بخش دوم: اولین درخواست GET

GET ساده‌ترین نوع درخواست است و برای دریافت اطلاعات استفاده می‌شود.

مثال:

import requests

url = "https://jsonplaceholder.typicode.com/posts"
response = requests.get(url)
print(response.json())

اگر پاسخ ساختار JSON داشته باشد، متد .json() آن را به دیکشنری پایتون تبدیل می‌کند.

بخش سوم: ارسال Query Parameters

گاهی لازم است اطلاعاتی مثل صفحه‌بندی، تعداد نتایج، فیلترها و … را همراه درخواست ارسال کنیم.

مثلاً:

https://api.example.com/users?page=2&limit=10

در پایتون:

params = {"page": 2, "limit": 10}
response = requests.get(url, params=params)

کتابخانه requests خودش به طور خودکار پارامترها را به URL اضافه می‌کند.

بخش چهارم: ارسال Headers

هدِرها بخش مهمی از API هستند؛ مخصوصاً وقتی نیاز به احراز هویت یا اعلام نوع داده دارید.

مثال:

headers = {
    "Accept": "application/json",
    "User-Agent": "MyPythonApp/1.0"
}
response = requests.get(url, headers=headers)

اگر API نیاز به Token داشته باشد، Token معمولاً داخل Header قرار می‌گیرد.

بخش پنجم: ارسال POST همراه با JSON

POST برای ایجاد داده در سمت سرور استفاده می‌شود. مثلاً ثبت کاربر جدید، ایجاد پست، ارسال فرم و…

import requests

url = "https://jsonplaceholder.typicode.com/posts"
data = {
    "title": "New Post Title",
    "body": "Some text here",
    "userId": 1
}

response = requests.post(url, json=data)
print(response.json())

اگر از json= استفاده کنید، پایتون به‌طور خودکار داده را تبدیل به JSON کرده و Header مناسب اضافه می‌کند.

بخش ششم: مدیریت Timeout

در محیط‌های واقعی (Production)، همیشه باید Timeout تعیین کنید تا برنامه هنگ نکند.

مثال:

response = requests.get(url, timeout=5)

اگر سرور پاسخ ندهد، درخواست بعد از ۵ ثانیه قطع می‌شود.

بخش هفتم: مدیریت خطاها به صورت حرفه‌ای

درخواست‌های API همیشه ممکن است با خطا مواجه شوند:

  • قطع اینترنت
  • کندی سرور
  • پاسخ HTTP نامعتبر
  • خطاهای 404، 500، 503
  • تایم‌اوت
  • Token اشتباه

بهترین شیوه:

import requests

try:
    response = requests.get(url, timeout=5)
    response.raise_for_status()  # هندل خودکار خطاهای HTTP
    data = response.json()

except requests.exceptions.Timeout:
    print("خطا: درخواست تایم‌اوت شد.")

except requests.exceptions.ConnectionError:
    print("خطا: اتصال برقرار نشد.")

except requests.exceptions.HTTPError as e:
    print("خطای HTTP:", e)

except Exception as e:
    print("خطای ناشناخته:", e)

متد raise_for_status() اگر کد HTTP خطا باشد (مثل 404 ،401، 500)، خطا ایجاد می‌کند.

بخش هشتم: استفاده از Session برای بهبود کارایی

اگر قرار است چندین درخواست به یک API بزنید، استفاده از Session خیلی مهم است:

  • سرعت بالاتر (Connection Pooling)
  • ارسال خودکار Headerهای مشابه
  • مدیریت بهتر Token

نمونه:

session = requests.Session()
session.headers.update({
    "Accept": "application/json",
    "Authorization": "Bearer MY_TOKEN"
})

response = session.get("https://api.example.com/data")

بخش نهم: انواع احراز هویت (Authentication)

1. Bearer Token

ساده‌ترین روش:

headers = {"Authorization": "Bearer YOUR_TOKEN"}
requests.get(url, headers=headers)

2. Basic Auth

مناسب برای APIهای ساده:

response = requests.get(url, auth=("username", "password"))

3. OAuth2 (پیشرفته)

بسیاری از APIهای مدرن مثل Google، GitHub، Discord و… از OAuth2 استفاده می‌کنند.
در OAuth2:

  • ابتدا باید Token بگیرید
  • سپس Token را در Header ارسال کنید
  • اگر Token منقضی شد باید Refresh Token بگیرید

بخش دهم: Pagination

اگر API داده زیادی داشته باشد، صفحه‌بندی می‌شود.

مثال:

def get_all_pages():
    page = 1
    results = []

    while True:
        params = {"page": page}
        r = requests.get(url, params=params)
        data = r.json()

        if not data:
            break

        results.extend(data)
        page += 1

    return results

بخش یازدهم: مدیریت Rate Limit

اگر به‌طور زیاد API را صدا بزنید، ممکن است پیام 429 دریافت کنید:

«Too Many Requests»

راه‌حل:

import time

if response.status_code == 429:
    retry_after = int(response.headers.get("Retry-After", 1))
    time.sleep(retry_after)

بخش دوازدهم: Retry اتوماتیک (حرفه‌ای)

برای سرورهای ناپایدار یا اتصالات شکننده، Retry ضروری است.

from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

session = requests.Session()

retry_strategy = Retry(
    total=5,
    backoff_factor=1,
    status_forcelist=[429, 500, 502, 503, 504]
)

adapter = HTTPAdapter(max_retries=retry_strategy)
session.mount("https://", adapter)

این یعنی اگر پاسخ HTTP یکی از کدهای بالا باشد، درخواست دوباره ارسال می‌شود.

بخش سیزدهم: ساخت یک APIClient تمیز و قابل استفاده در پروژه‌ها

این ساختار حرفه‌ای و قابل توسعه است:

import requests

class APIClient:
    def __init__(self, base_url, token=None, timeout=5):
        self.base_url = base_url
        self.session = requests.Session()
        self.timeout = timeout

        self.session.headers.update({"Accept": "application/json"})
        if token:
            self.session.headers.update({"Authorization": f"Bearer {token}"})

    def get(self, endpoint, params=None):
        try:
            r = self.session.get(self.base_url + endpoint, params=params, timeout=self.timeout)
            r.raise_for_status()
            return r.json()
        except Exception as e:
            print("Error:", e)
            return None

    def post(self, endpoint, data=None):
        try:
            r = self.session.post(self.base_url + endpoint, json=data, timeout=self.timeout)
            r.raise_for_status()
            return r.json()
        except Exception as e:
            print("Error:", e)
            return None


# استفاده:
api = APIClient("https://jsonplaceholder.typicode.com")
print(api.get("/posts")[0])