This commit is contained in:
piair 2023-03-27 22:47:29 +02:00
parent 339775bdf4
commit 098b934e96
4 changed files with 47 additions and 45 deletions

45
V5.py
View File

@ -22,6 +22,37 @@ def printf(e, f = ""):
custom_sleep = CustomSleep custom_sleep = CustomSleep
# create a webdriver
def firefox_driver(mobile=False, headless=False):
PC_USER_AGENT = (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
"AppleWebKit/537.36 (KHTML, like Gecko)"
"Chrome/112.0.0.0 Safari/537.36 Edg/110.0.1587.56")
MOBILE_USER_AGENT = (
"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X)"
"AppleWebKit/605.1.15 (KHTML, like Gecko)"
"CriOS/107.0.5060.63 Mobile/15E148 Safari/604.1"
)
options = Options()
options.set_preference('intl.accept_languages', 'fr-FR, fr')
if proxy_enabled :
setup_proxy(proxy_address,proxy_port, options)
options.set_preference("browser.link.open_newwindow", 3)
if FAST :
options.set_preference("permissions.default.image", 2) #disable image loading. You shouldn't use it except if really nessecary
if headless:
options.add_argument("-headless")
if mobile :
options.set_preference("general.useragent.override", MOBILE_USER_AGENT)
driver = webdriver.Firefox(options=options)
driver.set_window_size(1070 + hash(_mail)%20 , 1900 + hash(_password + "salt")%10) # mobile resolution are crazy high now, right ?
else :
options.set_preference("general.useragent.override", PC_USER_AGENT)
driver = webdriver.Firefox(options=options)
driver.set_window_size(1900 + hash(_mail)%20 , 1070 + hash(_password + "salt")%10)
return(driver)
def log_error(error, ldriver=driver, log=FULL_LOG): def log_error(error, ldriver=driver, log=FULL_LOG):
global driver global driver
if ldriver is None: if ldriver is None:
@ -38,22 +69,22 @@ def log_error(error, ldriver=driver, log=FULL_LOG):
except : except :
ldriver.save_screenshot("screenshot.png") ldriver.save_screenshot("screenshot.png")
if not log: if not log:
embed = discord.Embed( embed = Embed(
title="An Error has occured", title="An Error has occured",
description=str(error), description=str(error),
colour=Colour.red(), colour=Colour.red(),
) )
else: else:
embed = discord.Embed( embed = Embed(
title="Full log is enabled", title="Full log is enabled",
description=str(error), description=str(error),
colour=Colour.blue(), colour=Colour.blue(),
) )
file = discord.File("screenshot.png") file = File("screenshot.png")
embed.set_image(url="attachment://screenshot.png") embed.set_image(url="attachment://screenshot.png")
embed.set_footer(text=_mail) embed.set_footer(text=_mail)
webhookFailure.send(embed=embed, file=file) webhookFailure.send(embed=embed, file=file)
webhookFailure.send(file=discord.File("page.html")) webhookFailure.send(file=File("page.html"))
@ -383,7 +414,7 @@ def login(ldriver):
if ('Abuse' in ldriver.current_url) : if ('Abuse' in ldriver.current_url) :
log_error("account suspended") log_error("account suspended")
raise Banned() raise Banned()
save_cookies(driver) save_cookies(driver, _mail)
for id in ["KmsiCheckboxField","iLooksGood", "idSIButton9", "iCancel"]: for id in ["KmsiCheckboxField","iLooksGood", "idSIButton9", "iCancel"]:
try: try:
ldriver.find_element(By.ID, id).click() ldriver.find_element(By.ID, id).click()
@ -418,7 +449,7 @@ def login(ldriver):
def cookie_login(): def cookie_login():
ldriver.get("https://login.live.com") ldriver.get("https://login.live.com")
try : try :
load_cookies(ldriver) load_cookies(ldriver, _mail)
except FileNotFoundError : except FileNotFoundError :
print("Creating cookies file") print("Creating cookies file")
return(False) return(False)
@ -562,7 +593,7 @@ def log_points(account="unknown"):
if DISCORD_ENABLED_SUCCESS: if DISCORD_ENABLED_SUCCESS:
if DISCORD_EMBED: if DISCORD_EMBED:
embed = discord.Embed( embed = Embed(
title=f"{account_name} actuellement à {str(points)} points", colour=Colour.green() title=f"{account_name} actuellement à {str(points)} points", colour=Colour.green()
) )
embed.set_footer(text=account_name) embed.set_footer(text=account_name)

View File

