使用Selenium和Metamask 与 Dapp 自动化交互

  • 时间:
  • 浏览:228
  • 来源:区块链技术网

网络开发的最新趋势之一是去中心化应用的崛起,也被称为Dapps。这些应用是利用去中心化的网络建立的,使用智能合约预先定义的交互,在用户之间提供无信任的互动。(如果你想了解更多关于Dapps的信息请点击这里[4]。

为了访问Dapps,用户需要使用一个加密货币钱包来连接,这为那些想要使用Selenium[5]等工具进行自动化/或测试Dapps的开发者带来了新的挑战。在这篇文章中,我们将介绍如何使用Python和Chromium来解决这个问题的基本知识,然而,这里描述的原则可以来应用于任何编程语言和网络浏览器自动化工具。

目前大多数的Dapps都依赖于用户浏览器中的扩展加密钱包 ,它在网页中注入关于用户钱包和它所连接的网络的信息。最流行的浏览器加密钱包是Metamask[6]。为了成功地与一个DApp自动交互,我们不仅需要与目标网站互动,还需要同时与Metamask 扩展钱包交互,以批准应用程序与我们的钱包连接和其他可能的交易。

压缩扩展

为了在我们的自动浏览器上加载插件,我们首先需要将Metamask扩展压缩成一个.crx文件,以下是步骤:

  • 在你的普通chrome上安装Metamask
  • 导航到chrome://extensions/。
  • 点击'打包扩展程序(Pack extension)',并输入Metamask 插件的本地路径,这将生成一个.crx文件,你可以用它作为扩展加载到Chromium上。保存安装扩展的文件夹的名称,这将是我们以后要使用的'扩展ID'。

加载扩展

要加载安装了Metamask的Chromium,请运行:

from selenium import webdriver EXTENSION_PATH = 'ENTER THE PATH TO YOUR CRX FILE' opt = webdriver.ChromeOptions() opt.add_extension(EXTENSION_PATH) driver = webdriver.Chrome(chrome_options=opt)

与 Metamask 交互

为了同时与Dapp和Metamask互动,我们将需要在Chromium中设置多个标签页(tab),一个是目标Dapp,另一个是Metamask本身。

当Chromium启动时,它将有一个Metamask扩展的欢迎页,它将提示你设置钱包,下面是导入现有钱包的示例代码(你可能需要更新一些步骤,取决于你的Metamask版本):

driver.find_element_by_xpath('//button[text()="Get Started"]').click() driver.find_element_by_xpath('//button[text()="Import wallet"]').click() driver.find_element_by_xpath('//button[text()="No Thanks"]').click() # After this you will need to enter you wallet details inputs = driver.find_elements_by_xpath('//input') inputs[0].send_keys(SECRET_RECOVERY_PHRASE) inputs[1].send_keys(NEW_PASSWORD) inputs[2].send_keys(NEW_PASSWORD) driver.find_element_by_css_selector('.first-time-flow__terms').click() driver.find_element_by_xpath('//button[text()="Import"]').click() driver.find_element_by_xpath('//button[text()="All Done"]').click()

在这之后,Metamask将在Chromium中设置成功,准备连接到Dapp。当你需要再次与Metamask互动时,你将需要在不同的标签页(tab)中使用它,像这样:

EXTENSION_ID = 'ENTER HERE THE EXTENSION ID THAT YOU SAVED EARLIER' driver.execute_script("window.open('');") driver.switch_to.window(driver.window_handles[1]) driver.get('chrome-extension://{}/popup.html'.format(EXTENSION_ID))

这样一来,Metamask将在这个新标签(tab)中打开,准备与之进行互动。

来源:https://dev.to/ltmenezes/automated-dapps-scrapping-with-selenium-and-metamask-2ae9

猜你喜欢

这些还在运营的野鸡“交易所”不要再碰了

不管币圈还在任何投资项目中,只要不能安全出金都是骗人。熊大说过野鸡交易所限制用户提现有很多?涉嫌洗钱?涉嫌刷单?涉嫌赌博?资不抵债?系统穿仓等等?没有经历过真正牛熊市交易所很难在这个市场存活。这也就是为什么不建议投资者选择小交易所交易的原因。

2022-01-18

OKEX交易所突然更名,意欲何为?

你好,我是良心哥。我们专门曝光币圈黑幕,怒怼空气币和各种骗局。如果你在币圈被割了韭菜或者被诈骗,来找我,我帮你!

2022-01-18

WTF 空投,吃了我的gas费给我拿回来

WTF ?抱歉,我们不是在骂人。 这是一个正在发钱的项目,开局半小时内持币地址已经突破5000,截止目前发稿2个小时时间持币地址已经破万。登录头部交易所几乎是必然。话不多说,操作手册奉上:

2022-01-17

九句话,从零了解Web3

Web3 这个新鲜的专业名词诞生于 2014 年,在一开始,他被用来描述实现去中心化共识的新型协议,而到如今,它已经成为了对公链生态、应用程序甚至设计理念的统称。犹如「我是谁?」这样的哲学问题一样,「什么是 Web3」这个问题很多人都给出了自己的答案,而且似乎每个人的回答都不尽相同。

2022-01-17

零知识证明 - Halo2电路构建源代码导读

理解Halo2,可以从两部分着手:1/ 电路构建 2/ 证明系统。从开发者的角度看,电路构建是接口。如何通过Halo2构建建电路,这些电路在Halo2的内部如何表示是理解电路构建的关键。本文就从源代码的角度深入浅出讲解Halo2的电路构建。

2022-01-17