Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

파이썬으로 직접 만드는 웹사이트 차단기

대형 IT 회사에서 일해본 경험이 있다면, 페이스북, 유튜브, 인스타그램 같은 소셜 네트워킹 사이트를 비롯한 여러 웹사이트가 사내에서 차단되어 있는 것을 본 적이 있을 것입니다.

서드파티(제3자) 애플리케이션을 사용하는 대신, 원하는 웹사이트를 직접 차단할 수 있는 자체 프로그램을 만들 수도 있습니다. 그리고 파이썬으로 웹사이트 차단기를 개발하는 것은 생각보다 어렵지 않습니다. 이번 글에서는 원하는 웹사이트를 차단하는 파이썬 스크립트를 함께 만들어 보겠습니다.

준비물

  • Python 3.x 설치
  • 파이썬 기초 지식

만들고자 하는 것

하루 중 특정 시간대(오전 9시부터 오후 6시까지)에 원하는 특정 웹사이트(유튜브, 페이스북 등)를 차단하는 파이썬 애플리케이션을 개발합니다. 예를 들어 근무 시간 동안 모든 소셜 네트워킹 사이트에 대한 접근을 막고 싶다고 가정해 보겠습니다. 이 프로젝트에는 파이썬 내장 라이브러리만 사용하기 때문에 별도의 서드파티 패키지를 설치할 필요가 없습니다.

작동 원리

모든 운영체제에는 hosts 파일이 존재합니다. hosts 파일의 위치는 운영체제마다 다를 수 있으며, 이 파일은 호스트명을 해당 머신의 IP 주소로 매핑하는 역할을 합니다. 우리는 이 hosts 파일에 차단하고 싶은 웹사이트 목록을 추가하는 방식으로 접근합니다.

hosts 파일은 대략 다음과 같은 형태입니다.

파이썬으로 직접 만드는 웹사이트 차단기

현재 hosts 파일에는 아무런 웹사이트도 등록되어 있지 않으므로, "youtube.com"에 접속하면 아무 문제 없이 열립니다. 아래는 그 확인 화면입니다. (스크립트 실행 후 이 사이트가 열리지 않아야 한다는 것을 증명하기 위한 기준점입니다.)

파이썬으로 직접 만드는 웹사이트 차단기

웹사이트 차단기 코드

#Import libraries
import time
from datetime import datetime as dt
#Windows host file path
hostsPath=r"C:\Windows\System32\drivers\etc\hosts"
redirect="127.0.0.1"
#Add the website you want to block, in this list
websites=["www.youtube.com","youtube.com", "www.facebook.com", "facebook.com"]
while True:
    #Duration during which, website blocker will work
    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에 접속을 시도하면 다음과 같은 결과를 얻게 됩니다.

파이썬으로 직접 만드는 웹사이트 차단기

커스터마이징 팁

위 코드는 필요에 따라 자유롭게 수정할 수 있습니다. 차단 시간대를 변경하거나, 차단 대상 웹사이트를 추가·삭제하거나, 출력 메시지를 원하는 문구로 바꾸는 등 다양한 방식으로 응용이 가능합니다. 예를 들어 주말에는 차단하지 않도록 요일 조건을 추가하거나, 관리자 권한 실행 여부를 확인하는 로직을 더하면 더욱 완성도 높은 차단기를 만들 수 있습니다.