poe.com update (still patched)

pull/70/head
t.me/xtekky 1 year ago
parent f8780b03b2
commit 2b30701b2e

@ -1,6 +1,7 @@
from quora.api import Client as PoeClient from quora.api import Client as PoeClient
from quora.mail import Mail from quora.mail import Emailnator
from requests import Session from requests import Session
from tls_client import Session as TLS
from re import search, findall from re import search, findall
from json import loads from json import loads
from time import sleep from time import sleep
@ -13,6 +14,9 @@ from hashlib import md5
from json import dumps from json import dumps
from pypasser import reCaptchaV3 from pypasser import reCaptchaV3
# from twocaptcha import TwoCaptcha
# solver = TwoCaptcha('72747bf24a9d89b4dcc1b24875efd358')
def extract_formkey(html): def extract_formkey(html):
script_regex = r'<script>if\(.+\)throw new Error;(.+)</script>' script_regex = r'<script>if\(.+\)throw new Error;(.+)</script>'
script_text = search(script_regex, html).group(1) script_text = search(script_regex, html).group(1)
@ -157,50 +161,54 @@ class Model:
return ModelResponse(response.json()) return ModelResponse(response.json())
class Account: class Account:
def create(proxy: None or str = None, logging: bool = False, enable_bot_creation: bool = False): def create(proxy: None or str = None, logging: bool = False, enable_bot_creation: bool = False):
client = Session() client = TLS(client_identifier='chrome110')
client.proxies = { client.proxies = {
'http': f'http://{proxy}', 'http': f'http://{proxy}',
'https': f'http://{proxy}'} if proxy else None 'https': f'http://{proxy}'} if proxy else None
mail = Mail(client.proxies) mail_client = Emailnator()
mail_token = None mail_address = mail_client.get_mail()
_, mail_address = mail.get_mail()
if mail_address is None:
raise Exception('Error creating mail, please use proxies')
if logging: print('email', mail_address) if logging: print('email', mail_address)
client.headers = { client.headers = {
"host" : "poe.com", 'authority' : 'poe.com',
"connection" : "keep-alive", 'accept' : '*/*',
"cache-control" : "max-age=0", 'accept-language': 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
"sec-ch-ua" : "\"Microsoft Edge\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111\"", 'content-type' : 'application/json',
"sec-ch-ua-mobile" : "?0", 'origin' : 'https://poe.com',
"sec-ch-ua-platform": "\"macOS\"", 'poe-formkey' : 'null',
"user-agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36 Edg/111.0.1661.54", 'poe-tag-id' : 'null',
"accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", 'poe-tchannel' : 'null',
"sec-fetch-site" : "same-origin", 'referer' : 'https://poe.com/login',
"sec-fetch-mode" : "navigate", 'sec-ch-ua' : '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
"content-type" : "application/json", 'sec-ch-ua-mobile' : '?0',
"sec-fetch-user" : "?1", 'sec-ch-ua-platform': '"macOS"',
"sec-fetch-dest" : "document", 'sec-fetch-dest': 'empty',
"accept-encoding" : "gzip, deflate, br", 'sec-fetch-mode': 'cors',
"accept-language" : "en-GB,en;q=0.9,en-US;q=0.8", 'sec-fetch-site': 'same-origin',
"upgrade-insecure-requests": "1", 'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
} }
client.headers["poe-formkey"] = extract_formkey(client.get('https://poe.com/login').text) client.headers["poe-formkey"] = extract_formkey(client.get('https://poe.com/login').text)
client.headers["poe-tchannel"] = client.get('https://poe.com/api/settings').json()['tchannelData']['channel'] client.headers["poe-tchannel"] = client.get('https://poe.com/api/settings').json()['tchannelData']['channel']
token = reCaptchaV3('https://www.recaptcha.net/recaptcha/enterprise/anchor?ar=1&k=6LflhEElAAAAAI_ewVwRWI9hsyV4mbZnYAslSvlG&co=aHR0cHM6Ly9wb2UuY29tOjQ0Mw..&hl=en&v=vkGiR-M4noX1963Xi_DB0JeI&size=invisible&cb=hhps5wd06eue') token = reCaptchaV3('https://www.recaptcha.net/recaptcha/enterprise/anchor?ar=1&k=6LflhEElAAAAAI_ewVwRWI9hsyV4mbZnYAslSvlG&co=aHR0cHM6Ly9wb2UuY29tOjQ0Mw..&hl=en&v=4PnKmGB9wRHh1i04o7YUICeI&size=invisible&cb=bi6ivxoskyal')
# token = solver.recaptcha(sitekey='6LflhEElAAAAAI_ewVwRWI9hsyV4mbZnYAslSvlG',
# url = 'https://poe.com/login?redirect_url=%2F',
# version = 'v3',
# enterprise = 1,
# invisible = 1,
# action = 'login',)['code']
payload = dumps(separators = (',', ':'), obj = { payload = dumps(separators = (',', ':'), obj = {
'queryName': 'MainSignupLoginSection_sendVerificationCodeMutation_Mutation', 'queryName': 'MainSignupLoginSection_sendVerificationCodeMutation_Mutation',
'variables': { 'variables': {
'emailAddress': mail_address, 'emailAddress' : mail_address,
'phoneNumber': None, 'phoneNumber' : None,
'recaptchaToken': token 'recaptchaToken': token
}, },
'query': 'mutation MainSignupLoginSection_sendVerificationCodeMutation_Mutation(\n $emailAddress: String\n $phoneNumber: String\n $recaptchaToken: String\n) {\n sendVerificationCode(verificationReason: login, emailAddress: $emailAddress, phoneNumber: $phoneNumber, recaptchaToken: $recaptchaToken) {\n status\n errorMessage\n }\n}\n', 'query': 'mutation MainSignupLoginSection_sendVerificationCodeMutation_Mutation(\n $emailAddress: String\n $phoneNumber: String\n $recaptchaToken: String\n) {\n sendVerificationCode(verificationReason: login, emailAddress: $emailAddress, phoneNumber: $phoneNumber, recaptchaToken: $recaptchaToken) {\n status\n errorMessage\n }\n}\n',
@ -208,33 +216,31 @@ class Account:
base_string = payload + client.headers["poe-formkey"] + 'WpuLMiXEKKE98j56k' base_string = payload + client.headers["poe-formkey"] + 'WpuLMiXEKKE98j56k'
client.headers["poe-tag-id"] = md5(base_string.encode()).hexdigest() client.headers["poe-tag-id"] = md5(base_string.encode()).hexdigest()
print(dumps(client.headers, indent=4))
response = client.post('https://poe.com/api/gql_POST', data=payload) response = client.post('https://poe.com/api/gql_POST', data=payload)
if 'automated_request_detected' in response.text:
print('please try using a proxy / wait for fix')
if 'Bad Request' in response.text: if 'Bad Request' in response.text:
if logging: print('bad request, retrying...' , response.json()) if logging: print('bad request, retrying...' , response.json())
quit() quit()
if logging: print('send_code' ,response.json()) if logging: print('send_code' ,response.json())
while True: mail_content = mail_client.get_message()
sleep(1) mail_token = findall(r';">(\d{6,7})</div>', mail_content)[0]
messages = mail.fetch_inbox()
if len(messages["messages"]) > 0:
email_content = mail.get_message_content(messages["messages"][0]["_id"])
mail_token = findall(r';">(\d{6,7})</div>', email_content)[0]
if mail_token:
break
if logging: print('code', mail_token) if logging: print('code', mail_token)
payload = dumps(separators = (',', ':'), obj={ payload = dumps(separators = (',', ':'), obj={
"queryName": "SignupOrLoginWithCodeSection_signupWithVerificationCodeMutation_Mutation", "queryName": "SignupOrLoginWithCodeSection_signupWithVerificationCodeMutation_Mutation",
"variables": { "variables": {
"verificationCode" : mail_token, "verificationCode": str(mail_token),
"emailAddress" : mail_address, "emailAddress": mail_address,
"phoneNumber" : None "phoneNumber": None
}, },
"query": "mutation SignupOrLoginWithCodeSection_signupWithVerificationCodeMutation_Mutation(\n $verificationCode: String!\n $emailAddress: String\n $phoneNumber: String\n) {\n signupWithVerificationCode(verificationCode: $verificationCode, emailAddress: $emailAddress, phoneNumber: $phoneNumber) {\n status\n errorMessage\n }\n}\n" "query": "mutation SignupOrLoginWithCodeSection_signupWithVerificationCodeMutation_Mutation(\n $verificationCode: String!\n $emailAddress: String\n $phoneNumber: String\n) {\n signupWithVerificationCode(verificationCode: $verificationCode, emailAddress: $emailAddress, phoneNumber: $phoneNumber) {\n status\n errorMessage\n }\n}\n"
}) })
@ -244,27 +250,6 @@ class Account:
response = client.post('https://poe.com/api/gql_POST', data = payload) response = client.post('https://poe.com/api/gql_POST', data = payload)
if logging: print('verify_code', response.json()) if logging: print('verify_code', response.json())
token = parse.unquote(client.cookies.get_dict()['p-b'])
with open(Path(__file__).resolve().parent / 'cookies.txt', 'a') as f:
f.write(f'{token}\n')
if enable_bot_creation:
payload = dumps(separators = (',', ':'), obj={
"queryName": "UserProfileConfigurePreviewModal_markMultiplayerNuxCompleted_Mutation",
"variables": {},
"query": "mutation UserProfileConfigurePreviewModal_markMultiplayerNuxCompleted_Mutation {\n markMultiplayerNuxCompleted {\n viewer {\n hasCompletedMultiplayerNux\n id\n }\n }\n}\n"
})
base_string = payload + client.headers["poe-formkey"] + 'WpuLMiXEKKE98j56k'
client.headers["poe-tag-id"] = md5(base_string.encode()).hexdigest()
resp = client.post("https://poe.com/api/gql_POST", data = payload)
if logging: print(resp.json())
return token
def get(): def get():
cookies = open(Path(__file__).resolve().parent / 'cookies.txt', 'r').read().splitlines() cookies = open(Path(__file__).resolve().parent / 'cookies.txt', 'r').read().splitlines()

@ -19,3 +19,12 @@ wfUfJIlwQwUss8l-3kDt3w==
f6Jw_Nr0PietpNCtOCXJTw== f6Jw_Nr0PietpNCtOCXJTw==
6Jc3yCs7XhDRNHa4ZML09g== 6Jc3yCs7XhDRNHa4ZML09g==
3vy44sIy-ZlTMofFiFDttw== 3vy44sIy-ZlTMofFiFDttw==
p9FbMGGiK1rShKgL3YWkDg==
pw6LI5Op84lf4HOY7fn91A==
QemKm6aothMvqcEgeKFDlQ==
cceZzucA-CEHR0Gt6VLYLQ==
JRRObMp2RHVn5u4730DPvQ==
XNt0wLTjX7Z-EsRR3TJMIQ==
csjjirAUKtT5HT1KZUq1kg==
8qZdCatCPQZyS7jsO4hkdQ==
esnUxcBhvH1DmCJTeld0qw==

@ -1,39 +1,66 @@
import html from requests import Session
import json from time import sleep
from tls_client import Session from re import search, findall
from json import loads
class Mail:
def __init__(self, proxies: str = None, timeout: int = 15, bearer_token: str or None = None) -> None:
self.session = Session(client_identifier='chrome110')
self.base_url = 'https://web2.temp-mail.org'
self.proxies = proxies
self.timeout = timeout
self.session.headers['authorization'] = f'Bearer {bearer_token}' if bearer_token else None
def get_mail(self) -> str: class Emailnator:
status: html = self.session.get(self.base_url).status_code def __init__(self) -> None:
self.client = Session()
try: self.client.get('https://www.emailnator.com/', timeout=6)
if status == 200: self.cookies = self.client.cookies.get_dict()
data = self.session.post(f'{self.base_url}/mailbox').json()
self.session.headers['authorization'] = f'Bearer {data["token"]}' self.client.headers = {
return data["token"], data["mailbox"] 'authority' : 'www.emailnator.com',
'origin' : 'https://www.emailnator.com',
'referer' : 'https://www.emailnator.com/',
'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36 Edg/101.0.1722.39',
'x-xsrf-token' : self.client.cookies.get("XSRF-TOKEN")[:-3]+"=",
}
except Exception as e: self.email = None
print(e)
return f'Email creation error. {e} | use proxies', False def get_mail(self):
response = self.client.post('https://www.emailnator.com/generate-email',json = {
def fetch_inbox(self) -> json: 'email': [
return self.session.get(f'{self.base_url}/messages').json() 'domain',
'plusGmail',
'dotGmail',
]
})
self.email = loads(response.text)["email"][0]
return self.email
def get_message_content(self, message_id: str): def get_message(self):
return self.session.get(f'{self.base_url}/messages/{message_id}').json()["bodyHtml"] print("waiting for code...")
while True:
sleep(2)
mail_token = self.client.post('https://www.emailnator.com/message-list',
json = {'email': self.email})
mail_token = loads(mail_token.text)["messageData"]
if len(mail_token) == 2:
print(mail_token[1]["messageID"])
break
mail_context = self.client.post('https://www.emailnator.com/message-list', json = {
'email' : self.email,
'messageID': mail_token[1]["messageID"],
})
return mail_context.text
# mail_client = Emailnator()
# mail_adress = mail_client.get_mail()
# print(mail_adress)
# mail_content = mail_client.get_message()
# print(mail_content)
# if __name__ == '__main__': # code = findall(r';">(\d{6,7})</div>', mail_content)[0]
# print(code)
# email_client = TempMail()
# token, email = email_client.get_mail()
# print(email)
# print(token)

@ -0,0 +1,104 @@
from requests import Session
from tls_client import Session as TLS
from json import dumps
from hashlib import md5
from time import sleep
from re import findall
from pypasser import reCaptchaV3
from quora import extract_formkey
from quora.mail import Emailnator
from twocaptcha import TwoCaptcha
solver = TwoCaptcha('72747bf24a9d89b4dcc1b24875efd358')
class Account:
def create(proxy: None or str = None, logging: bool = False, enable_bot_creation: bool = False):
client = TLS(client_identifier='chrome110')
client.proxies = {
'http': f'http://{proxy}',
'https': f'http://{proxy}'} if proxy else None
mail_client = Emailnator()
mail_address = mail_client.get_mail()
if logging: print('email', mail_address)
client.headers = {
'authority' : 'poe.com',
'accept' : '*/*',
'accept-language': 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
'content-type' : 'application/json',
'origin' : 'https://poe.com',
'poe-formkey' : 'null',
'poe-tag-id' : 'null',
'poe-tchannel' : 'null',
'referer' : 'https://poe.com/login',
'sec-ch-ua' : '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
'sec-ch-ua-mobile' : '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
}
client.headers["poe-formkey"] = extract_formkey(client.get('https://poe.com/login').text)
client.headers["poe-tchannel"] = client.get('https://poe.com/api/settings').json()['tchannelData']['channel']
#token = reCaptchaV3('https://www.recaptcha.net/recaptcha/enterprise/anchor?ar=1&k=6LflhEElAAAAAI_ewVwRWI9hsyV4mbZnYAslSvlG&co=aHR0cHM6Ly9wb2UuY29tOjQ0Mw..&hl=en&v=4PnKmGB9wRHh1i04o7YUICeI&size=invisible&cb=bi6ivxoskyal')
token = solver.recaptcha(sitekey='6LflhEElAAAAAI_ewVwRWI9hsyV4mbZnYAslSvlG',
url = 'https://poe.com/login?redirect_url=%2F',
version = 'v3',
enterprise = 1,
invisible = 1,
action = 'login',)['code']
payload = dumps(separators = (',', ':'), obj = {
'queryName': 'MainSignupLoginSection_sendVerificationCodeMutation_Mutation',
'variables': {
'emailAddress' : mail_address,
'phoneNumber' : None,
'recaptchaToken': token
},
'query': 'mutation MainSignupLoginSection_sendVerificationCodeMutation_Mutation(\n $emailAddress: String\n $phoneNumber: String\n $recaptchaToken: String\n) {\n sendVerificationCode(verificationReason: login, emailAddress: $emailAddress, phoneNumber: $phoneNumber, recaptchaToken: $recaptchaToken) {\n status\n errorMessage\n }\n}\n',
})
base_string = payload + client.headers["poe-formkey"] + 'WpuLMiXEKKE98j56k'
client.headers["poe-tag-id"] = md5(base_string.encode()).hexdigest()
print(dumps(client.headers, indent=4))
response = client.post('https://poe.com/api/gql_POST', data=payload)
if 'automated_request_detected' in response.text:
print('please try using a proxy / wait for fix')
if 'Bad Request' in response.text:
if logging: print('bad request, retrying...' , response.json())
quit()
if logging: print('send_code' ,response.json())
mail_content = mail_client.get_message()
mail_token = findall(r';">(\d{6,7})</div>', mail_content)[0]
if logging: print('code', mail_token)
payload = dumps(separators = (',', ':'), obj={
"queryName": "SignupOrLoginWithCodeSection_signupWithVerificationCodeMutation_Mutation",
"variables": {
"verificationCode": str(mail_token),
"emailAddress": mail_address,
"phoneNumber": None
},
"query": "mutation SignupOrLoginWithCodeSection_signupWithVerificationCodeMutation_Mutation(\n $verificationCode: String!\n $emailAddress: String\n $phoneNumber: String\n) {\n signupWithVerificationCode(verificationCode: $verificationCode, emailAddress: $emailAddress, phoneNumber: $phoneNumber) {\n status\n errorMessage\n }\n}\n"
})
base_string = payload + client.headers["poe-formkey"] + 'WpuLMiXEKKE98j56k'
client.headers["poe-tag-id"] = md5(base_string.encode()).hexdigest()
response = client.post('https://poe.com/api/gql_POST', data = payload)
if logging: print('verify_code', response.json())
Account.create(proxy = 'xtekky:wegwgwegwed_streaming-1@geo.iproyal.com:12321', logging = True)
Loading…
Cancel
Save