@ -1,36 +1,7 @@
from modules.imports import * from modules.imports import *
from modules.config import *
# create a webdriver
def firefox_driver(mobile=False, headless=False):
PC_USER_AGENT = (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
"AppleWebKit/537.36 (KHTML, like Gecko)"
"Chrome/112.0.0.0 Safari/537.36 Edg/110.0.1587.56")
MOBILE_USER_AGENT = (
"Mozilla/5.0 (iPhone; CPU iPhone OS 15_5 like Mac OS X)"
"AppleWebKit/605.1.15 (KHTML, like Gecko)"
"CriOS/107.0.5060.63 Mobile/15E148 Safari/604.1"
)
options = Options()
options.set_preference('intl.accept_languages', 'fr-FR, fr')
if proxy_enabled :
setup_proxy(proxy_address,proxy_port, options)
options.set_preference("browser.link.open_newwindow", 3)
if FAST :
options.set_preference("permissions.default.image", 2) #disable image loading. You shouldn't use it except if really nessecary
if headless:
options.add_argument("-headless")
if mobile :
options.set_preference("general.useragent.override", MOBILE_USER_AGENT)
driver = webdriver.Firefox(options=options)
driver.set_window_size(1070 + hash(_mail)%20 , 1900 + hash(_password + "salt")%10) # mobile resolution are crazy high now, right ?
else :
options.set_preference("general.useragent.override", PC_USER_AGENT)
driver = webdriver.Firefox(options=options)
driver.set_window_size(1900 + hash(_mail)%20 , 1070 + hash(_password + "salt")%10)
return(driver)
def setup_proxy(ip, port, options, socks=False) : def setup_proxy(ip, port, options, socks=False) :
PROXY = f"{ip}:{port}" PROXY = f"{ip}:{port}"
if socks : if socks :
@ -54,12 +25,12 @@ def rgpd_popup(driver) -> None:
pass pass
# save webdriver cookies # save webdriver cookies
def save_cookies(): def save_cookies(driver, _mail):
pickle.dump(driver.get_cookies(), open(f"{'/'.join(__file__.split('/')[:-1])}/user_data/cookies/{_mail}.pkl", "wb")) pickle.dump(driver.get_cookies(), open(f"{'/'.join(__file__.split('/')[:-2])}/user_data/cookies/{_mail}.pkl", "wb"))
# load cookies previously saved to the driver # load cookies previously saved to the driver
def load_cookies(driver): def load_cookies(driver, _mail):
cookies = pickle.load(open(f"{'/'.join(__file__.split('/')[:-1])}/user_data/cookies/{_mail}.pkl", "rb")) cookies = pickle.load(open(f"{'/'.join(__file__.split('/')[:-2])}/user_data/cookies/{_mail}.pkl", "rb"))
for cookie in cookies: for cookie in cookies:
driver.add_cookie(cookie) driver.add_cookie(cookie)
@ -78,7 +49,7 @@ def send_keys_wait(element, keys):
# Wait for the presence of the element identifier or [timeout]s # Wait for the presence of the element identifier or [timeout]s
def wait_until_visible(search_by: str, identifier: str, timeout = 20, browser = driver) -> None: def wait_until_visible(search_by: str, identifier: str, timeout = 20, browser = None) -> None:
try : try :
WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((search_by,identifier)), "element not found") WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((search_by,identifier)), "element not found")
except TimeoutException as e: except TimeoutException as e:

View File

@ -1,5 +1,3 @@
from selenium.common.exceptions import TimeoutException, NoSuchElementException, ElementClickInterceptedException
class Banned(Exception): class Banned(Exception):
pass pass

View File

@ -8,15 +8,17 @@ from time import sleep
from requests import get from requests import get
from selenium import webdriver from selenium import webdriver
from selenium.common import exceptions from selenium.common import exceptions
from selenium.common.exceptions import WebDriverException
from selenium.webdriver.common.by import By from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options from selenium.webdriver.firefox.options import Options
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select from selenium.webdriver.support.ui import Select
from selenium.common.exceptions import WebDriverException, TimeoutException, NoSuchElementException, ElementClickInterceptedException
from pyotp import TOTP from pyotp import TOTP
from pyvirtualdisplay import Display from pyvirtualdisplay import Display
from pyvirtualdisplay.smartdisplay import SmartDisplay from pyvirtualdisplay.smartdisplay import SmartDisplay
import pickle import pickle
from datetime import timedelta, datetime from datetime import timedelta, datetime
from discord import Embed, Colour, File