Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การสร้างโปรแกรมบล็อกเว็บไซต์ด้วย Python

หากคุณทำงานในบริษัท IT ขนาดใหญ่ คุณอาจสังเกตเห็นว่ามีเว็บไซต์บางแห่งถูกบล็อก โดยเฉพาะเว็บโซเชียลเน็ตเวิร์กอย่าง Facebook, YouTube, Instagram เป็นต้น

แทนที่จะใช้แอปพลิเคชันของบุคคลที่สามในการบล็อกเว็บไซต์ เราสามารถพัฒนาแอปพลิเคชันแบบกำหนดเองได้ ซึ่งจะบล็อกเว็บไซต์ที่เราต้องการ และการพัฒนาโปรแกรมบล็อกเว็บไซต์ใน Python ไม่ได้ยากนัก นั่นคือสิ่งที่เราจะทำกันวันนี้ - พัฒนาสคริปต์ Python ที่จะบล็อกเว็บไซต์ตามที่ต้องการ

ข้อกำหนดเบื้องต้น

  • ติดตั้ง Python 3.x แล้ว
  • มีความรู้พื้นฐานเกี่ยวกับ Python

สิ่งที่เราจะทำ

เราจะพัฒนาแอปพลิเคชัน Python ที่จะบล็อกเว็บไซต์ที่กำหนด (เว็บไซต์ใดก็ได้ - Facebook, YouTube เป็นต้น) ในช่วงเวลาที่กำหนดของวัน (09:00 - 18:00 น.) ซึ่งถือเป็นเวลาทำงานในสำนักงาน เราต้องการบล็อกเว็บโซเชียลเน็ตเวิร์กทั้งหมด เราจะใช้ไลบรารีที่มาพร้อมกับ Python (built-in libraries) ดังนั้นจึงไม่ต้องติดตั้งแพ็กเกจของบุคคลที่สาม

วิธีการทำงาน

ทุกระบบปฏิบัติการมีไฟล์ hosts ตำแหน่งของไฟล์ hosts อาจแตกต่างกันไปในแต่ละระบบปฏิบัติการ ไฟล์ hosts นี้ทำหน้าที่แมปชื่อโฮสต์ (hostname) ไปยังที่อยู่ IP ของเครื่อง ในไฟล์ hosts นี้ เราจะระบุรายการเว็บไซต์ที่ต้องการบล็อก

ไฟล์ hosts ของเราจะมีลักษณะประมาณนี้:

การสร้างโปรแกรมบล็อกเว็บไซต์ด้วย Python

เนื่องจากยังไม่ได้ระบุชื่อเว็บไซต์ในไฟล์ hosts หากลองเปิด "youtube.com" จะสามารถเข้าถึงได้โดยไม่มีปัญหา รูปภาพด้านล่างแสดงการยืนยัน (เพื่อให้แน่ใจว่าหลังจากรันสคริปต์แล้ว เว็บไซต์นี้จะเปิดไม่ได้หากเราต้องการบล็อก)

การสร้างโปรแกรมบล็อกเว็บไซต์ด้วย Python

ด้านล่างนี้คือโปรแกรมบล็อกเว็บไซต์ของเรา:

# นำเข้าไลบรารี
import time
from datetime import datetime as dt

# พาธไฟล์ hosts ของ Windows
hostsPath = r"C:\Windows\System32\drivers\etc\hosts"
redirect = "127.0.0.1"

# เพิ่มเว็บไซต์ที่ต้องการบล็อกในรายการนี้
websites = ["www.youtube.com", "youtube.com", "www.facebook.com", "facebook.com"]

while True:
    # ระยะเวลาที่โปรแกรมบล็อกเว็บไซต์จะทำงาน
    if dt(dt.now().year, dt.now().month, dt.now().day, 9) < dt.now() < dt(dt.now().year, dt.now().month, dt.now().day, 18):
        print("Sorry Not Allowed...")
        with open(hostsPath, 'r+') as file:
            content = file.read()
            for site in websites:
                if site in content:
                    pass
                else:
                    file.write(redirect + " " + site + "\n")
    else:
        with open(hostsPath, 'r+') as file:
            content = file.readlines()
            file.seek(0)
            for line in content:
                if not any(site in line for site in websites):
                    file.write(line)
            file.truncate()
        print("Allowed access!")
    time.sleep(5)

ผลลัพธ์

Sorry Not Allowed...
Sorry Not Allowed...
Sorry Not Allowed...
Sorry Not Allowed...
Sorry Not Allowed...
Sorry Not Allowed...
Sorry Not Allowed...
…

ตอนนี้หากลองเปิด youtube.com หรือ facebook.com จะได้ผลดังนี้:

การสร้างโปรแกรมบล็อกเว็บไซต์ด้วย Python

เราสามารถปรับแต่งโค้ดข้างต้นได้ตามความต้องการ เช่น ระยะเวลา, เว็บไซต์, ข้อความที่กำหนดเอง เป็นต้น