给大家分享下之前很火的 lifeform 的 free mint 代码交互思路,如何签名,如何找到数据,如何排查的;现在还能 mint 的
请跟我一样,浏览器打开 mint 网址后,打开你的F12,简单的抓个包;看我的设置,去除杂七杂八的请求
我们先用小狐狸跑一遍流程,连接钱包,提示签名。复制下签名信息,注意签名信息的内容,长这样的 'address=你的钱包地址,chain_id=56' 这里你要学会用 web3库 Account 来签名消息
import web3
from eth_account.messages import encode_defunct
privkey='xxxx' # 你的私钥
account = web3.Account.from_key(privkey)
msg = 'address=%s,chain_id=56' % account.address
signature = account.sign_message(encode_defunct(text=msg)).hex()
拿到签名的数据后,我们需要找到请求的登陆接口,大致长这样。注意你的标头信息看到 请求网址 和 请求方法,并且打开旁边的载荷,载荷就是要传输的数据,有3个字段 address: 你的钱包地址 chain_id: bsc chainid sign: 刚才你用 web3 Account签名的消息
通过预览,我们看到了请求返回的数据,我们就是需要返回的 access_token,这个数据需要加到后续请求的header里
页面点击 mint 我们可以看看发生了哪些请求,找不一致,发现这个接口。看到接口里的header authorization 字段的值就是刚才通过登录接口拿到的access_token
再次查看载荷,发现有3个字段 address: 你的钱包地址 affAddress: 邀请地址 它+500分 gender: female 固定参数
再次查看预览,看到了这些数据,不着急,数据字段有点多,先把数据复制好。小狐狸确认 mint ,广播 tx 后,拿到 tx 的inputdata,我们再来对比,确认需要的参数
通过对比,我们发现之前的接口里的
signCode = InputData [10]
wlSignature = InputData [13] [14]
dataSignature.signature = InputData [17] [18]
这样我们就拿到了 free mint 所需要的参数,InputData 其他的字段数据大家可自行分析下,通过与其 他 tx 对比;拼接成完整的数据后,再通过合约交互,就能实现代码的成功 mint 了;
熟练钱包签名
善用抓包工具
细心排查数据