Trình chặn trang web bằng dự án python pdf

Tìm hiểu cách tạo trình chặn trang web tự động chặn trang web cho chúng tôi và giúp chúng tôi làm việc hiệu quả hơn

Patrick Loeber · · · · · Ngày 01 tháng 1 năm 2021 · 3 phút đọc

con trăn

Trong Hướng dẫn Python này, chúng tôi tạo một trình chặn trang web tự động chặn trang web cho chúng tôi và giúp chúng tôi làm việc hiệu quả hơn. Điều này có thể hữu ích nếu bạn có mục tiêu trong năm mới là sử dụng ít mạng xã hội hơn

Mã này cũng có sẵn trên GitHub

Kịch bản¶

Đây là mã. Sửa đổi end_time và đặt thời gian cho đến khi bạn muốn chặn tất cả các trang web của mình. Đồng thời xác định tất cả các trang web bạn muốn chặn trong danh sách sites_to_block. Người dùng Windows cũng phải cập nhật đường dẫn chính xác đến tệp máy chủ [xem đường dẫn đã nhận xét]. Sau đó, bạn có 3 tùy chọn làm thế nào để sử dụng nó

  • Kích hoạt tập lệnh theo cách thủ công mọi lúc mọi nơi
  • Thiết lập một công việc Cron
  • Để tập lệnh chạy trong nền với vòng lặp True

Làm thế nào nó hoạt động?¶

Cách tiếp cận rất đơn giản. Chúng tôi chỉ sửa đổi tệp máy chủ và xác định ánh xạ từ tên miền bị chặn sang 127 của chúng tôi. 0. 0. 1 địa chỉ IP. Bằng cách này, tất cả các yêu cầu đối với miền được chuyển hướng đến máy chủ cục bộ của chúng tôi. Thông thường không có máy chủ nào chạy trên localhost nên chúng ta sẽ thấy thông báo "Site can't bereach". Trước khi sử dụng mã này và sửa đổi tệp, bạn có thể muốn tạo một bản sao lưu tệp máy chủ của mình

Blog này sẽ thảo luận về việc phát triển Trình chặn trang web bằng Python. Blog này sẽ dạy bạn về những điều sau đây

  • Danh sách hoạt động
  • Xử lý tập tin
  • Xử lý quyền
  • Hoạt động chuỗi
  • Chỉ định kiểu trả về của hàm

Các thao tác trên tệp bằng cách lập trình một ứng dụng là xử lý tệp. Trong Python, chúng ta có thể mở một tệp bằng hàm open[] được tích hợp trong Python

Hãy thảo luận về ý chính trước. Có một tệp có tên là “hosts” trong Windows nói chung tại System32/drivers. File này sẽ giúp chúng ta chặn truy cập một trang web từ máy tính. Chúng tôi cần thêm “127.0.0.1 website.com“ vào cuối tệp để chặn trang web. Và tương tự, gỡ bỏ nó để bỏ chặn trang web

Tuy nhiên vì đây là file hệ thống quan trọng nên bạn không thể chỉnh sửa nó một cách đơn giản được. Bạn sẽ cần đặc quyền quản trị để chỉnh sửa nó. Vì vậy, để khắc phục vấn đề này, bạn có hai giải pháp. Chạy Python IDLE với tư cách quản trị viên và chạy tệp Python. Hoặc, bạn có thể chạy Dấu nhắc Lệnh với tư cách quản trị viên và chạy tệp python bằng lệnh. “python filename.py

Chức năng Trình chặn trang web trong Python

def blocker[]:
    ip = "127.0.0.1"
    with open[r"C:\Windows\System32\drivers\etc\hosts", "r+"] as host:
        content = host.read[]
        for i in all_websites[]:
            if i in content:
                print[i + " is already blocked"]
                pass
            else:
                what_to_write = ip + "       " + i + "\n"
                host.write[what_to_write]

Đầu tiên chúng ta sẽ mở file hosts để đọc và ghi nội dung trong đó. Chúng tôi sẽ duyệt qua danh sách các trang web cần chặn và kiểm tra xem từng trang web có tồn tại trong tệp không. Nếu có, thì chúng tôi sẽ hiển thị rằng nó đã bị chặn và nếu không, chúng tôi sẽ thêm trang web vào tệp theo cú pháp. “127.0.0.1 website.com“. “\n” biểu thị rằng chuỗi tiếp theo sẽ bắt đầu ở dòng tiếp theo. Sau đó, chúng tôi sẽ viết trên tệp đó bằng cú pháp. “fileName.write[string]

  • open[] – Hàm này sẽ giúp chúng ta làm việc với một file cụ thể, đọc, ghi hoặc cả hai
  • vượt qua – Đây là một từ khóa trong Python được sử dụng khi không có mã để viết ngay bây giờ, nhưng cũng sẽ tránh được lỗi. Ví dụ, nếu bạn không biết viết gì trong phần other của câu điều kiện và bạn muốn viết nó sau, thì bạn có thể để lại bằng cách viết pass, điều này sẽ không gây ra bất kỳ lỗi nào.
  • read[] – Phương thức này dùng để đọc nội dung của file
  • write[] – Phương thức này được sử dụng để nối chuỗi vào EOF

hàm all_websites[]

def all_websites[] -> list:
    a = int[input["how many websites? "]]
    website_list = []
    for i in range[a]:
        website_list.append[str[input["Enter the website URL: "]]]

    return website_list

