oh boy i probably just broke everything
This commit is contained in:
parent
f8e9daaedd
commit
3155b545dc
517
V4.py
517
V4.py
|
@ -1,20 +1,13 @@
|
|||
#!/usr/bin/python3.10
|
||||
import asyncio
|
||||
import configparser
|
||||
from csv import reader
|
||||
from os import sys, system, path
|
||||
from random import choice, randint, shuffle, uniform
|
||||
from re import findall, search
|
||||
from sys import platform
|
||||
from time import sleep, time
|
||||
from time import sleep
|
||||
from requests import get
|
||||
from datetime import timedelta
|
||||
import discord
|
||||
from discord import ( # Importing discord.Webhook and discord.RequestsWebhookAdapter
|
||||
Colour,
|
||||
RequestsWebhookAdapter,
|
||||
Webhook,
|
||||
)
|
||||
from selenium import webdriver
|
||||
from selenium.common import exceptions
|
||||
from selenium.webdriver.common.by import By
|
||||
|
@ -23,120 +16,12 @@ from selenium.webdriver.firefox.options import Options
|
|||
from selenium.webdriver.support.ui import WebDriverWait
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.common.exceptions import TimeoutException, NoSuchElementException
|
||||
import argparse
|
||||
|
||||
from modules.db import add_to_database
|
||||
|
||||
|
||||
"""
|
||||
Setup for option, like --override or --fulllog
|
||||
"""
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
parser.add_argument(
|
||||
"-o", "--override", help="override", dest="override", action="store_true"
|
||||
)
|
||||
parser.add_argument(
|
||||
"-l", "--log", dest="log", help="enable logging in terminal", action="store_true"
|
||||
)
|
||||
parser.add_argument(
|
||||
"-fl",
|
||||
"--fulllog",
|
||||
dest="fulllog",
|
||||
help="enable full logging in discord",
|
||||
action="store_true",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-r", "--risky", help="make the program faster, probably better risk of ban", dest="fast", action="store_true"
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"-c", "--config", help="Choose a specific config file", type=argparse.FileType('r')
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
CUSTOM_START = args.override
|
||||
LOG = args.log
|
||||
FULL_LOG = args.fulllog
|
||||
FAST = args.fast
|
||||
if CUSTOM_START :
|
||||
LOG = True
|
||||
|
||||
#SOON (maybe) (no)
|
||||
#logpath = ("/".join(__file__.split("/")[:-1])+"/LogFile.out")
|
||||
#logfile = open(logpath, "w")
|
||||
|
||||
|
||||
|
||||
# gloabal variables used later in the code
|
||||
LINUX_HOST = platform == "linux" # if the computer running this programm is linux, it allow more things
|
||||
START_TIME = time()
|
||||
from modules.config import *
|
||||
from modules.tools import *
|
||||
|
||||
global driver
|
||||
driver = None
|
||||
|
||||
|
||||
if LINUX_HOST:
|
||||
import enquiries
|
||||
else:
|
||||
system("") # enable colors in windows cmd
|
||||
|
||||
#reading configuration
|
||||
|
||||
config_path = f"{path.abspath( path.dirname( __file__ ) )}/user_data/config.cfg"
|
||||
if args.config :
|
||||
config_path = path.abspath(args.config.name)
|
||||
|
||||
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read(config_path)
|
||||
|
||||
# path configurations
|
||||
MotPath = config["PATH"]["motpath"]
|
||||
CREDENTIALS_PATH = config["PATH"]["logpath"]
|
||||
|
||||
|
||||
# discord configuration
|
||||
DISCORD_SUCCESS_LINK = config["DISCORD"]["successlink"]
|
||||
DISCORD_ERROR_LINK = config["DISCORD"]["errorlink"]
|
||||
DISCORD_ENABLED_ERROR = config["DISCORD"]["DiscordErrorEnabled"] == "True"
|
||||
DISCORD_ENABLED_SUCCESS = config["DISCORD"]["DiscordSuccessEnabled"]== "True"
|
||||
|
||||
if DISCORD_ENABLED_ERROR:
|
||||
webhookFailure = Webhook.from_url(DISCORD_ERROR_LINK, adapter=RequestsWebhookAdapter())
|
||||
if DISCORD_ENABLED_SUCCESS:
|
||||
webhookSuccess = Webhook.from_url(DISCORD_SUCCESS_LINK, adapter=RequestsWebhookAdapter())
|
||||
|
||||
# base settings
|
||||
FidelityLink = config["SETTINGS"]["FidelityLink"]
|
||||
DISCORD_EMBED = config["SETTINGS"]["embeds"] == "True" #print new point value in an embed
|
||||
Headless = config["SETTINGS"]["headless"] == "True"
|
||||
|
||||
# proxy settings
|
||||
proxy_enabled = config["PROXY"]["proxy_enabled"] == "True"
|
||||
proxy_address = config["PROXY"]["url"]
|
||||
proxy_port = config["PROXY"]["port"]
|
||||
|
||||
# MySQL settings
|
||||
sql_enabled = config["SQL"]["sql_enabled"] == "True"
|
||||
sql_usr = config["SQL"]["usr"]
|
||||
sql_pwd = config["SQL"]["pwd"]
|
||||
sql_host = config["SQL"]["host"]
|
||||
sql_database = config["SQL"]["database"]
|
||||
|
||||
# Other seetings
|
||||
IPV6_CHECKED = config["OTHER"]["ipv6"]
|
||||
CLAIM_AMAZON = config["OTHER"]["claim_amazon"]
|
||||
|
||||
|
||||
g = open(MotPath, "r", encoding="utf-8")
|
||||
lines = g.readlines()
|
||||
if len(lines) < 3 :
|
||||
Liste_de_mot = list(lines[0].split(","))
|
||||
else :
|
||||
Liste_de_mot = [x.replace('\n', "") for x in lines]
|
||||
g.close()
|
||||
|
||||
|
||||
def WaitUntilVisible(by, id, to = 20, browser = driver):
|
||||
|
@ -146,17 +31,6 @@ def WaitUntilVisible(by, id, to = 20, browser = driver):
|
|||
print(f"element not found after {to}s")
|
||||
|
||||
|
||||
def Timer(text="undefined"):
|
||||
return(f"[{_mail} - {timedelta(seconds = round(float(time() - START_TIME)))}] " + str(text))
|
||||
|
||||
|
||||
def check_ipv4():
|
||||
driver.get("https://api64.ipify.org")
|
||||
elm = driver.find_element(By.TAG_NAME, "body")
|
||||
if len(elm.text.split('.')) == 4 :
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
def claim_amazon():
|
||||
try :
|
||||
|
@ -196,14 +70,14 @@ def claim_amazon():
|
|||
webhookFailure.send(_mail +" - "+ fcode)
|
||||
return(1)
|
||||
else :
|
||||
LogError("impossible de localiser le code ")
|
||||
LogError("impossible de localiser le code ", driver)
|
||||
return(1)
|
||||
|
||||
else :
|
||||
LogError("la recuperation ne peux pas être automatique")
|
||||
LogError("la recuperation ne peux pas être automatique", driver)
|
||||
return(0)
|
||||
except Exception as e :
|
||||
LogError(f'problème dans la recuperation : {str(e)}')
|
||||
LogError(f'problème dans la recuperation : {str(e)}', driver)
|
||||
|
||||
|
||||
def setup_proxy(ip, port) :
|
||||
|
@ -242,22 +116,12 @@ def FirefoxDriver(mobile=False, Headless=Headless):
|
|||
return driver
|
||||
|
||||
|
||||
def printf(txt, end="", Mobdriver=driver):
|
||||
if LOG:
|
||||
print(Timer(txt))
|
||||
if FULL_LOG:
|
||||
try :
|
||||
LogError(Timer(txt), Mobdriver=Mobdriver)
|
||||
except Exception as e:
|
||||
print("\n" + Timer(e) + "\n" + Timer(txt) + "\n" )
|
||||
|
||||
|
||||
def CustomSleep(temps):
|
||||
try :
|
||||
if FAST and temps > 50:
|
||||
sleep(temps/10)
|
||||
return()
|
||||
if LOG or not LINUX_HOST: #only print sleep when user see it
|
||||
if not LOG or not LINUX_HOST: #only print sleep when user see it
|
||||
points = ["⢿", "⣻", "⣽", "⣾", "⣷", "⣯", "⣟", "⡿"]
|
||||
passe = 0
|
||||
for i in range(int(temps)):
|
||||
|
@ -273,37 +137,6 @@ def CustomSleep(temps):
|
|||
printf("attente annulée")
|
||||
|
||||
|
||||
def LogError(message, log=FULL_LOG, Mobdriver=None):
|
||||
print(f"\n\n\033[93m Erreur : {str(message)} \033[0m\n\n")
|
||||
if Mobdriver:
|
||||
gdriver = Mobdriver
|
||||
else:
|
||||
gdriver = driver
|
||||
|
||||
if LINUX_HOST and DISCORD_ENABLED_ERROR:
|
||||
with open("page.html", "w") as f:
|
||||
f.write(gdriver.page_source)
|
||||
|
||||
gdriver.save_screenshot("screenshot.png")
|
||||
if not log:
|
||||
embed = discord.Embed(
|
||||
title="An Error has occured",
|
||||
description=str(message),
|
||||
colour=Colour.red(),
|
||||
)
|
||||
else:
|
||||
embed = discord.Embed(
|
||||
title="Full log is enabled",
|
||||
description=str(message),
|
||||
colour=Colour.blue(),
|
||||
)
|
||||
|
||||
file = discord.File("screenshot.png")
|
||||
embed.set_image(url="attachment://screenshot.png")
|
||||
embed.set_footer(text=_mail)
|
||||
webhookFailure.send(embed=embed, file=file)
|
||||
webhookFailure.send(file=discord.File("page.html"))
|
||||
|
||||
|
||||
def progressBar(current, total=30, barLength=20, name="Progress"):
|
||||
percent = float(current + 1) * 100 / total
|
||||
|
@ -368,7 +201,7 @@ def PlayQuiz2(override=10):
|
|||
driver.execute_script("arguments[0].click();", elem)
|
||||
|
||||
except Exception as e:
|
||||
LogError("PlayQuiz2" + str(e))
|
||||
LogError("PlayQuiz2" + str(e), driver)
|
||||
break
|
||||
printf("PlayQuiz2 finis")
|
||||
|
||||
|
@ -387,7 +220,7 @@ def PlayQuiz8(override=3):
|
|||
if 'iscorrectoption="True" ' in Card.get_attribute("outerHTML"):
|
||||
ListeOfGood.append(f"rqAnswerOption{i-1}") # premier div = 3 ?
|
||||
except Exception as e:
|
||||
LogError(f"playquiz8 - 1 - {e}")
|
||||
LogError(f"playquiz8 - 1 - {e}", driver)
|
||||
shuffle(ListeOfGood)
|
||||
|
||||
for i in ListeOfGood:
|
||||
|
@ -401,7 +234,7 @@ def PlayQuiz8(override=3):
|
|||
try:
|
||||
driver.execute_script("arguments[0].click();", elem)
|
||||
except Exception as e:
|
||||
LogError(f"playquizz8 - 2 - {e}")
|
||||
LogError(f"playquizz8 - 2 - {e}", driver)
|
||||
except exceptions.NoSuchElementException as e :
|
||||
try :
|
||||
driver.refresh()
|
||||
|
@ -409,15 +242,15 @@ def PlayQuiz8(override=3):
|
|||
elem = driver.find_element(By.ID, i)
|
||||
elem.click()
|
||||
except Exception as e :
|
||||
LogError(f"playquizz8 - 5 - {e}")
|
||||
LogError(f"playquizz8 - 5 - {e}", driver)
|
||||
except Exception as e:
|
||||
if CUSTOM_START:
|
||||
printf(f"playquiz8 - 3 - {e}") # may append during
|
||||
else:
|
||||
LogError(f"playquizz8 - 3 - {e}")
|
||||
LogError(f"playquizz8 - 3 - {e}", driver)
|
||||
|
||||
except Exception as e:
|
||||
LogError(f"PlayQuiz8 - 4 - {e} \n ListOfGood : {str(ListeOfGood)}")
|
||||
LogError(f"PlayQuiz8 - 4 - {e} \n ListOfGood : {str(ListeOfGood)}", driver)
|
||||
|
||||
printf("PlayQuiz8 : fin ")
|
||||
|
||||
|
@ -438,8 +271,8 @@ def PlayQuiz4(override=None):
|
|||
RGPD()
|
||||
reponse = search('correctAnswer":"([^"]+)', txt)[1] # je suis pas sur qu'il y ait un espace
|
||||
reponse = reponse.replace("\\u0027", "'") # il faut cancel l'unicode avec un double \ (on replacer les caracteres en unicode en caracteres utf-8)
|
||||
printf(f"validation de la reponse ",end="\r",)
|
||||
printf(f"validation de la reponse {i+1}/{override} {reponse}", end="\r")
|
||||
printf(f"validation de la reponse ")
|
||||
printf(f"validation de la reponse {i+1}/{override} {reponse}")
|
||||
try:
|
||||
elem = driver.find_element(
|
||||
By.CSS_SELECTOR, f'[data-option="{reponse}"]'
|
||||
|
@ -449,7 +282,7 @@ def PlayQuiz4(override=None):
|
|||
driver.execute_script("arguments[0].click();", elem)
|
||||
|
||||
except Exception as e:
|
||||
LogError(f"PlayQuiz4 {str(e)}")
|
||||
LogError(f"PlayQuiz4 {str(e)}", driver)
|
||||
raise ValueError(e)
|
||||
printf("PlayQuiz4 : end")
|
||||
|
||||
|
@ -467,7 +300,7 @@ def PlayPoll():
|
|||
driver.execute_script("arguments[0].click();", elem)
|
||||
CustomSleep(uniform(2, 2.5))
|
||||
except Exception as e:
|
||||
LogError("PlayPoll" + str(e))
|
||||
LogError("PlayPoll" + str(e), driver)
|
||||
raise ValueError(e)
|
||||
printf("PlayPoll : end")
|
||||
|
||||
|
@ -506,7 +339,7 @@ def AllCard(): # fonction qui clique sur les cartes
|
|||
except Exception as e:
|
||||
printf(f"Allcard card {titre} error ({e})")
|
||||
except Exception as e:
|
||||
LogError(f"Dailycards {e}")
|
||||
LogError(f"Dailycards {e}", driver)
|
||||
|
||||
try:
|
||||
dailyCards()
|
||||
|
@ -552,7 +385,7 @@ def AllCard(): # fonction qui clique sur les cartes
|
|||
weekly_cards()
|
||||
break
|
||||
except Exception as e:
|
||||
LogError(f"weekly_cards, try n°{i+1} \n {e}")
|
||||
LogError(f"weekly_cards, try n°{i+1} \n {e}", driver)
|
||||
if i == 0 :
|
||||
driver.refresh()
|
||||
else :
|
||||
|
@ -560,18 +393,6 @@ def AllCard(): # fonction qui clique sur les cartes
|
|||
driver.refresh()
|
||||
|
||||
|
||||
"""
|
||||
send_keys_wait([selenium element:element, str:keys]) send the different keys to the field element, with a random time between each press to simulate human action.
|
||||
keys can be an string, but alos selenium keys
|
||||
"""
|
||||
def send_keys_wait(element, keys):
|
||||
for i in keys:
|
||||
element.send_keys(i)
|
||||
if FAST :
|
||||
pass
|
||||
else :
|
||||
sleep(uniform(0.1, 0.3))
|
||||
|
||||
|
||||
"""
|
||||
login() tries to login to your micrososft account.
|
||||
|
@ -599,29 +420,11 @@ def login():
|
|||
send_keys_wait(pwd, _password)
|
||||
pwd.send_keys(Keys.ENTER)
|
||||
CustomSleep(5)
|
||||
try:
|
||||
driver.find_element(By.ID, "KmsiCheckboxField").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
#printf(f"login - 2.1 - erreur validation bouton KmsiCheckboxField. pas forcement grave {e}")
|
||||
|
||||
try:
|
||||
driver.find_element(By.ID, "iLooksGood").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
#printf(f"login - 2.2 - erreur validation bouton iLooksGood. pas forcement grave {e}")
|
||||
|
||||
try:
|
||||
driver.find_element(By.ID, "idSIButton9").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
#printf(f"login - 2.3 - erreur validation bouton idSIButton9. pas forcement grave {e}")
|
||||
|
||||
try:
|
||||
driver.find_element(By.ID, "iCancel").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
#printf(f"login - 2.4 - erreur validation bouton iCancel. pas forcement grave {e}")
|
||||
for i in ["KmsiCheckboxField","iLooksGood", "idSIButton9", "iCancel"]:
|
||||
try:
|
||||
driver.find_element(By.ID, i).click()
|
||||
except Exception as e:
|
||||
pass
|
||||
try :
|
||||
elm = driver.find_element(By.TAG_NAME, "body")
|
||||
elm.send_keys(Keys.ENTER)
|
||||
|
@ -638,7 +441,7 @@ def login():
|
|||
sub_login()
|
||||
return (driver.current_window_handle)
|
||||
except Exception as e:
|
||||
LogError("login - 3 - " + str(e))
|
||||
LogError("login - 3 - " + str(e), driver)
|
||||
driver.close()
|
||||
CustomSleep(1200)
|
||||
driver = FirefoxDriver()
|
||||
|
@ -683,137 +486,11 @@ def BingPcSearch(override=randint(35, 40)):
|
|||
driver.get('https://www.bing.com/search?q=pls')
|
||||
driver.find_element(By.ID, "sb_form_q").clear()
|
||||
except Exception as e:
|
||||
LogError(f"BingPcSearch - clear la barre de recherche - {e}")
|
||||
LogError(f"BingPcSearch - clear la barre de recherche - {e}", driver)
|
||||
|
||||
print("\n\n")
|
||||
|
||||
|
||||
def BingMobileSearch(override=randint(22, 25)):
|
||||
MobileDriver = "unable to start"
|
||||
try:
|
||||
try:
|
||||
MobileDriver = FirefoxDriver(mobile=True)
|
||||
MobileDriver.implicitly_wait(15)
|
||||
except Exception as e:
|
||||
sleep(30)
|
||||
LogError("BingMobileSearch - 1 - echec de la creation du driver mobile")
|
||||
MobileDriver = FirefoxDriver(mobile=True)
|
||||
MobileDriver.implicitly_wait(15)
|
||||
echec = 0
|
||||
|
||||
def Mlogin(echec):
|
||||
|
||||
try:
|
||||
MobileDriver.get(
|
||||
"https://www.bing.com/search?q=test+speed"
|
||||
)
|
||||
MRGPD()
|
||||
CustomSleep(uniform(3, 5))
|
||||
printf("début du login", Mobdriver=MobileDriver)
|
||||
MobileDriver.find_element(By.ID, "mHamburger").click()
|
||||
CustomSleep(uniform(1, 2))
|
||||
printf("Mlogin - 1", Mobdriver=MobileDriver)
|
||||
MobileDriver.find_element(By.ID, "hb_s").click()
|
||||
CustomSleep(uniform(1, 2))
|
||||
printf("Mlogin - 2", Mobdriver=MobileDriver)
|
||||
mail = MobileDriver.find_element(By.ID, "i0116")
|
||||
send_keys_wait(mail, _mail)
|
||||
printf("Mlogin - 3", Mobdriver=MobileDriver)
|
||||
mail.send_keys(Keys.ENTER)
|
||||
CustomSleep(uniform(7, 9))
|
||||
printf("Mlogin - 4", Mobdriver=MobileDriver)
|
||||
pwd = MobileDriver.find_element(By.ID, "i0118")
|
||||
printf("Mlogin - 5", Mobdriver=MobileDriver)
|
||||
send_keys_wait(pwd, _password)
|
||||
printf("Mlogin - 6", Mobdriver=MobileDriver)
|
||||
pwd.send_keys(Keys.ENTER)
|
||||
CustomSleep(uniform(1, 2))
|
||||
try:
|
||||
MobileDriver.find_element(By.ID, "KmsiCheckboxField").click()
|
||||
except Exception as e:
|
||||
printf(f"Mlogin - 2.1 - erreur validation bouton KmsiCheckboxField. pas forcement grave {e}")
|
||||
|
||||
try:
|
||||
MobileDriver.find_element(By.ID, "iLooksGood").click()
|
||||
except Exception as e:
|
||||
printf(f"Mlogin - 2.2 - erreur validation bouton iLooksGood. pas forcement grave {e}")
|
||||
|
||||
try:
|
||||
MobileDriver.find_element(By.ID, "idSIButton9").click()
|
||||
except Exception as e:
|
||||
printf(f"Mlogin - 2.3 - erreur validation bouton idSIButton9. pas forcement grave {e}")
|
||||
|
||||
printf("fin du Mlogin", Mobdriver=MobileDriver)
|
||||
|
||||
except Exception as e:
|
||||
echec += 1
|
||||
if echec <= 3:
|
||||
printf(
|
||||
f"echec du login sur la version mobile. on reesaye ({echec}/3), {e}"
|
||||
)
|
||||
CustomSleep(uniform(5, 10))
|
||||
Mlogin(echec)
|
||||
else:
|
||||
LogError(
|
||||
f"login impossible 3 fois de suite. {e}", Mobdriver=MobileDriver
|
||||
)
|
||||
MobileDriver.quit()
|
||||
return True
|
||||
|
||||
def MRGPD():
|
||||
try:
|
||||
MobileDriver.find_element(By.ID, "bnp_btn_accept").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
printf(e)
|
||||
try:
|
||||
MobileDriver.find_element(By.ID, "bnp_hfly_cta2").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
printf(f"MRGPD : e")
|
||||
|
||||
def Alerte():
|
||||
try:
|
||||
alert = MobileDriver.switch_to.alert
|
||||
alert.dismiss()
|
||||
except exceptions.NoAlertPresentException as e:
|
||||
pass
|
||||
except Exception as e:
|
||||
LogError(
|
||||
f"error sur une alerte dans le driver mobile. {e}",
|
||||
Mobdriver=MobileDriver,
|
||||
)
|
||||
|
||||
if not Mlogin(echec):
|
||||
|
||||
CustomSleep(uniform(1, 2))
|
||||
MRGPD()
|
||||
CustomSleep(uniform(1, 1.5))
|
||||
|
||||
for i in range(override): # 20
|
||||
try :
|
||||
mot = choice(Liste_de_mot)
|
||||
send_keys_wait(MobileDriver.find_element(By.ID, "sb_form_q"), mot)
|
||||
MobileDriver.find_element(By.ID, "sb_form_q").send_keys(Keys.ENTER)
|
||||
progressBar(i, override, name="Mobile")
|
||||
printf(MobileDriver.current_url, Mobdriver=MobileDriver)
|
||||
CustomSleep(uniform(5, 20))
|
||||
|
||||
Alerte() # verifie si il y a des alertes (demande de positions ....)
|
||||
|
||||
MobileDriver.find_element(By.ID, "sb_form_q").clear()
|
||||
except :
|
||||
driver.refresh()
|
||||
CustomSleep(30)
|
||||
i -= 1
|
||||
MobileDriver.quit()
|
||||
|
||||
except Exception as e:
|
||||
LogError("BingMobileSearch - 4 - " + str(e), Mobdriver=MobileDriver)
|
||||
try:
|
||||
MobileDriver.quit()
|
||||
except Exception as e:
|
||||
LogError(f"can't close mobile driveer . {e}")
|
||||
|
||||
|
||||
def TryPlay(nom="inconnu"):
|
||||
|
@ -845,9 +522,7 @@ def TryPlay(nom="inconnu"):
|
|||
except Exception as e:
|
||||
printf(f"echec de PlayQuiz 2. Aborted {e}")
|
||||
else:
|
||||
LogError(
|
||||
"probleme dans la carte : il y a un bouton play et aucun quiz detecté"
|
||||
)
|
||||
LogError("probleme dans la carte : il y a un bouton play et aucun quiz detecté", driver)
|
||||
|
||||
try:
|
||||
driver.find_element(By.ID, "rqStartQuiz").click() # start the quiz
|
||||
|
@ -922,7 +597,7 @@ def LogPoint(account="unknown"): # log des points sur discord
|
|||
points = None
|
||||
|
||||
if not points :
|
||||
LogError(f"impossible d'avoir les points : {e}")
|
||||
LogError(f"impossible d'avoir les points : {e}", driver)
|
||||
CustomSleep(uniform(3, 20))
|
||||
|
||||
account = account.split("@")[0]
|
||||
|
@ -989,7 +664,7 @@ def Fidelite():
|
|||
t = driver.find_element(By.XPATH,'/html/body/div[1]/div[2]/main/div[2]/div[2]/div[7]/div[3]/div[1]')
|
||||
t.click()
|
||||
except Exception as e2 :
|
||||
LogError(f"fidélité - double erreur - e1 : {e1} - e2 {e2}")
|
||||
LogError(f"fidélité - double erreur - e1 : {e1} - e2 {e2}", driver)
|
||||
break
|
||||
CustomSleep(uniform(3, 5))
|
||||
driver.switch_to.window(driver.window_handles[1])
|
||||
|
@ -1004,7 +679,115 @@ def Fidelite():
|
|||
else :
|
||||
printf("lien invalide")
|
||||
except Exception as e:
|
||||
LogError("Fidélité" + str(e))
|
||||
LogError("Fidélité" + str(e), driver)
|
||||
|
||||
|
||||
def Mlogin(echec):
|
||||
try:
|
||||
MobileDriver.get("https://www.bing.com/search?q=test+speed")
|
||||
MRGPD()
|
||||
printf("début du login", Mobdriver=MobileDriver)
|
||||
MobileDriver.find_element(By.ID, "mHamburger").click()
|
||||
CustomSleep(uniform(1, 2))
|
||||
MobileDriver.find_element(By.ID, "hb_s").click()
|
||||
CustomSleep(uniform(1, 2))
|
||||
mail = MobileDriver.find_element(By.ID, "i0116")
|
||||
send_keys_wait(mail, _mail)
|
||||
mail.send_keys(Keys.ENTER)
|
||||
CustomSleep(uniform(7, 9))
|
||||
pwd = MobileDriver.find_element(By.ID, "i0118")
|
||||
send_keys_wait(pwd, _password)
|
||||
pwd.send_keys(Keys.ENTER)
|
||||
CustomSleep(uniform(1, 2))
|
||||
try:
|
||||
MobileDriver.find_element(By.ID, "KmsiCheckboxField").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
try:
|
||||
MobileDriver.find_element(By.ID, "iLooksGood").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
try:
|
||||
MobileDriver.find_element(By.ID, "idSIButton9").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
printf("fin du Mlogin")
|
||||
|
||||
except Exception as e:
|
||||
echec += 1
|
||||
if echec <= 3:
|
||||
printf(
|
||||
f"echec du login sur la version mobile. on reesaye ({echec}/3), {e}"
|
||||
)
|
||||
CustomSleep(uniform(5, 10))
|
||||
Mlogin(echec)
|
||||
else:
|
||||
LogError(
|
||||
f"login impossible 3 fois de suite. {e}", MobileDriver
|
||||
)
|
||||
MobileDriver.quit()
|
||||
return True
|
||||
|
||||
def MRGPD():
|
||||
try:
|
||||
MobileDriver.find_element(By.ID, "bnp_btn_accept").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
try:
|
||||
MobileDriver.find_element(By.ID, "bnp_hfly_cta2").click()
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
def Alerte():
|
||||
try:
|
||||
alert = MobileDriver.switch_to.alert
|
||||
alert.dismiss()
|
||||
except exceptions.NoAlertPresentException as e:
|
||||
pass
|
||||
except Exception as e:
|
||||
LogError(
|
||||
f"mobile.py -> Alerte : {e}",
|
||||
driver=MobileDriver,
|
||||
)
|
||||
|
||||
|
||||
def BingMobileSearch(override=randint(22, 25)):
|
||||
MobileDriver = "unable to start"
|
||||
try:
|
||||
try:
|
||||
MobileDriver = FirefoxDriver(mobile=True)
|
||||
MobileDriver.implicitly_wait(15)
|
||||
except Exception as e:
|
||||
LogError("BingMobileSearch - 1 - echec de la creation du driver mobile", MobileDriver)
|
||||
echec = 0
|
||||
|
||||
if not Mlogin(echec):
|
||||
|
||||
CustomSleep(uniform(1, 2))
|
||||
MRGPD()
|
||||
CustomSleep(uniform(1, 1.5))
|
||||
|
||||
for i in range(override): # 20
|
||||
try :
|
||||
mot = choice(Liste_de_mot)
|
||||
send_keys_wait(MobileDriver.find_element(By.ID, "sb_form_q"), mot)
|
||||
MobileDriver.find_element(By.ID, "sb_form_q").send_keys(Keys.ENTER)
|
||||
progressBar(i, override, name="Mobile")
|
||||
printf(MobileDriver.current_url)
|
||||
CustomSleep(uniform(5, 20))
|
||||
|
||||
Alerte() # verifie si il y a des alertes (demande de positions ....)
|
||||
|
||||
MobileDriver.find_element(By.ID, "sb_form_q").clear()
|
||||
except :
|
||||
driver.refresh()
|
||||
CustomSleep(30)
|
||||
i -= 1
|
||||
MobileDriver.quit()
|
||||
|
||||
except Exception as e:
|
||||
LogError("BingMobileSearch - 4 - " + str(e), MobileDriver)
|
||||
MobileDriver.quit()
|
||||
|
||||
|
||||
def DailyRoutine(custom = False):
|
||||
|
@ -1017,31 +800,31 @@ def DailyRoutine(custom = False):
|
|||
try:
|
||||
AllCard()
|
||||
except Exception as e:
|
||||
LogError(f"DailyRoutine - AllCard - \n{e}")
|
||||
LogError(f"DailyRoutine - AllCard - \n{e}", driver)
|
||||
|
||||
try:
|
||||
BingPcSearch()
|
||||
except Exception as e:
|
||||
LogError(f"DailyRoutine - BingPcSearch - \n{e}")
|
||||
LogError(f"DailyRoutine - BingPcSearch - \n{e}", driver)
|
||||
CustomSleep(uniform(3, 20))
|
||||
|
||||
try:
|
||||
Fidelite()
|
||||
except Exception as e:
|
||||
LogError(f"DailyRoutine - Fidelité - \n{e}")
|
||||
LogError(f"DailyRoutine - Fidelité - \n{e}", driver)
|
||||
|
||||
try:
|
||||
BingMobileSearch()
|
||||
except Exception as e:
|
||||
LogError(f"DailyRoutine - BingMobileSearch - \n{e}")
|
||||
LogError(f"DailyRoutine - BingMobileSearch - \n{e}", driver)
|
||||
CustomSleep(uniform(3, 20))
|
||||
|
||||
try:
|
||||
LogPoint(_mail)
|
||||
except Exception as e:
|
||||
LogError(f"DailyRoutine - LogPoint - \n{e}")
|
||||
LogError(f"DailyRoutine - LogPoint - \n{e}", driver)
|
||||
else :
|
||||
LogError(f"probleme de login sur le comte {_mail}")
|
||||
LogError(f"probleme de login sur le comte {_mail}", driver)
|
||||
|
||||
|
||||
def close():
|
||||
|
@ -1050,7 +833,7 @@ def close():
|
|||
|
||||
|
||||
def dev():
|
||||
print(check_ipv4())
|
||||
pass
|
||||
|
||||
|
||||
def CustomStart(Credentials):
|
||||
|
@ -1082,25 +865,25 @@ def CustomStart(Credentials):
|
|||
try:
|
||||
AllCard()
|
||||
except Exception as e:
|
||||
LogError(f"AllCards - {e} -- override")
|
||||
LogError(f"AllCards - {e} -- override", driver)
|
||||
|
||||
if "pc" in Actions:
|
||||
try:
|
||||
BingPcSearch()
|
||||
except Exception as e:
|
||||
LogError(f"il y a eu une erreur dans BingPcSearch, {e} -- override")
|
||||
LogError(f"il y a eu une erreur dans BingPcSearch, {e} -- override", driver)
|
||||
|
||||
if "mobile" in Actions:
|
||||
try:
|
||||
BingMobileSearch()
|
||||
except Exception as e:
|
||||
LogError(f"BingMobileSearch - {e} -- override")
|
||||
LogError(f"BingMobileSearch - {e} -- override", driver)
|
||||
|
||||
if "Fidelite" in Actions:
|
||||
try :
|
||||
Fidelite()
|
||||
except Exception as e :
|
||||
LogError(f"Fidelite - {e} -- override")
|
||||
LogError(f"Fidelite - {e} -- override", driver)
|
||||
|
||||
if "dev" in Actions:
|
||||
try:
|
||||
|
|
|
@ -0,0 +1,117 @@
|
|||
#!/usr/bin/python3.10
|
||||
import configparser
|
||||
from csv import reader
|
||||
from os import sys, system, path
|
||||
from sys import platform
|
||||
import argparse
|
||||
from discord import ( # Importing discord.Webhook and discord.RequestsWebhookAdapter
|
||||
RequestsWebhookAdapter,
|
||||
Webhook,
|
||||
)
|
||||
from time import time
|
||||
|
||||
|
||||
"""
|
||||
Setup for option, like --override or --fulllog
|
||||
"""
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
parser.add_argument(
|
||||
"-o", "--override", help="override", dest="override", action="store_true"
|
||||
)
|
||||
parser.add_argument(
|
||||
"-l", "--log", dest="log", help="enable logging in terminal", action="store_true"
|
||||
)
|
||||
parser.add_argument(
|
||||
"-fl",
|
||||
"--fulllog",
|
||||
dest="fulllog",
|
||||
help="enable full logging in discord",
|
||||
action="store_true",
|
||||
)
|
||||
parser.add_argument(
|
||||
"-r", "--risky", help="make the program faster, probably better risk of ban", dest="fast", action="store_true"
|
||||
)
|
||||
|
||||
parser.add_argument(
|
||||
"-c", "--config", help="Choose a specific config file", type=argparse.FileType('r')
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
CUSTOM_START = args.override
|
||||
LOG = args.log
|
||||
FULL_LOG = args.fulllog
|
||||
FAST = args.fast
|
||||
if CUSTOM_START :
|
||||
LOG = True
|
||||
|
||||
# gloabal variables used later in the code
|
||||
LINUX_HOST = platform == "linux" # if the computer running this programm is linux, it allow more things
|
||||
START_TIME = time()
|
||||
driver = None
|
||||
|
||||
|
||||
if LINUX_HOST:
|
||||
import enquiries
|
||||
else:
|
||||
system("") # enable colors in windows cmd
|
||||
|
||||
#reading configuration
|
||||
|
||||
config_path = f"{path.abspath( path.dirname( __file__ ) )}/user_data/config.cfg"
|
||||
if args.config :
|
||||
config_path = path.abspath(args.config.name)
|
||||
|
||||
|
||||
|
||||
config = configparser.ConfigParser()
|
||||
config.read(config_path)
|
||||
|
||||
# path configurations
|
||||
MotPath = config["PATH"]["motpath"]
|
||||
CREDENTIALS_PATH = config["PATH"]["logpath"]
|
||||
|
||||
|
||||
# discord configuration
|
||||
DISCORD_SUCCESS_LINK = config["DISCORD"]["successlink"]
|
||||
DISCORD_ERROR_LINK = config["DISCORD"]["errorlink"]
|
||||
DISCORD_ENABLED_ERROR = config["DISCORD"]["DiscordErrorEnabled"] == "True"
|
||||
DISCORD_ENABLED_SUCCESS = config["DISCORD"]["DiscordSuccessEnabled"]== "True"
|
||||
|
||||
if DISCORD_ENABLED_ERROR:
|
||||
webhookFailure = Webhook.from_url(DISCORD_ERROR_LINK, adapter=RequestsWebhookAdapter())
|
||||
if DISCORD_ENABLED_SUCCESS:
|
||||
webhookSuccess = Webhook.from_url(DISCORD_SUCCESS_LINK, adapter=RequestsWebhookAdapter())
|
||||
|
||||
# base settings
|
||||
FidelityLink = config["SETTINGS"]["FidelityLink"]
|
||||
DISCORD_EMBED = config["SETTINGS"]["embeds"] == "True" #print new point value in an embed
|
||||
Headless = config["SETTINGS"]["headless"] == "True"
|
||||
|
||||
# proxy settings
|
||||
proxy_enabled = config["PROXY"]["proxy_enabled"] == "True"
|
||||
proxy_address = config["PROXY"]["url"]
|
||||
proxy_port = config["PROXY"]["port"]
|
||||
|
||||
# MySQL settings
|
||||
sql_enabled = config["SQL"]["sql_enabled"] == "True"
|
||||
sql_usr = config["SQL"]["usr"]
|
||||
sql_pwd = config["SQL"]["pwd"]
|
||||
sql_host = config["SQL"]["host"]
|
||||
sql_database = config["SQL"]["database"]
|
||||
|
||||
# Other seetings
|
||||
IPV6_CHECKED = config["OTHER"]["ipv6"]
|
||||
CLAIM_AMAZON = config["OTHER"]["claim_amazon"]
|
||||
|
||||
|
||||
g = open(MotPath, "r", encoding="utf-8")
|
||||
lines = g.readlines()
|
||||
if len(lines) < 3 :
|
||||
Liste_de_mot = list(lines[0].split(","))
|
||||
else :
|
||||
Liste_de_mot = [x.replace('\n', "") for x in lines]
|
||||
g.close()
|
||||
|
||||
|
|
@ -0,0 +1,77 @@
|
|||
from time import sleep
|
||||
from random import uniform
|
||||
import discord
|
||||
from discord import ( # Importing discord.Webhook and discord.RequestsWebhookAdapter
|
||||
Colour,
|
||||
Webhook,
|
||||
)
|
||||
|
||||
from modules.config import *
|
||||
|
||||
"""
|
||||
send_keys_wait([selenium element:element, str:keys]) send the different keys to the field element, with a random time between each press to simulate human action.
|
||||
keys can be an string, but alos selenium keys
|
||||
"""
|
||||
def send_keys_wait(element, keys):
|
||||
for i in keys:
|
||||
element.send_keys(i)
|
||||
if FAST :
|
||||
pass
|
||||
else :
|
||||
sleep(uniform(0.1, 0.3))
|
||||
|
||||
def LogError(message, driver, log=FULL_LOG):
|
||||
print(f"\n\n\033[93m Erreur : {str(message)} \033[0m\n\n")
|
||||
if DISCORD_ENABLED_ERROR:
|
||||
with open("page.html", "w") as f:
|
||||
f.write(gdriver.page_source)
|
||||
|
||||
gdriver.save_screenshot("screenshot.png")
|
||||
if not log:
|
||||
embed = discord.Embed(
|
||||
title="An Error has occured",
|
||||
description=str(message),
|
||||
colour=Colour.red(),
|
||||
)
|
||||
else:
|
||||
embed = discord.Embed(
|
||||
title="Full log is enabled",
|
||||
description=str(message),
|
||||
colour=Colour.blue(),
|
||||
)
|
||||
|
||||
file = discord.File("screenshot.png")
|
||||
embed.set_image(url="attachment://screenshot.png")
|
||||
embed.set_footer(text=_mail)
|
||||
webhookFailure.send(embed=embed, file=file)
|
||||
webhookFailure.send(file=discord.File("page.html"))
|
||||
|
||||
|
||||
|
||||
|
||||
# add the time arround the text given in [text]
|
||||
# [text] : string
|
||||
def Timer(text="undefined"):
|
||||
return(f"[{_mail} - {timedelta(seconds = round(float(time() - START_TIME)))}] " + str(text))
|
||||
|
||||
|
||||
# replace the function print, with more options
|
||||
# [txt] : string, [driver] : selenium wbdriver
|
||||
def printf(txt, LOG = False):
|
||||
if LOG:
|
||||
print(Timer(txt))
|
||||
|
||||
|
||||
|
||||
|
||||
# check if the user is using IPV4 using ipify.org
|
||||
# [driver] : selenium webdriver
|
||||
|
||||
def check_ipv4(driver):
|
||||
driver.get("https://api64.ipify.org")
|
||||
elm = driver.find_element(By.TAG_NAME, "body")
|
||||
if len(elm.text.split('.')) == 4 :
|
||||
return True
|
||||
return False
|
||||
|
||||
|
Loading…
Reference in New Issue