# -*- coding: utf-8 -*-
'''
Гайд по установке
Установленный python 3.7+(если будет время потом скомпилирую,или скомпилируй ты анонче)
потом в терминал
pip install requests
pip install undetected_chromedriver
мейби ещё
pip install selenium
Получение api ключа post shift
В адрессную строку браузера:
https://post-shift.ru/api.php?action=reg&email=рандомная_строка
Если все правильно тогда выведет:
{"hash":"d6be5cce6245b61552cdc5201e0488b2"}
хеш вставлять в виде:
d6be5cce6245b61552cdc5201e0488b2
Вроде прокси не требуются,ну если возникли проблемы с регой - юзай впн
По всем вопросам,багам в тред
КТО БУДЕТ ПИСАТЬ СООБЩЕНИЯ ПО ТИПУ - "КОКОКО ГОВНОКОД","ХРЮХРЮХРЮ ПИТОН";Просьба пойти срать на хабр
Удачного вечера анон!
'''
"""
Updated by Anon-L
Апдейт старого скрипта
Быстрее работает и меньше вылетает (по идее должно)
ВАЖНО
У post shift ограничение на получение писем одним хэшом
Как только скрипт выдает подряд ошибки почты перключаем сервер VPN (меняем IP)
и получаем новый хэш (как написано выше)
НЕ ЗАПУСКАТЬ В ОНЛАЙН КОМПИЛЯТОРЕ СКАЧАТЬ СЕБЕ НА КОМП
"""
import requests
import string,random,time,re
import undetected_chromedriver as uc
import warnings
warnings.filterwarnings("ignore")
banner = """
+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+ +-+-+-+-+-+
|O|P|E|R|A|T|I|O|N| |B|L|A|C|K| |M|A|M|B|A|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|B|y| |A|n|o|n| |f|o|r| |2|c|h|.|h|k|
+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+
|V|e|r| |2|.|0|b|
+-+-+-+ +-+-+-+-+
"""
class Post_shift():
postshift_api_hash = ""
mail = {"email":"","key":""}
def __generate_random_string(self,min: int = 12, max: int = 16):
return ''.join(random.choice(string.ascii_lowercase) for i in range(random.randint(min, max)))
#не исользуется(защита от дебилов)
def Regestration(self):
try:
resp = requests.get(f"https://post-shift.ru/api.php?action=reg&email={self.__generate_random_string()}@domain.ru")
if resp.status_code != 200:
raise Exception
return True
except Exception as e:
print(f"Ошибка при регистрации на postshift!!!\nЛог:{e}")
return False
def CreateMail(self):
try:
resp = requests.get(f"https://post-shift.ru/api.php?action=new&hash={self.postshift_api_hash}")
if resp.status_code != 200:
raise Exception
resp = resp.json()
self.mail["email"] = resp["email"]
self.mail["key"] = resp["key"]
return True
except Exception as e:
print(f"Ошибка при получении ящика!!!\nЛог:{e}")
return False
def Clear(self):
try:
resp = requests.get(f"https://post-shift.ru/api.php?action=deleteall")
if resp.status_code != 200:
raise Exception
return True
except Exception as e:
print(f"Ошибка при Удалении ящиков!!!\nЛог:{e}")
return False
def GetEmailList(self):
try:
resp = requests.get(f"https://post-shift.ru/api.php?action=getlist&hash={self.postshift_api_hash}&key={self.mail['key']}")
if resp.status_code != 200:
raise Exception
return resp.json()
except Exception as e:
print(f"Ошибка при Получении списка сообщений!!!\nЛог:{e}")
return None
def GetEmailText(self):
try:
resp = requests.get(f"https://post-shift.ru/api.php?action=getmail&hash={self.postshift_api_hash}&key={self.mail['key']}&id=1")
if resp.status_code != 200:
raise Exception
return resp.json()
except Exception as e:
print(f"Ошибка при Получении списка сообщений!!!\nЛог:{e}")
return None
def __init__(self,hash):
self.postshift_api_hash=hash
def ExtractPwd(message):
match = re.search(r'href=[\'"]?([^\'" >]+)', message)
if match:
return match.group(0).replace('href="',"")
else:
return None
def GenPassword(min: int = 20, max: int = 20):
pwd = ""
special_list = ["!","@","#","$","%"]
pwd += ''.join(random.choice(string.ascii_uppercase) for i in range(5))
pwd += ''.join(random.choice(string.ascii_lowercase) for i in range(5))
pwd += ''.join(random.choice(string.digits) for i in range(5))
pwd += ''.join(random.choice(special_list) for i in range(5))
return ''.join(random.sample(pwd,len(pwd)))
def main():
itter = 0
print(banner)
apihash = input("Ввдите api ключ от post shift: ")
if len(apihash) != 32:
print("Неверный api hash!")
return 0
a=Post_shift(apihash)
driver=uc.Chrome()
driver.implicitly_wait(20)
while True:
driver.delete_all_cookies()
driver.get("https://63.ru/text/education/")
time.sleep(5)
try:
driver.find_element_by_xpath('//*[@id="app"]/div[2]/header/div[1]/div[2]/a').click()
driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[3]/div/div/div[2]/div/form/div[3]/button').click()
except:
print("reg error")
continue
a.Clear()
#a.Regestration()
a.CreateMail()
driver.find_element_by_xpath('//*[@id="register_login"]').send_keys(a.mail['email'])
driver.find_element_by_xpath('//*[@id="register_password"]').send_keys(GenPassword())
driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[4]/div/div/div[2]/div/form/button').click()
print(f"Мыло: {a.mail['email']}")
fm = False
time.sleep(15)
respmails = a.GetEmailList()
if type(respmails) == list:
if respmails[0]["subject"] == "Регистрация на сайтах Сети городских порталов и Fontanka.ru":
fm = True
else:
print("Ошибка письма!!!")
if fm:
message = a.GetEmailText()
try:
driver.get(ExtractPwd(message["message"]))
driver.get("https://63.ru/text/education/2022/01/25/70386878/")
time.sleep(5)
driver.find_element_by_xpath('//*[@id="app"]/div[2]/div[1]/div/div/div[3]/div[2]/div[1]/div[1]/div[1]/div/div[2]/div[21]/div[2]/div[7]/div[2]/div[2]/div/button').click()
except:
print("website error")
continue
time.sleep(3)
itter+=1
print(f"Успешно!!!Итерация:{itter}")
else:
print("letter not found")
if __name__ == '__main__':
main()