Ở đây ta sẽ hỏi lưu trữ bao nhiêu website thì lặp bấy nhiêu lần. Mỗi lần chúng tôi sẽ yêu cầu một trang web mới và nối nó vào danh sách website_list đã được xác định trước đó. Cuối cùng, chúng tôi sẽ trả lại nó. Bạn có thể thắc mắc “-> list” có nghĩa là gì ở dòng đầu tiên. Điều này thể hiện rằng kiểu trả về của hàm cụ thể đó sẽ là một danh sách. Trong trường hợp của chúng tôi, kiểu trả về của biến website_list cũng là một danh sách. Bạn có biết chúng ta có thể kiểm tra loại biến bằng cú pháp. “in [loại [tên_biến]]”

Chức năng bỏ chặn trang web trong Python

def unblocker[]:
    with open[r"C:\Windows\System32\drivers\etc\hosts", "r+"] as host:
        content = host.read[]
        my_websites = all_websites[]
        for i in range[len[my_websites]]:
            if my_websites[i] in content:
                new_content = content.replace[my_websites[i], ""]
                host.truncate[0]
                host.write[new_content]
            else:
                print[i + " has not been blocked"]

Tại đây, chúng ta sẽ mở file host và lưu trữ website muốn bỏ chặn trong my_websites bằng cách gọi hàm all_websites[]. Sau đó, chúng tôi sẽ lần lượt duyệt qua tất cả các trang web mong muốn và kiểm tra xem chúng có tồn tại trong tệp máy chủ hay không và nếu có, chúng tôi sẽ thay thế tên miền của trang web bằng một chuỗi rỗng của “” trong một biến new_content. Sau đó, vì phương thức ghi sẽ chỉ nối thêm nội dung mong muốn vào tệp, nên trước tiên chúng ta cần xóa dữ liệu hiện tại của tệp. Chúng ta có thể làm điều này bằng phương pháp truncate

Sau khi xóa dữ liệu ban đầu của tệp máy chủ, chúng tôi sẽ thêm new_content vào tệp máy chủ bằng phương thức write[]. Nếu trang web mong muốn chưa bị chặn hoặc không tồn tại trong tệp máy chủ, thì chương trình sẽ cảnh báo họ về điều đó

Hoàn thành mã để tạo Trình chặn trang web bằng Python

def all_websites[] -> list:
    a = int[input["how many websites? "]]
    website_list = []
    for i in range[a]:
        website_list.append[str[input["Enter the website URL: "]]]

    return website_list

def blocker[]:
    ip = "127.0.0.1"
    with open[r"C:\Windows\System32\drivers\etc\hosts", "r+"] as host:
        content = host.read[]
        for i in all_websites[]:
            if i in content:
                print[i + " is already blocked"]
                pass
            else:
                what_to_write = "\n" + ip + "       " + i + "\n"
                host.write[what_to_write]

def unblocker[]:
    with open[r"C:\Windows\System32\drivers\etc\hosts", "r+"] as host:
        content = host.read[]
        my_websites = all_websites[]
        for i in range[len[my_websites]]:
            if my_websites[i] in content:
                new_content = content.replace[my_websites[i], ""]
                host.truncate[0]
                host.write[new_content]
            else:
                print[i + " has not been blocked"]

if __name__ == "__main__":
    menu_driven = int[input["1. Block a website, 2. Unblock a Website: "]]
    if menu_driven == 1:
        blocker[]
    elif menu_driven == 2:
        unblocker[]
    else:
        print["Enter either 1 or 2"]

Kiểm tra kịch bản

Trước tiên, hãy xem có gì trong tệp máy chủ của chúng tôi ngay bây giờ. Chúng tôi có thể thấy có nội dung bản quyền, nhưng vì chúng được nhận xét nên chúng không bắt buộc, vì vậy chúng tôi không phải lo lắng về nội dung ban đầu

Tôi sẽ sử dụng trang web python. org trong blog này làm ví dụ. Hãy chạy chương trình của chúng ta trước

Chúng tôi muốn chặn nó lúc đầu. Nhưng trước đó, hãy xem nó có hoạt động trên trình duyệt không

Vì nó đang hoạt động, hãy chặn nó ngay bây giờ

Chương trình hiện đã chặn trang web. Kiểm tra file host trên trình duyệt

Nó đã được thêm vào tệp máy chủ. Nhưng, hãy xem nó có hoạt động trong trình duyệt không

Bạn có thể thấy rằng trang web hiện đã bị chặn

Bây giờ, hãy bỏ chặn nó. Vì vậy, hãy chạy lại tập lệnh python

Chương trình hiện đã bỏ chặn trang web. Hãy kiểm tra tệp máy chủ

Nó hiện đã bị xóa khỏi tệp máy chủ. Nhưng, nó có hoạt động trong trình duyệt không, hãy kiểm tra

Bạn có thể thấy rằng nó hiện cũng hoạt động trong trình duyệt

Xin chúc mừng, bạn đã tạo thành công Trình chặn trang web bằng Python cho phép bạn chặn và bỏ chặn một trang web trên Windows. Bạn có thể làm cho tập lệnh này tốt hơn nữa bằng cách tạo Giao diện người dùng đồ họa từ tập lệnh này bằng Tkinter

Chủ Đề