Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 표준 라이브러리
- 명령어
- awskrug
- 클라우드
- dockerfile
- 프로세스 관리
- AI
- 애저
- docker
- 변수
- open ai
- 함수
- nexus
- 사용자 계정 관리
- git hub
- it기사
- AI챗봇
- 3티어 아키텍처
- python
- 리눅스
- terraform
- Azure
- aws사용자모임
- go
- Linux
- AWS
- GIT
- jenkins
- maven
- 파이썬
Archives
- Today
- Total
We are Architect
31. 웹 사이트 차단 프로그램 본문
* 취지 :
- 내가 원하지 않는 사이트가 인터넷 서핑 중에 갑자기 뜰 수 있다. 그러면 들어가서 잘 못 누르거나 하면 해킹의 위험도 존재하고 무엇보다 스트레스가 쌓는 것이 매우 좋지 않다. 그래서 원하지 않는 웹 사이트는 아예 뜨지 않게 하려고 만들었다.
* 도구
- os 모듈 : 운영체제 시스템을 설정할 수 있게 하는 함수로써 파이썬 기본라이브러리에 존재한다. 해당 모듈을 사용하여 관리자 권한으로 시스템에 들어가서 로컬 PC에서 dns서버 역할을 하는 hosts파일 설정을 건드릴 것이다.
* hosts 파일이란?
- hosts 파일은 ip와 도메인을 맵핑 시켜서 인터넷에서 주소를 찾기 위해 사용된다. DNS서버 보다 먼저 질의를 받는 곳이 hosts파일이다.
- 해당 프로그램에서는 파일을 수정하여 오히려 ip를 127.0.0.1 인 루프백 ip로 설정해 원하지 않는 도메인과 맵핑시켜서 뜨지 않게 응용할 것이다.
* 주의 할점
- 우선 hosts 파일에 접근하려면 관리자 권한으로 접근해야 한다. 시스템 상에 존재하는 파일이기 때문이다. vs code를 우클릭하여 관리자 권한 모드로 실행 시키자.
- 보안 프로그램이 설치 되어있으면 파이썬이 해당 파일로 접근하는 것을 차단한다. 그래서 보안 프로그램(알약)을 거야 한다. (프로그램 테스트를 제외하고는 끄는 걸 추천하지 않는다.)
* 모듈 혹은 패키지
# 시스템의 설정 파일을 변경하기 위한 모듈
import os
* 함수
# block_websites함수 : website에 들어가는 값들은 redirect 해라
def block_websites(websites, redirect_ip="127.0.0.1"):
# 운영체제 호스트 파일 경로
host_file = r"C:\Windows\System32\drivers\etc\hosts" if os.name == 'nt' else "/etc/hosts"
try:
# 호스트 파일 읽고 해당 상태 저장.
with open(host_file, 'r') as file:
content = file.readline()
# 차단 할 웹 사이트 추가
with open(host_file, 'a') as file:
for website in websites:
entry = f"{redirect_ip} {website}\n"
if entry not in content:
file.write(entry)
print(f"차단됨 : {website}")
print("웹사이트 차단이 완료 되었습니다.")
# 권한 오류
except PermissionError:
print("관리자 권한으로 실행 해야 합니다.")
# 에상치 못한 에러 발생
except Exception as e:
print(f"에러 발생: {e}")
* 차단하고자 하는 리스트
website_block_list = ["www.facebook.com", "www.coupang.com"]
* 함수 실행
block_websites(website_block_list)
* 프로그램 실행 전
* 프로그램 실행 후
* 전체 코드 (웹 사이트 차단 프로그램)
# 시스템의 설정 파일을 변경하기 위한 모듈
import os
# block_websites함수 : website에 들어가는 값들은 redirect 해라
def block_websites(websites, redirect_ip="127.0.0.1"):
# 운영체제 호스트 파일 경로
host_file = r"C:\Windows\System32\drivers\etc\hosts" if os.name == 'nt' else "/etc/hosts"
try:
# 호스트 파일 읽고 해당 상태 저장.
with open(host_file, 'r') as file:
content = file.readline()
# 차단 할 웹 사이트 추가
with open(host_file, 'a') as file:
for website in websites:
entry = f"{redirect_ip} {website}\n"
if entry not in content:
file.write(entry)
print(f"차단됨 : {website}")
print("웹사이트 차단이 완료 되었습니다.")
# 권한 오류
except PermissionError:
print("관리자 권한으로 실행 해야 합니다.")
# 에상치 못한 에러 발생
except Exception as e:
print(f"에러 발생: {e}")
website_block_list = ["zdnet.co.kr", "www.coupang.com"]
block_websites(website_block_list)
그러나 의도치 않게 차단을 하였으면 직접 파일을 들어 가서 수정할 수 있지만 프로그램을 사용해서 허용하게 할 수 있다.
* 전체 코드 (웹 사이트 허용 프로그램)
# 시스템의 설정 파일을 변경하기 위한 모듈
import os
# 웹 사이트 차단을 해제하는 함수
def reslove_website(websites):
# 운영체제 호스트 파일 경로
host_file = r"C:\Windows\System32\drivers\etc\hosts" if os.name == "nt" else "/etc/hosts"
try:
# 호스트 파일에 있는 각줄들 요소로 변환하고 리스트 안에 넣음.
with open(host_file, 'r') as file:
lines = file.readlines()
# 차단된 웹사이트 제거
with open(host_file, 'w') as file:
for line in lines:
# website리스트 중에서 하나라도 삭제대상이 없다면
if not any(website in line for website in websites):
# 줄을 파일에 다시 작성
file.write(line)
else:
# 대상이 있으면 다시 작성X(다시 새로 작성될때 없어짐.)
print(f"차단 해제됨: {line.strip()}")
print("웹 사이트 차단이 해제되었습니다.")
except PermissionError:
print("관리자의 권한이 필요합니다.")
except Exception as e:
print(f"에러 발생: {e}")
websites_to_unblock = ["zdnet.co.kr","www.coupang.com"]
reslove_website(websites_to_unblock)
'Programing > Python' 카테고리의 다른 글
33. 파이썬을 이용한 데이터 시각화 프로그램 만드는 법 (0) | 2024.12.08 |
---|---|
32. flask로 웹사이트 간단하게 만들기 (0) | 2024.12.07 |
30. 파이썬으로 만드는 TIC-TAC-TOE 게임 (2) | 2024.12.04 |
29. 파이썬으로 만드는 숫자 맞추기 게임 (0) | 2024.12.02 |
28. 파이썬으로 하는 엑셀 작업 (0) | 2024.11.30 |