part 5 
from keras.models import Sequential
from keras.layers import LSTM, Dense
from keras.utils import plot\_model
import numpy as np

# Define the LSTM model architecture
model = Sequential()
model.add(LSTM(64, input\_shape=(100, 1)))
model.add(Dense(1, activation='sigmoid'))

# Compile the model
model.compile(loss='binary\_crossentropy', optimizer='adam', metrics=['accuracy'])

# Generate some dummy data for training
X\_train = np.random.rand(1000, 100, 1)
y\_train = np.random.randint(2, size=(1000, 1))

# Train the model
model.fit(X\_train, y\_train, epochs=375, batch\_size=64)

# Save the model as an h5 file
model.save('lstm\_model.h5')

# Visualize the model architecture
plot\_model(model, to\_file='lstm\_model.png', show\_shapes=True)

import pandas as pd
import numpy as np
import keras
import tensorflow
from keras.preprocessing.text import Tokenizer
#from keras.preprocessing.sequence import pad\_sequences
#from keras\_preprocessing.sequence import pad\_sequences
from tensorflow.keras.preprocessing.sequence import pad\_sequences
from keras.models import Sequential
from keras.layers import Dense, Embedding, LSTM, SpatialDropout1D
from sklearn.model\_selection import train\_test\_split
from sklearn.preprocessing import LabelEncoder

# Load CSV file with URLs and labels
df= pd.read\_csv("phishing\_site\_urls.csv")
print(df)

# Preprocess URLs by tokenizing and padding sequences
tokenizer = Tokenizer(num\_words=5000, split=' ')
tokenizer.fit\_on\_texts(df['URL'].values)
X = tokenizer.texts\_to\_sequences(df['URL'].values)
X = pad\_sequences(X)

# Encode labels as categorical data
label\_encoder = LabelEncoder()
Y = label\_encoder.fit\_transform(df['Label'].values)

# Split data into training and testing sets
X\_train, X\_test, Y\_train, Y\_test = train\_test\_split(X, Y, test\_size=0.2, random\_state=42)

# Define Keras model
model = Sequential()
model.add(Embedding(5000, 128, input\_length=X.shape[1]))
model.add(SpatialDropout1D(0.4))
model.add(LSTM(128, dropout=0.4, recurrent\_dropout=0.4))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary\_crossentropy', optimizer='adam', metrics=['accuracy'])

# Train Keras model
model.fit(X\_train, Y\_train, epochs=1, batch\_size=32)

# Evaluate Keras model on test data
score, accuracy = model.evaluate(X\_test, Y\_test, batch\_size=32)
print("Accuracy: %.2f" % (accuracy\*100))

import requests

#url = df['URL']

response = requests.get(df['URL'])

if response.status\_code >= 200 and response.status\_code < 300:
 print("URL is good")
else:
 print("URL is bad")

import urllib.request

url =df['URL']

try:
 urllib.request.urlopen(url)
 print("URL is good")
except:
 print("URL is bad")

import pandas as pd
import requests

# Read CSV file into a DataFrame
df = pd.read\_csv("phishing\_site\_urls.csv")

# Iterate over each row in the DataFrame
for index, row in df.iterrows():
 url = row["URL"]
 #url=url[100]
 try:
 response = requests.get(url)
 if response.status\_code >= 200 and response.status\_code < 300:
 print(f"{url} is good")
 else:
 print(f"{url} is bad")

import csv
import urllib.request

# Open the CSV file
with open('phishing\_site\_urls.csv', 'r') as file:
 reader = csv.reader(file)

 # Iterate over each row in the CSV file
 for row in reader:
 url = row[0]
 try:
 urllib.request.urlopen(url)
 print(f"{url} is good")
 except:
 print(f"{url} is bad")

import csv
import urllib.request
from urllib.error import URLError, HTTPError

# Open the CSV file
with open('phishing\_site\_urls.csv', 'r') as file:
 reader = csv.reader(file)

 # Iterate over each row in the CSV file
 for row in reader:
 url = row[0]
 try:
 response = urllib.request.urlopen(url)
 if response.status == 200:
 print(f"{url} is good")
 else:
 print(f"{url} returned status code {response.status}")
 except HTTPError as e:
 print(f"{url} returned HTTP error {e.code}")
 except URLError as e:
 print(f"{url} resulted in a URL error: {e.reason}")
 except:
 print(f"{url} could not be checked due to an unknown error")
