Selenium与Metamask钱包及DApp交互及验证码破解汇总

1.LavaMoat报错:

selenium.common.exceptions.WebDriverException: Message: unknown error: Runtime.callFunctionOn threw exception: Error: LavaMoat...`

报错原因:

根本原因是Metamask为了用户钱包安全,而将LavaMoat 设置为了全局不可用。
报错解析文章链接:
https://github.com/MetaMask/metamask-extension/issues/19018
Runtime.callFunctionOn threw exception: Error: LavaMoat - property “Proxy” of globalThis is inaccessible under scuttling mode
https://stackoverflow.com/questions/76252205/runtime-callfunctionon-threw-exception-error-lavamoat-property-proxy-of-gl

解决办法:

修改 metamask 中的安全机制逻辑
安装 CRX Extractor/Downloader
打开页面 https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn
页面中,点击工具栏中 CRX Extractor/Downloader 使用插件下载 zip 格式的 metamask 包
将下载的 zip 解压,vscode 打开,找到并将 runtime-lavamoat.js 文件第 93 行的 scuttleGlobalThis 改为false 保存
在将 metamask 压缩成 zip (就是普通的压缩)
打开 chrome://extensions/ 页面,将 zip 文件拖进来,重新安装;
如果上一步报错了,可使用 加载已解压的扩展程序, 手动选择下载的修改过 metamask 文件夹,进行加载
需要注意的是这种方式安装的 ext ,对应的 ID 会有变化的, 也就是 chrome-extension://nkbihfbeogaeaoehlefnkodbefgpgknn/home.html driver.get() 要换成新的。

参考链接:https://blog.csdn.net/u013948858/article/details/130723828

2.报错:selenium使用可用的IP代理地址,仍然无法连接。webdriver添加正确ip代理依然访问失败。

《!!!!该解决办法是错误的!!!!详细请下拉看第8个!!!!》

报错原因:暂不清楚
解决方法:

import requests
from selenium import webdriverurl="https://www.baidu.com/"
ip="114.96.199.198"
port = "4325"proxy={"http":"http://"+ip+":"+port}
headers={"User-Agent":"Mozilla/5.0"}
res=requests.get(url,proxies=proxy,headers=headers)
print(res.status_code)  # 返回200:表示该ip代理是可用的
print('------------------')chrome_path = '/Users/dannihong/downloads/webdriver_browser/chromedriver86'
options=webdriver.ChromeOptions()
options.add_argument('--proxy-server=http://'+ip+":"+port)
options.add_argument('--proxy-server=http://114.96.199.198:4325')  # 必须是中文冒号
driver=webdriver.Chrome(executable_path=chrome_path, chrome_options=options)
driver.get(url)

options.add_argument()里的参数端口冒号,改为中文的冒号,一下子就访问成功了。
这应该是目前遇到的最奇怪的错误了😄

参考文章:https://www.cnblogs.com/hongdanni/p/13907115.html

3.selenium与chrome扩展弹窗交互问题

这个是最头疼的,找了一天才找到解决方案,最后发现网上的几个方案都不可行,而且使用webdriver控制chrome导入未打包的metamask钱包时,ID和本机已安装的chrome导入该包时的ID是不一样的,导致driver.get()时会报错。以下展示网上搜集的3种方案,只有方案3可行。

'''方案1:popup = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, '//*[@id="popup"]')))popup.click()## 已证实不可行''''''# 方案2:driver.execute_cdp_cmd("Target.sendMessageToTarget", {"message": "下一步"}, targetId=r'einnkkjhebeeofefmappiomndlojekaj')time.sleep(3)driver.execute_script("document.getElementById('button').click();")time.sleep(3)driver.execute_cdp_cmd("Target.sendMessageToTarget", {"message": "连接"}, targetId=r'einnkkjhebeeofefmappiomndlojekaj')time.sleep(3)driver.execute_script("document.getElementById('button').click();")## 已证实不可行'''# 方案3driver.switch_to.window(driver.window_handles[1])driver.get('chrome-extension://einnkkjhebeeofefmappiomndlojekaj/popup.html')time.sleep(5)driver.find_element(By.XPATH, '//button[@data-testid="page-container-footer-next"]').click()time.sleep(1)driver.find_element(By.XPATH, '//button[@data-testid="page-container-footer-next"]').click()time.sleep(3)driver.find_element(By.XPATH, '//button[@data-testid="popover-close"]').click()time.sleep(1)## 该方法可行,但要注意Webdriver导入未打包的metamask时,ID与本机已安装的Chrome的ID不一样。

4. Selenium导致C盘空间爆满

原因:运行缓存
缓存位置:C:\Windows\SystemTemp (windows系统)
解决办法:删光该文件内的文件即可
在这里插入图片描述

** 5.报错:WebDriver‘ object has no attribute “find_element_by_xpath”

selenium最新版本中,‘find_element_by_xpath’方法已经停用,改用driver.find_element(By.XPATH, “”)

参考文章:
解决‘WebDriver‘ object has no attribute ‘find_element_by_xpath‘问题
https://blog.csdn.net/weixin_43777074/article/details/125994736

**6.报错:

selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge using Selenium Manager.; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location

错误原因及解决办法
python的启动目录下面,我放有一个chromedriver.exe的文件,然后我项目的路径下面,也放有一个chromedriver.exe的文件。然后我代码指向的是项目路径下的chromedriver.exe。然后就会报错,我把项目本身的chromedriver.exe给删除掉,然后代码那边不填写路径。就可以了

参考文章:
selenium打开浏览器报错成功解决selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain…
https://blog.csdn.net/sinnp/article/details/132330998?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-132330998-blog-134330977.235%5Ev43%5Epc_blog_bottom_relevance_base7&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-132330998-blog-134330977.235%5Ev43%5Epc_blog_bottom_relevance_base7&utm_relevant_index=2

7.selenium反反爬:

# 配置浏览器,添加插件
def ChromeSet():IP_this = GetIP()user_ag = UserAgent()print(user_ag, '\n', IP_this)# 浏览器配置设置EXTENSION_PATH = r'D:\wallet\MetaMask.crx 'opt = webdriver.ChromeOptions()opt.add_argument('disable-infobars')  # 隐藏"Chrome正在受到自动软件的控制"opt.add_argument('--proxy-server=' + IP_this)opt.add_argument('--user-agent=' + user_ag)# 设置为开发者模式,避免被识别opt.add_experimental_option('excludeSwitches', ['enable-automation'])opt.add_extension(EXTENSION_PATH)# 加载配置driver = webdriver.Chrome(options=opt)driver.delete_all_cookies()  # 删除所有的cookie# driver.add_cookie({'name': 'ABC', 'value&

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/800773.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

城市定量分析学习资料大数据 gis 空间句法 Python

城市定量分析学习资料大数据 gis 空间句法 Python

Ubuntu 20.04.06 PCL C++学习记录(十六)

[TOC]PCL中点云分割模块的学习 学习背景 参考书籍&#xff1a;《点云库PCL从入门到精通》以及官方代码PCL官方代码链接,&#xff0c;PCL版本为1.10.0&#xff0c;CMake版本为3.16 学习内容 用一组点云数据做简单的平面的分割 源代码及所用函数 源代码 #include<iostr…

IP地址到底有什么用

IP地址在计算机网络中的作用至关重要&#xff0c;它不仅是设备在网络中的唯一标识&#xff0c;更是实现网络通信、网络管理和安全的关键要素。下面&#xff0c;我们将从多个方面详细阐述IP地址的作用。 首先&#xff0c;IP地址作为设备的唯一标识&#xff0c;为网络通信提供了…

JavaScript - 你做过字符串反转吗

难度级别:初级及以上 提问概率:65% 例如有一个字符串本来是“abcde”,那么现在希望可以将其反转,最终的值是“edcba”,该如何做呢? 第一种是将字符串转为数组,利用数组的reverse方法实现元素反转,然后再将数组转为字符串,代码如下 …

面试必问!鸿蒙开发中的FA模型和Stage模型是什么?他们分别有什么区别?

鸿蒙OS&#xff08;HarmonyOS&#xff09; 是面向全场景的分布式操作系统&#xff0c;它通过创新的应用模型&#xff0c;为开发者提供了强大的应用开发框架。 在HarmonyOS的发展过程中&#xff0c;FA模型&#xff08;Feature Ability&#xff09;和Stage模型是两种重要的应用模…

常规的k8s的监控指标

常规的监控指标 1、集群维度 集群状态集群节点数节点状态(正常、不可达、未知)节点的资源使用率(CPU、内存、IO等)2、应用维度 应用响应时间 应用的错误率 应用的请求量 3、系统和集群组件维度 API服务器状态控制器状态etcd状态常用的 Prometheus Operator 指标 常用监控…

静电场概述

什么是静电场 静电场是由特殊的电荷引起场。 这个特殊的电荷指&#xff1a;相对于观察者静止、且电量不随时间改变的电荷。 库仑定律 指在无限大的真空中&#xff0c;当两个静止的小带电体之间的距离远远大于本身的几何尺寸时&#xff0c;该两带电体之间的作用力。 如图所示…

二分查找 -- 力扣(LeetCode)第704题

题目 https://leetcode.cn/problems/binary-search/description/ 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例…

如何在微信小程序中使用less来编写css

在微信小程序中使用 Less 需要一些额外的配置步骤,因为小程序本身不支持直接引用 Less 文件。我们可以借助 Webpack 进行构建,使用一些 loader 来编译 Less 文件。以下是具体步骤: 初始化项目 使用微信开发者工具新建一个小程序项目,或在已有项目的基础上操作。 安装依赖 使…

JavaScript代码小挑战

题目如下&#xff1a; 朱莉娅和凯特正在做一项关于狗的研究。于是&#xff0c;她们分别询问了 5 位狗主人他们的狗的年龄&#xff0c;并将数据存储到一个数组中&#xff08;每人一个数组&#xff09;。目前&#xff0c;她们只想知道一只狗是成年狗还是小狗。如果狗的年龄至少为…

SpringBoot集成Skywalking链路追踪

安装skywaling 参考&#xff1a;Centos7搭建 SkyWalking 单机版-CSDN博客 下载Agents https://archive.apache.org/dist/skywalking/java-agent/9.0.0/apache-skywalking-java-agent-9.0.0.tgz 1. 在IDEA中使用skywalking agent 在VM options中填入如下信息 -javaagent后是…

Scaling Laws 又失灵了?谷歌新研究:扩散模型不是越大越好

近年来&#xff0c;模型规模呈现出愈来愈大的趋势&#xff0c;越来越多的人相信“力大砖飞”。 OpenAI 虽然没有公布Sora的训练细节&#xff0c;但在Sora的技术报告中提到了&#xff1a; Our largest model, Sora, is capable of generating a minute of high fidelity video.…

[RK-Linux] RK3399启动流程详解

一、SoC启动流程 1.1 BootROM介绍 在嵌入式系统中,SoC(System on Chip)制造商通常会在芯片内部集成一段固化的启动代码,这段代码被称为BootROM,它负责系统的最初级启动程序。 1.1.1 初始化硬件 当SoC上电时,首先由BootROM接管系统,其首要任务是初始化硬件环境。这包…

AI技术创业机会之金融科技

金融科技服务(FinTech)领域正经历着一场由人工智能(AI)技术引领的深刻变革,为创业者提供了无数创新与颠覆传统金融服务模式的机会。以下详述了金融科技服务中AI技术的具体创业机会及其细节与内容,以期为有志于涉足此领域的创业者提供全面的洞察与参考。 一、智能投顾与财…

Dify开源大语言模型(LLM) 应用开发平台如何使用Docker部署与远程访问

文章目录 1. Docker部署Dify2. 本地访问Dify3. Ubuntu安装Cpolar4. 配置公网地址5. 远程访问6. 固定Cpolar公网地址7. 固定地址访问 本文主要介绍如何在Linux Ubuntu系统以Docker的方式快速部署Dify,并结合cpolar内网穿透工具实现公网远程访问本地Dify&#xff01; Dify 是一款…

spring01:IOC(控制反转)

spring01&#xff1a;IOC&#xff08;控制反转&#xff09; 文章目录 spring01&#xff1a;IOC&#xff08;控制反转&#xff09;前言&#xff1a;一、IOC&#xff1a;inversion of control&#xff08;控制反转&#xff09;控制&#xff1a;控制对象的创建&#xff01;&#x…

西安交通大学《数据库理论与技术》课程实验+期末考试资料全通关

课程概况 首先请确认一下课程情况&#xff1a;数据库理论与技术是西安交通大学开设的秋季研究生选修课程&#xff0c;授课教师为侯迪老师。 本文涉及的所有资料下载链接&#xff1a;链接: https://pan.baidu.com/s/1oB9I6SSaWejZwmM6NfTFpg 提取码: hrww 本课程有五次当堂小…

如何在Linux中找到正在运行的Java应用的JAR文件

当你在Linux服务器上工作时&#xff0c;可能需要找到某个正在运行的Java应用的JAR文件位置。这对于诊断问题、更新应用或理解部署结构非常有用。以下是一个步骤详细的指南&#xff0c;帮助你找到这些信息。 1. 确定Java进程 首先&#xff0c;你需要确定正在运行的Java应用的进…

IDEA中修改git的作者、邮箱名称

目录 一、查看当前git信息 1、查看git作者名称 如下图&#xff1a; 2、查看git邮箱信息 二、修改git信息 1、修改git作者名称 如下图&#xff1a; 2、修改git邮箱名称 一、查看当前git信息 1、查看git作者名称 在git控制台 或者 Terminal 输入 git config user.name …

day20-二叉树part07

530.二叉搜索树的最小绝对差 思路&#xff1a;中序遍历转换成有序数组&#xff0c;遍历数组计算数组相邻元素的差值保存最小&#xff0c;多开辟一个数组空间 class Solution {private List<Integer> list new ArrayList<>();private void traversal(TreeNode roo…