130 lines
4.6 KiB
Python
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)
|