파트 5 keras.models에서 Sequential을 가져옵니다.keras.layers에서 LSTM, Dense를 임포트합니다.keras.utils에서 plot\_model을 가져옵니다.numpy를 np로 가져옵니다.# LSTM 모델 아키텍처 정의model = Sequential()model.add(LSTM(64, input\_shape=(100, 1)))model.add(Dense(1, 활성화='시그모이드'))# 모델 컴파일model.compile(loss='binary\_crossentropy', optimizer='adam', metrics=['accuracy'])# 훈련용 더미 데이터 생성X\_train = np.random.rand(1000, 100, 1)y\_train = np.random.randint(2, size=(1000, 1))# 모델 훈련model.fit(X\_train, y\_train, epochs=375, batch\_size=64)# 모델을 h5 파일로 저장model.save('lstm\_model.h5')# 모델 아키텍처 시각화plot\_model(model, to\_file='lstm\_model.png', show\_shapes=True)팬더를 pd로 임포트numpy를 np로 임포트import keras텐서플로 임포트keras.preprocessing.text에서 토큰화 도구 가져오기#keras.preprocessing.sequence에서 패드\_시퀀스 가져오기#from keras\_preprocessing.sequence import pad\_sequencesfrom tensorflow.keras.preprocessing.sequence import pad\_sequenceskeras.models에서 시퀀셜 가져오기keras.layers에서 밀도, 임베딩, LSTM, 공간 드롭아웃1D를 가져옵니다.sklearn.model\_selection에서 train\_test\_split 가져오기sklearn.preprocessing에서 LabelEncoder를 가져옵니다.# URL 및 레이블이 포함된 CSV 파일 로드df= pd.read\_csv("phishing\_site\_urls.csv")print(df)# 토큰화 및 패딩 시퀀스로 URL 전처리토큰화기 = 토큰화기(num\_words=5000, split=' ')tokenizer.fit\_on\_texts(df['URL'].values)X = 토큰라이저.텍스트\_to\_시퀀스(df['URL'].값)X = pad\_sequences(X)# 라벨을 범주형 데이터로 인코딩하기label\_encoder = LabelEncoder()Y = label\_encoder.fit\_transform(df['Label'].values)# 데이터를 훈련 및 테스트 세트로 분할X\_train, X\_test, Y\_train, Y\_test = train\_test\_split(X, Y, test\_size=0.2, random\_state=42)# 케라스 모델 정의model = Sequential()model.add(Embedding(5000, 128, input\_length=X.shape[1]))model.add(SpatialDropout1D(0.4))model.add(LSTM(128, dropout=0.4, recurrent\_dropout=0.4))model.add(Dense(1, 활성화='시그모이드'))model.compile(loss='binary\_crossentropy', optimizer='adam', metrics=['accuracy'])# 케라스 모델 훈련model.fit(X\_train, Y\_train, epochs=1, batch\_size=32)# 테스트 데이터에 대한 케라스 모델 평가score, accuracy = model.evaluate(X\_test, Y\_test, batch\_size=32)print("정확도: %.2f" % (정확도\*100))요청 가져오기#url = df['URL']response = requests.get(df['URL'])response.status\_code >= 200이고 response.status\_code < 300인 경우: print("URL 정상")else: print("URL이 잘못되었습니다")urllib.request 가져오기url =df['URL']try: urllib.request.urlopen(url) print("URL은 양호합니다")예외 print("URL이 나쁩니다")팬더를 PD로 임포트요청 가져오기# 데이터프레임으로 CSV 파일 읽기df = pd.read\_csv("phishing\_site\_urls.csv")# 데이터 프레임의 각 행을 반복합니다.인덱스에 대해 df.iterrows()의 행을 반복합니다: url = row["URL"] #url=url[100] try: response = requests.get(url) response.status\_code >= 200이고 response.status\_code < 300인 경우: print(f"{url} is good") else: print(f"{url} is bad")csv 가져오기import urllib.request# CSV 파일 열기open('phishing\_site\_urls.csv', 'r')을 파일로 사용합니다: reader = csv.reader(file) # CSV 파일의 각 행을 반복합니다. 행에 대해 반복합니다: url = row[0] try: urllib.request.urlopen(url) print(f"{url} is good") 예외 print(f"{url} is bad")가져 오기 CSVimport urllib.requesturllib.error에서 URLError, HTTPError를 임포트합니다.# CSV 파일 열기open('phishing\_site\_urls.csv', 'r')을 파일로 사용합니다: reader = csv.reader(file) # CSV 파일의 각 행을 반복합니다. 행에 대해 반복합니다: url = row[0] try: response = urllib.request.urlopen(url) response.status == 200이면 print(f"{url} is good") else: print(f"{url} 반환된 상태 코드 {response.status}") HTTPError를 e로 제외합니다: print(f"{url} 반환된 HTTP 오류 {e.code}") URLError를 e로 제외합니다: print(f"{url} 결과 URL 오류 발생: {e.reason}") 예외 print(f"{url}을 알 수 없는 오류로 인해 확인할 수 없습니다")