-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
151 lines (115 loc) · 4.31 KB
/
Copy pathmain.py
File metadata and controls
151 lines (115 loc) · 4.31 KB
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
#Importation de modules
import mysql.connector
import csv
from urllib.parse import urlparse
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
#Déclaration des variables
resultat = ""
categorie_resultat = ""
#Connexion au base de données
db = mysql.connector.connect(
host = "localhost",
user = "root",
password = "root",
database = "domaines"
)
#Demande du fichier à l'utilisateur
csv_file = input("Insérer chemin d'accès du csv :")
#Ouverture de l'historique CSV
historique = open(csv_file,'r', encoding='UTF-8')
#Ouverture du CSV de résultat
CSV_result = open('resultat_csv.csv', 'w', newline='', encoding='utf8')
#Ecriture de l'entête
writer = csv.DictWriter(CSV_result, fieldnames=['URL', 'Catégorie', 'Date'])
writer.writeheader()
#Créer un curseur de base de données pour effectuer des opérations SQL
cur = db.cursor()
def demande_base_donnee(resultat):
#Création de la requete SQL
requete_domaine = "SELECT `categorie` FROM `domaines` WHERE `domaine`= '" + resultat + "'"
print(requete_domaine)
#Créer un curseur de base de données pour effectuer des opérations SQL
cur = db.cursor()
#Exécuter le curseur avec la méthode execute() et transmis la requête SQL
cur.execute(requete_domaine)
#Récupèrer toutes les lignes de la dernière instruction exécutée.
global res
res = cur.fetchall()
#Affichage du résultat
for line in res:
print(line)
global resultat_sql
resultat_sql = line
resultat_sql = resultat_sql[0]
res = bool(res)
def demande_bluecoat(resultat):
#Site de BlueCoat
demande = "https://sitereview.bluecoat.com/#/lookup-result"
#Accès au site BlueCoat
driver = webdriver.Chrome(executable_path="chromedriver.exe")
driver.get(demande)
#Barre de recherche "Saisissez une URL"
champ_entrer = driver.find_element(By.ID, "txtUrl")#id de la barre de recherche
champ_entrer.send_keys(resultat)
#Bouton "Vérifier la catégorie"
bouton = driver.find_element(By.ID, "btnLookup")#id du bouton de recherche
bouton.click()
#Délai pour la redirection
time.sleep(1)
#Récupérer la catégorie
categorie = driver.find_elements(By.CLASS_NAME, "clickable-category")#id de la catégorie
#Affichage de la catégorie
print("L'url saissis appartient à la catégorie :")
for r in categorie:
global resultat_bluecoat
resultat_bluecoat = r.text
print(resultat_bluecoat)
# Fermeture de la fenêtre
driver.close()
lecture = csv.DictReader(historique)
for ligne in lecture :
historique_url = ligne['URL']
if 'Date/heure d’accès\xa0–\xa0UTC+01:00 (dd/MM/yyyy)[DST]' in ligne :
date_url = ligne["Date/heure d’accès\xa0–\xa0UTC+01:00 (dd/MM/yyyy)[DST]"]
else:
date_url = ligne['Date/heure de la dernière visite\xa0–\xa0UTC+01:00 (dd/MM/yyyy)[DST]']
# Edge = 'Date/heure d’accès\xa0–\xa0UTC+01:00 (dd/MM/yyyy)[DST]'
# ou
# Chrome = 'Date/heure de la dernière visite\xa0–\xa0UTC+01:00 (dd/MM/yyyy)[DST]'
#Fonction de recherche du nom de domaine
result_url = urlparse(historique_url)
resultat = result_url.hostname
print(resultat)
if resultat != None :
#Recherche du sous-domaine
if "www." in resultat :
resultat = resultat[4:]
else:
resultat = resultat[0:]
else:
resultat = "file"
demande_base_donnee(resultat)
writer.writerow({'URL' : resultat, 'Catégorie': resultat_sql, 'Date': date_url})
#Reinitialisation des variables
requete_domaine = ""
result_url = ""
if res == False :
demande_bluecoat(resultat)
# Écriture des données
writer.writerow({'URL' : resultat, 'Catégorie': resultat_bluecoat, 'Date': date_url})
#Création d'un curseur de base de données pour effectuer des opérations SQL
cur = db.cursor()
#Création de la requête SQL pour l'ajout des catégories et domaines
val = [resultat,resultat_bluecoat]
insertion_requete = "INSERT INTO `domaines` (`domaine`, `categorie`) VALUES (%s, %s)"
cur.execute(insertion_requete,val)
db.commit()
print()
resultat = ""
print(cur.rowcount, "nouveaux domaines et catégories ont été insérés.")
#Fermeture des différents fichiers
db.close()
historique.close()
CSV_result.close()