Skip to content

Commit e25c2c5

Browse files
first commit
0 parents  commit e25c2c5

File tree

3 files changed

+101
-0
lines changed

3 files changed

+101
-0
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
geckodriver.*
2+
log_toast.log
3+
profile_path

Turquoise_Logger.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
from datetime import datetime
2+
import logging
3+
import os
4+
5+
logging.getLogger("scapy.runtime").setLevel(logging.ERROR)
6+
os.system('')
7+
8+
class Logger:
9+
def __init__(self):
10+
self.script_name = 'Selenium'
11+
12+
def RGB(self, red=None, green=None, blue=None, bg=False):
13+
'''Logger prettifier'''
14+
if(bg == False and red != None and green != None and blue != None):
15+
return f'\u001b[38;2;{red};{green};{blue}m'
16+
elif(bg == True and red != None and green != None and blue != None):
17+
return f'\u001b[48;2;{red};{green};{blue}m'
18+
elif(red == None and green == None and blue == None):
19+
return '\u001b[0m'
20+
21+
def logging(self):
22+
'''Reusable logger'''
23+
# defaults = str(datetime.today().strftime("%d-%m-%Y_%H-%M-%S"))
24+
g0 = self.RGB()
25+
g1 = self.RGB(127, 255, 212)
26+
g2 = self.RGB(0, 0, 128)
27+
bold = "\033[1m"
28+
reset = "\033[0m"
29+
logging.basicConfig(filename='log_toast.log', encoding='UTF-8', level=logging.DEBUG, format='%(asctime)s [%(name)s] %(message)s')
30+
logger = logging.getLogger(f'{self.script_name}')
31+
logger.setLevel(logging.DEBUG)
32+
ch = logging.StreamHandler()
33+
ch.setLevel(logging.DEBUG)
34+
formatter = logging.Formatter('%(asctime)s,%(msecs)03d {}{}[%(name)s]{}{} %(message)s'.format(bold, g1, g0, reset), '%H:%M:%S')
35+
ch.setFormatter(formatter)
36+
logger.addHandler(ch)
37+
38+
return logger

sel-module.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
from seleniumwire import webdriver
2+
from selenium.webdriver.firefox.options import Options
3+
import Turquoise_Logger
4+
5+
6+
logg = Turquoise_Logger.Logger()
7+
log = logg.logging()
8+
initial_url = "https://www.google.com"
9+
10+
options = Options()
11+
options.add_argument('--headless')
12+
options.set_preference('dom.webnotifications.enabled', False)
13+
options.set_preference('dom.push.enabled', False)
14+
options.set_preference('dom.webdriver.enabled', False)
15+
options.set_preference('useAutomationExtension', False)
16+
options.set_preference('privacy.trackingprotection.enabled', True)
17+
profile_path = open('profile_path', 'r').read()
18+
19+
driver = webdriver.Firefox(firefox_profile=profile_path, options=options)
20+
driver.implicitly_wait(10)
21+
22+
def connection_attempts(initial_url=initial_url, attempts_count=2):
23+
'''Commits attempts_count connection attempts to the given initial_url'''
24+
error = None
25+
while attempts_count:
26+
try:
27+
driver.get(initial_url)
28+
except Exception as error:
29+
log.error(f'{error}')
30+
31+
attempts_count -= 1
32+
33+
if not error:
34+
attempts_num = attempts_count
35+
attempts_count = 0
36+
log.debug(f'Realized in {attempts_num} attempts')
37+
elif attempts_count == 0:
38+
log.debug('Failed to connect')
39+
40+
41+
def requests_vars_get():
42+
'''Outputs REQ (Request URL), STAT (Status Code) and CT (Content Type) within responses in requests'''
43+
for request in driver.requests:
44+
if request.response:
45+
log.error(
46+
f'REQ: {request.url}'
47+
)
48+
49+
log.debug(
50+
f'STAT: {request.response.status_code}'
51+
)
52+
53+
log.debug(
54+
'CT:' + request.response.headers['content-type'] + '\n'
55+
)
56+
57+
connection_attempts()
58+
requests_vars_get()
59+
60+
driver.quit()

0 commit comments

Comments
 (0)