from selenium.webdriver.remote.webdriver import WebDriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import pandas as pd def generate_public_key(driver: WebDriver): """ 访问 https://bls-keygen.com/,生成新的主密钥,并提取助记词。 :param driver: Selenium WebDriver 实例 """ url = "https://bls-keygen.com/" print(f"正在访问: {url} ...") driver.get(url) try: # 1. 等待并点击 "Generate New Master Key" 按钮 print("正在查找并点击 'Generate New Master Key' 按钮...") generate_button = WebDriverWait(driver, 20).until( EC.element_to_be_clickable((By.XPATH, "//button[contains(., 'Generate New Master Key')]")) ) # 使用 JavaScript 点击以增加稳定性,避免普通点击被拦截 driver.execute_script("arguments[0].click();", generate_button) # 2. 等待新页面加载并找到助记词元素 # 使用 XPath 定位到标题为 "Mnemonic" 的

标签,然后获取其后面的兄弟

标签,内容就在里面 print("正在等待新页面加载并提取助记词...") mnemonic_element = WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.XPATH, "/html/body/div[1]/span/div[2]/div/div/div/div/div")) ) mnemonic_phrase = mnemonic_element.text.split("\n")[1].strip() # 3. 点击下一步按钮 next_button = WebDriverWait(driver, 20).until( EC.element_to_be_clickable((By.XPATH, "//button[contains(., 'Next')]")) ) driver.execute_script("arguments[0].click();", next_button) # 4.输入助记词 input_element = WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.XPATH, "/html/body/div[1]/span/div[2]/div/div/div/div/div[1]/textarea")) ) input_element.send_keys(mnemonic_phrase) # 5. 点击下一步按钮 next_button = WebDriverWait(driver, 20).until( EC.element_to_be_clickable((By.XPATH, "//button[contains(., 'Next')]")) ) driver.execute_script("arguments[0].click();", next_button) # 6. 找到两个公钥 master_public_key_element = WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.XPATH, "/html/body/div[1]/span/div[2]/div/div/div/div/div[1]/div[2]")) ) master_public_key = master_public_key_element.text valid_public_key_element = WebDriverWait(driver, 20).until( EC.presence_of_element_located((By.XPATH, "/html/body/div[1]/span/div[2]/div/div/div/div/div[3]")) ) valid_public_key = valid_public_key_element.text.split("\n")[1].strip() return({"mnemonic_phrase": mnemonic_phrase, "master_public_key": master_public_key, "valid_public_key": valid_public_key}) except Exception as e: print(f"❌ 在执行过程中发生错误: {e}") print("请检查网页结构是否发生变化,或网络连接是否正常。") def generate_or_address(driver: WebDriver, args): print(f"开始生成{args.cnt}个地址") key_infos = [] for i in range(args.cnt): key_info = generate_public_key(driver) key_infos.append(key_info) # 将key_infos写入csv文件 df = pd.DataFrame(key_infos) df.to_csv("data/or_publickey.csv", index=False) print(f"已将{args.cnt}个地址写入data/or_publickey.csv")