آموزش پایتون: ساخت اپلیکیشن مسدود کننده وب سایت در ۳ مرحله – به زبان ساده


دنیا به سرعت در حال پیشرفت است و فناوری نیز از این قاعده مستثنی نیست. هر روز با چیزهای جدیدی آشنا میشویم که تاکنون هرگز به گوشمان هم نخورده بود. اما این وضعیت یک مشکل محسوب نمیشود. مشکل اینجا است که چگونه میتوان منابع مناسبی برای یادگیری همه چیز با ترتیب درست یافت؟ ما در بلاگ فرادرس با ارائه این سری مقالات آموزش عملی پایتون به شما کمک میکنیم تا به صورت مرحله به مرحله پایتون را بیاموزید. بنابراین با ما تا انتهای این مقاله نیز همراه باشید. در این نوشته میخواهیم اقدم به ساخت یک اپلیکیشن مسدود کننده وب سایت کنیم که دارای یک ساختار ساده و عملیات فایل است و به درک عمیق مفاهیم اساسی پایتون کمک میکند.
قسمت قبلی این مطلب را میتوانید از طریق لینک زیر مطالعه کنید:
مرحله اول
ابتدا با محیط آغاز میکنیم، زیرا محیط مهم است. برای راهاندازی محیط در پایتون سه گام اساسی وجود دارد. ابتدا باید مسیر فایل hosts را پیدا کنید.
در ویندوز این فایل در مسیر زیر قرار دارد:
C:\Windows\System32\drivers\etc\hosts
در لینوکس نیز مسیر فایل hosts به صورت زیر است:
linux- etc/hosts
اگر معلومات رایانهایتان خوب است، این احتمال وجود دارد که قبلاً سروکارتان به این فایل افتاده باشد. اما اگر چنین نیست باید بگوییم که فایل hosts میتواند برای نگاشت hostname-ها به آدرسهای IP استفاده شود. یعنی با آن میتوان وبسایتها را ریدایرکت کرده و یا با ارجاع به localhost آنها را مسدود کرد و این موضوع در هر سیستم عامل، موضوعی حساس محسوب میشود.
در گام دوم باید آدرس IP را که میخواهیم وبسایتمان به آن ریدایرکت شود را تعریف کنیم که در این مورد localhost است. localhost به طور معمول hostname استاندارد است که به خود سیستم داده میشود. localhost به وسیله آدرس IP 127.0.0.1 نمایش مییابد. در نهایت فهرستی از وبسایتهایی که میخواهیم مسدود کنیم تهیه میکنیم.
- مقاله مرتبط: طراحی سایت با پایتون — از صفر تا صد و پروژه محور
مرحله دوم
اینک که محیط برنامهنویسی خود را آماده ساختهایم، نوبت به این رسیده است که تعیین کنیم وبسایتها چه هنگام باید مسدود شوند؟ احتمالاً میخواهید این وبسایتها در ساعات کاری مسدود شوند. اما این وضعیت را چگونه میتوان تعریف کرد؟ بدیهی است که این کار به صورت دستی ممکن نیست. از این رو قصد داریم از کتابخانه تاریخ/زمان خود پایتون استفاده کنیم تا زمان جاری سیستم را برای تعیین این که کدمان باید چه هنگام اجرا شود، مورد بهرهبرداری قرار دهیم.
ما در این جا از حلقه while استفاده میکنیم، چون کد را به سرعت اجرا میکند. اینک در شرط if بررسی میکنیم که آیا زمان جاری بین 8 صبح تا 4 بعد از ظهر است یا نه. بنابراین که اگر ساعت کاری بود، عبارت work time و در غیر این صورت عبارت idle time نمایش یابد. کد (time.sleep(5 یک تأخیر پنجثانیهای ایجاد میکند که قطعاً قابل درک است.
دقت کنید که جهت رعایت امنیت بهتر است فایل hosts را به دایرکتوری کاری خود کپی کنید و به جای فایل اصلی، مسیر آن را به برنامه بدهید. زمانی که همه موارد مورد نیاز را گردآوری کردیم مسیر را دوباره به مسیر اصلی تعیین میکنیم:
مرحله سوم
در مرحله سوم از ساخت اپلیکیشن خود اقدام به مسدودسازی عملی وبسایتها میکنیم. به این منظور از عملیات ابتدایی خواندن/نوشتن فایل در پایتون بهره میگیریم. این عملیات خود به دو بخش تقسیم میشود. ابتدا باید اقدام به مسدودسازی وبسایتها در صورت ورود به ساعتهای کاری بکنیم و همچنین در زمان پایان ساعت کاری باید مسدودسازی را متوقف کنیم. ابتدا بخش اول را انجام میدهیم.
قبل از هر چیز باید زمان جاری را به دست آوریم. سپس برای خواندن محتوای فایل باید آن را ابتدا باز کنیم که جزو قواعد ابتدایی عملیات فایل است. بنابراین نخست فایل را باز میکنیم و سپس همه محتوای آن را از فایل خوانده و در متغیر content ذخیره میکنیم. کاراکترهای r+ که در ادامه مسیر فایل مشاهده میکنید، در واقع مجوز خواندن و همچنین نوشتن فایل را به ما میدهد. در ادامه بررسی میکنیم که آیا وبسایت از قبل در فایل موجود است یا نه و اگر نباشد در آنجا قرار میدهیم. بدین ترتیب بخش نخست به پایان میرسد و وبسایتهای فهرست ما هم اینک مسدود شدهاند. کد ما به صورت زیر است:
اینک تصور کنید ساعات کاری به پایان رسیده است و میخواهیم به برخی از وبسایتهای فهرست فوق سر بزنیم. بنابراین باید آنها را از حالت مسدود خارج کنیم. به طور مقدماتی ما باید این وبسایتها را که به فایل اضافه کردهایم، از آن حذف کنیم. به این منظور باید ابتدا فایل را باز کنیم و این بار به جای خواندن همه فایلها به صورت رشتهای آن را به صورت خط به خط بخوانیم، از این رو از دستور زیر استفاده میکنیم:
file.readlines()
- مقاله مرتبط: طراحی سایت با پایتون — از صفر تا صد و پروژه محور
عملیات فایل
عبارت (file.seek(0 برای قرار دادن اشارهگر در موقعیت ابتدایی فایل استفاده میشود. اینک به جاهای مهم رسیدهایم. ما باید فایل را دو بار و با سرعت کم بخوانیم. چرخه تکرار تعریف شده شاید به نظرتان پیچیده بیاید؛ اما چنین نیست. در واقع این همان کد if و for است. دستور website in line به بررسی خط نخست فایل hosts میپردازد و وبسایتهایی که باید بررسی شوند از حلقه for به دست میآیند. به طور خلاصه معنای کل خط این است که اگر وبسایت ما از فهرست وبسایتهای مسدود شده در خطی از فایل hosts قرار نداشته باشد، آن خط باید append/print شود. اگر در آن خط وبسایت ما باشد در این صورت آن خط نادیده گرفته میشود. امیدواریم با این توضیح متوجه منطق برنامه شده باشید، چون بسیار حائز اهمیت است. بدین ترتیب موفق میشویم وبسایتها را از فهرست فایل hosts حذف کنیم.
گام نهایی
بدین ترتیب ما موفق شدیم یک اپلیکیشن مسدودکننده وبسایت بسازیم؛ اما نمیخواهیم کد را هر روز به صورت دستی اجرا کنیم. به همین دلیل است که باید از یک نرمافزار زمانبندی وظیفه برای اجرای این کار استفاده کنیم. بدین منظور از Cron Job Scheduler (+) استفاده میکنیم. این نرمافزار از پیش روی سیستم نصب است و لازم نیست کاری در این خصوص انجام دهید. کافی است جدول cron را با مجوز Sudo و پارامتر e باز کنید:
مسیر فایل اصلی را به همراه یک دستور reboot به صورت زیر وارد کنید:
سخن پایانی
بدین ترتیب کار انجام یافته است. ما موفق شدیم فهرست وبسایتهای مورد نظر خود را مسدود کنیم. رایانه خود را مجدداً راهاندازی کنید تا اپلیکیشنمان به طور کامل اجرا شود. بحث مسدودسازی وبسایتها امروزه یک موضوع رایج است و میتوان به صورت افزونه در فروشگاههای مرتبط با مرورگرها مشاهده کرد. اما شاید عده کمی واقعاً در مورد طرز کار این اپلیکیشنها اطلاع دارند. دانستن طرز کار این اپلیکیشنها مهم است. کد کامل این اپلیکیشن مسدودکننده وبسایت به صورت زیر است:
برای مطالعه این مجموعه مطلب روی لینک زیر کلیک کنید:
اگر این مطلب برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزش های برنامه نویسی پایتون
- گنجینه آموزش های برنامه نویسی پایتون (Python)
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامه نویسی پایتون – مقدماتی
- زبان برنامه نویسی پایتون (Python) — از صفر تا صد
- طراحی سایت با پایتون — از صفر تا صد و پروژه محور
- یادگیری علم داده (Data Science) با پایتون — از صفر تا صد
==