Files
to_session/web_process/sign_main.py
Administrator a0720d80dc fefdwef
2025-11-12 12:54:37 +08:00

130 lines
4.6 KiB
Python

import concurrent
import threading
import time
from concurrent.futures import ThreadPoolExecutor
from models.hub_web import HubWeb
from DrissionPage import ChromiumPage, ChromiumOptions
class WebProcess:
def __init__(self, hub_web_info):
self.page_port = 3021 + int(hub_web_info.id)
# 文件设置
path = "C:\\haha"
self.tmp_path = path + f"\\tmp_{self.page_port}"
self.user_path = path + f"\\user_{self.page_port}"
self.cache_path = path + f"\\cache_{self.page_port}"
self.hub_web_info = hub_web_info
def get_page_tab(self, url):
while True:
try:
tab = self.page.get_tab(url=url)
return tab
except:
time.sleep(1)
def join_metamask(self, ):
metamask_tab = self.page.new_tab(
'chrome-extension://hlmhmplfebaofhhdjcmmjodfngpjlnfd/home.html#onboarding/welcome')
ele = metamask_tab.ele('x://input[@data-testid="unlock-password"]', timeout=5)
if ele:
ele.input("12345678")
time.sleep(3)
metamask_tab.ele('x://button[@data-testid="unlock-submit"]').click()
return
metamask_tab.ele('x://input[@type="checkbox"]').click(by_js=True)
metamask_tab.ele('x://button[@data-testid="onboarding-import-wallet"]').click()
metamask_tab.ele('x://input[@type="checkbox"]').click()
metamask_tab.ele('x://button[@data-testid="metametrics-no-thanks"]').click()
for i, text in zip(range(12),
self.hub_web_info.words.split(" ")):
metamask_tab.ele(f'x://input[@id="import-srp__srp-word-{i}"]').input(text)
metamask_tab.ele('x://button[@data-testid="import-srp-confirm"]').click()
metamask_tab.ele('x://input[@data-testid="create-password-new"]').input("12345678")
metamask_tab.ele('x://input[@data-testid="create-password-confirm"]').input("12345678")
metamask_tab.ele('x://input[@data-testid="create-password-terms"]').click()
metamask_tab.ele('x://button[@data-testid="create-password-import"]').click()
metamask_tab.ele('x://button[@data-testid="onboarding-complete-done"]').click()
metamask_tab.ele('x://button[@data-testid="pin-extension-next"]').click(by_js=True)
metamask_tab.ele('x://button[@data-testid="pin-extension-done"]').click(by_js=True)
time.sleep(3)
metamask_tab.close()
def action(self):
co = ChromiumOptions()
co.set_local_port(self.page_port)
co.add_extension(r'MetaMask 12.16.1')
co.set_tmp_path(self.tmp_path)
co.set_user_data_path(self.user_path)
co.set_cache_path(self.cache_path)
co.set_proxy("http://192.168.50.220:10809")
self.page = ChromiumPage(co)
try:
self.join_metamask()
metamask_tab = self.get_page_tab(url='hlmhmplfebaofhhdjcmmjodfngpjlnfd')
if metamask_tab:
metamask_tab.close()
# =====================================================================================================
tab = self.page.new_tab("https://app.sign.global/create-schema")
tab.ele('x://button[text()="Connect Wallet"]').click()
ele = tab.ele('x://div[text()="MetaMask"]', timeout=5)
if ele:
ele.click()
time.sleep(3)
metamask_tab1 = self.get_page_tab(url='hlmhmplfebaofhhdjcmmjodfngpjlnfd')
time.sleep(3)
metamask_tab1.ele('x://button[@data-testid="confirm-btn"]').click()
time.sleep(3)
tab.ele('x://button[@data-testid="rk-auth-message-button"]').click()
time.sleep(3)
metamask_tab = self.get_page_tab(url='hlmhmplfebaofhhdjcmmjodfngpjlnfd')
metamask_tab.ele('x://button[@data-testid="confirm-footer-button"]').click()
time.sleep(3)
for i in tab.cookies():
if i["name"] == "connect.sid":
print(i["value"])
self.hub_web_info.cookie = i["value"]
self.hub_web_info.save()
except:
pass
finally:
self.page.quit()
if __name__ == '__main__':
hub_web_infos = HubWeb.select().where(
HubWeb.cookie.is_null()
)
with concurrent.futures.ThreadPoolExecutor(max_workers=10) as executor:
for hub_web_info in hub_web_infos:
web_process = WebProcess(hub_web_info=hub_web_info)
# web_process.action()
executor.submit(web_process.action, )
time.sleep(3)