일반적으로, 다음과 같은 것을 통해 네트워크 트래픽을 차단할 수 있다.
URL 차단을 해 보자.
사용자가 입력하거나, 파일을 통해 관리할 수 있도록 하였다.
WinDivert 설치
WinDivert
페이지에서 필요한 파일을 다운로드 하자.
Python 코드
Python과 WinDivert를 사용해 URL을 차단하는 코드를 작성할 수 있다.
아래 예시는 기본적인 구조를 담고 있다:
import pydivert
import re
# 차단할 URL 목록을 사용자가 설정하도록
blocked_urls = [
"example.com",
"blockedsite.com",
]
# 패킷 캡처를 위해 WinDivert 초기화
with pydivert.WinDivert("tcp.DstPort == 80 or tcp.DstPort == 443") as w:
for packet in w:
if packet.is_outbound:
try:
# HTTP 요청에서 Host를 추출
http_data = packet.payload.decode(errors="ignore")
host = re.search(r"Host: ([\w\.]+)", http_data)
if host:
domain = host.group(1)
if domain in blocked_urls:
print(f"차단된 URL 탐지: {domain}")
continue # 패킷을 무시하고 차단함
except Exception as e:
print(f"패킷 처리 중 오류: {e}")
# 패킷을 허용함
w.send(packet)
차단할 URL 목록을 파일에서 가져오거나, 코드에서 사용자 입력을 받을 수 있도록 수정할 수 있다.
def load_blocked_urls_from_file(filepath):
try:
with open(filepath, 'r') as file:
return [line.strip() for line in file if line.strip()]
except FileNotFoundError:
print(f"{filepath} 파일을 찾을 수 없습니다.")
return []
# 차단할 URL 목록을 외부 파일에서 가져오기
blocked_urls = load_blocked_urls_from_file('blocked_urls.txt')
# 패킷 캡처 코드 반복...
blocked_urls.txt
파일에는 차단할 URL을 한 줄씩 작성해두면 위 스크립트가 이를 차단해 준다.
example.com
blockedsite.com
이 코드는 HTTP(S) 트래픽에서 URL을 분석해 차단 목록에 있는 경우 해당 트래픽을 차단하는 방식으로 동작한다. WinDivert를 사용해 네트워크 패킷을 캡처하고 필터링하는 과정을 보여주며, 파일에서 차단할 URL을 동적으로 불러오는 방식도 구현할 수 있다.