| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> 调用Eosjs进行cloudwallet与anchorwallet双重签名实现步骤 -> 正文阅读 |
|
[JavaScript知识库]调用Eosjs进行cloudwallet与anchorwallet双重签名实现步骤 |
感谢@encoderlee 分享的两篇文章,作为我学习EOS签名的基础 【WAX链游】EOS网络第三方代付CPU资源【原理】_encoderlee的博客-CSDN博客 ??????【WAX云钱包】解决Cloudflare通过SSL指纹识别实现的反爬虫机制_encoderlee的博客-CSDN博客_cloudflare 爬虫其中,反爬机制我使用了cloudscraper库在进行connect的时候没有加入指纹信息,导致无法通过cloudflare验证。后来改用作者提供的方法一代码顺利通过。 我在使用python36版本时,无论是使用反扒库还是直接用代码更改指纹,都会有报错,应该是培养python36自带的ssl版本库不兼容问题。没有花太多时间去分析,直接使用python37? ok。 在脱离浏览器的过程中,遇到以下问题(由于本人之前没有学习过JavaScript,因此很多问题可能是一些基础性错误,本文仅按照本人的实践步骤排序): 1.将wax签名与eos签名分为两个步骤,封装至js代码的两个函数中,js代码直接在html页面中调用正常,可顺利完成交易操作。 2.但此时任然需要一个浏览器的壳子来执行js代码。因此采用PyExecJS库来执行js代码。执行过程中报错很多,且错误不明确。 3.直接在node中运行js文件,js文件中全局执行封装的函数,参数写死在js文件中。 4.html中引用的js代码可以用src=xxx? 的格式导入,但纯js则不行(在此过程中还试图使用dom模拟一个页面出来,没走通,暂且不提) 5.js引用模块有?import 与 require 两种模式,而且两种模式视乎不能兼容存在。由于EOSJS github中的给出的示例是import模式,但fetch模块又用的是require,这个地方耽误了大量时间。 6.经反复验证,确认采用import模式导入eosjs模块才是正解,但在node运行时报错。原因时需要在js文件所在目录创建一个package.json文件,设置其中的"type": "module" 。该文件可以通过 npm init 指令创建。 7.最开始 eosjs?JsonRpc对象初始化时没有设置 fetch的,中间一直报错,后来直接定位到报错文件,加入日志后发现JsonRpc对象中的fetch为空。这个对象我理解是请求数据之类的。在html中不报错是因为浏览器有一个全局对象。这个参数要用键值对的字典形式传递。 8.ok,至此,node中可成功调用包装的js库。但在使用?PyExecJS执行的时候仍然出现报错,大意还是require和import导入模式的问题。但这方面相关资料实在太少,另外我看到了一些文章说PyExecJS库将不再维护。 9.后来尝试用popen来执行这部分代码,可执行成功,但使用readlines获取结果的时候报错,并且传参很难受。因此调整思路,在js代码中建立一个轻型http服务。用于和python代码交互,服务的基本思路就是通过url参数判断是调用哪个函数,body中传入json格式数据,解析数据后调用js内函数执行交易。 一些小的问题: 1.npm安装包时用的不是全局安装模式,所有依赖包安装在我的js项目下。 2.一定要接收eosjs交易的异常,并进行转换(不知道怎么将http异常直接转换为http的request返回,这里面还调整了不少代码) 用selenium执行脚本的时候,异常会直接返回给python程序。自己写服务的话就要自己处理异常。 3.中途觉得调用js整个代码太复杂了,其实就是需要获取一个序列化的交易数据。但序列化的方法是从区块链服务器中返回的ABI构建的,由于本人一方面不属性JavaScript,另一方面对EOS的ABI又是已知半解,并且核对返回的序列化数据和eospy模块里返回结果存在差异(也有可能是我分析有问题,但实在是没有精力去搞了) 4.cloudwallet的http请求发送其实很简单,把cloudscraper搞定之后基本可以当作明文数据来看。先发送一个登录请求获取一个cookie。然后添加cookie再发送一个请求获取到token,之后所有的签名请求都使用这个token验证即可。 虽然cloudwallet有一个谷歌的reCapture验证,但、这个好像只会在前端生效,发送请求时这个参数传空也没有问题。 2022-04-13补充: 今天js的http服务挂掉了2次,没有抛出异常,没分析出原因。 花了一些时间,研究了eospy库中序列化的格式,发现和eosjs序列化结果基本一致,至此,已能完全脱离浏览器、js代码,在纯python代码中运行。收工。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:28:26- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |