零基础手把手教你写NFT抢购软
前言
由于之前写过几篇文章,但是个人不是很满意,所以这次我打算把所有的知识汇总成一篇文章。可能会有很多地方写的不是很好,欢迎大家评论指出,我后续修正。 个人vx:http://wc.ljlju.cn/4ZGETK
抢购软件原理
我们在点击抢购按钮的时候,会向平台的服务器发送HTTP请求,这条HTTP请求会携带你的账号信息(token或cookie)商品的id、数量、支付密码等等发送到服务器。服务器接收到请求后,会进行执行抢购的操作,然后再返回结果,告诉你是否抢购结果(抢购成功、库存不足、服务器异常……)。
我们的抢购软件,就是跳过了点击抢购按钮的步骤,直接向平台服务器发送抢购的HTTP请求,通过软件的循环发送,可以实现一秒钟发送几十条几百条抢购的HTTP请求,只要有一条HTTP请求被平台服务器处理成功并且返回结果为下单成功,则为抢到了商品。这种方式可比手动或者连点器强很多!!!
查看和分析HTTP请求
这里我直接用某台子进行学习讲解,大家切勿进行非法的操作。
打开下方网址:https://m.eryday.fun
点击键盘的F12,弹出调试窗口
接下来大家点击网络
好了,这时候咋们点击我的,然后随便输入手机号、输入验证码、点击发送验证码按钮,这个时候我们可以观察到有这么一个接口
这个就是你点击获取验证码按钮后,请求给后端的接口,我们接着点开他
对于上图我们一般需要关注的点有下面三个:
请求的URL地址:https://m.eryday.fun/api/verify-code/send请求方法:GETContent-type:application/json
这个是发送验证码接口,用户这时候还没有登录,所有请求头并没有token选项,后面会给大家讲到。
我们先点开负载看看里面是什么内容,负载里面的内容就是请求体
通过观察,我们发下了一下信息:
mobile:"13333333333" (我们输入的手机号)
id: "Jo9lbMldS5Gf6naD5KbAzA" (不确定是什么参数)
type:1(类型,这个应该是固定的)
captcha:x526(我们刚刚输入的验证码)
我们再点开响应看看里面的内容
再点开响应可以看到登录的结果
我们可以看到,这个就是点击”发送验证码“按钮后,接口返回的信息。通过返回信息我们可以知道这个验证码是发送失败的,因为我们的手机号输入的比较6,触发了风控机制,接下来我们刷新页面输入一个正常的手机号码,再点击发送验证码按钮,然后观察观察请求接口的情况。
上面框住的四条请求,就是我们从输入手机号、验证码到点击发送验证码按钮这个过程的所有请求了,我们一一点开请求,看看他们之间是否有联系
相信大家已经发下了,上面我们未知的id的数据,就是获取图片验证码之后的返回的id。到此,我们就分析明白了,这个网站发送验证码的所有逻辑。接下来我们来缕一缕。
第一步:请求图片验证码接口,获取图片验证码
请求URL:https://m.eryday.fun/api/captcha/graph
请求方法:POST
请求头:content-type: application/json
请求体:{"type":1,"fontSize":20,"width":100,"height":40}
接口响应:
{
"code": "0",
"data": {
"id": "xV5ZjLU8QWS2wehcnNk1Mw",
"content": "data:image/png;base64,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"
},
"success": true,
"ext": {
"executionTime": "3",
"currentDate": "2023-04-14T00:02:42.023+08:00"
},
"msg": "操作成功"
}
第二步:发送验证码
请求URL:https://m.eryday.fun/api/verify-code/send
请求方法:POST
请求头:content-type: application/json
请求体:{"mobile":"13553232231","type":1,"captcha":"mhru","id":"xV5ZjLU8QWS2wehcnNk1Mw"}
接口响应:
{
"code": "0",
"data": null,
"success": true,
"ext": {
"executionTime": "390",
"currentDate": "2023-04-14T00:02:48.629+08:00"
},
"msg": "验证码已发送到你的手机,请查收"
}
通过简单的操作,我们就能分析出来,这个平台发送验证码是请求了哪个接口,提交了拿些数据。那么我们如果想通过软件的方式去实现,那么原理就是我们也去请求这些接口,只是把mobile这个参数的值,改成我们自己输入的手机号,即可模拟发送该接口。写抢购软件也是一样的道理,先找出点击抢购按钮的接口参数,我们在通过软件模拟出一样的参数,然后循环不断的像平台发送抢购请求,从而达到快人一步的目的。
接下来我希望大家可以举一反三,分析一下该平台登录接口的信息。
通过分析登录的接口,我们就可以获取到用户的token的值,那么在后续的所有请求中,在请求头携带该token,就相当于是该用户发起的请求,平台是通过这个token,来关联这个请求到底是哪个用户发起的。
我们可以看到后续的请求都会在请求体携带这个x-token(不同网站不同的命名),用来判断是哪个用户和是否是登录的状态。
常见HTTP请求
一般的HTTP请求为GET和POST请求。通常可以这样子理解,我需要向服务器获取数据的则为GET请求,我要提交数据给服务器的为POST请求。
例如:
GET请求:获取用户信息、获取商品信息。
PSOT请求:登录账号、下单商品。
HTTP请求又分为请求头和响应体
GET方式常见请求头:
GET /login/person?name=liangjaing&password=123123 HTTP/1.1 //请求地址
Host: www.ljlju.cn //请求的目的地
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) //浏览器类型
Gecko/20050225 Firefox/1.0.1
Connection: Keep-Alive //可以不用理解
POST方式常见请求头(application/x-www-form-urlencoded)
POST test/persion HTTP/1.1
Host: www.ljlju.cn
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded //请求类型
Content-Length: 40
Connection: Keep-Alive
Cookie: xxxxxx
Token: xxxxxx //用户身份标识 拿到了token或者cookie就相当于登录了这个账号
name=liangjiang&password=123123 //请求体
POST方式常见请求头(application/json)
POST test/persion HTTP/1.1
Host: www.ljlju.cn
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/json //请求类型
Content-Length: 40
Connection: Keep-Alive
Cookie: xxxxxx
Token: xxxxxx //用户身份标识 拿到了token或者cookie就相当于登录了这个账号
{"name": "liangjiang", "mima": "123123"} //请求体
响应体就是服务器处理的结果,一般成功的code值为200,抢购的结果会在响应体中展现出来。
{"success":false,"code":20001,"message":"账户密码错误","data":{}}
手动模拟请求
如果我们最终是用易语言来编写抢购软件的话,建议用精易编程助手来模拟请求。
软件链接 https://wws.lanzouy.com/b0fft39wj 密码:c5cx
我们只需要将上面分析出来的接口的信息,填进去,点击发送请求即可,下面我模拟获取图片验证码的,请求体(提交数据)可以先点击查看源,再复制进去
最后我们获取到的响应正文,和浏览器获取到的响应是一模一样的,这个时候我们手动复制content里面的内容,data:image/png…然后浏览器打开,就能看到图片验证码,我们接着模拟发送验证码的接口,将这次的图片验证码的id和正确的图片验证码作为提交数据。就可以模拟成功发送验证码的请求。
这个时候我们的手机号成功接收到平台的验证码。
然后通过获取的验证码,再进行模拟登录接口,就能够获取到用户的token,从而进行后续的其他操作。这一步我就不演示了,希望大家可以举一反三。
提前获取抢购接口
接下来讲解怎么获取抢购的提前包
我们在写抢购接口的时候往往都得提前去获取,接下来教大家一个百试百灵也是最简单的获取提前包的方法
我们点进去看看,记得分析接口。
我先说抓提前包的思路
还是看这张图,我们需要做的就是在返回结果这里动手脚
首先我们要明白,是什么来控制网站的商品未寄售->寄售中->已售完这三个状态的变化的,其实就是这个返回结果
当我们点击商品进入商品详情的时候,接口会返回该商品的所有信息,当然也就包括了商品的寄售状态
我们想要获取提前包,那么就可以在第三步的时候,拦截服务器返回的接口数据,将代表寄售状态的数据改成寄售中,或者直接修改系统返回的寄售时间。本来系统设置该商品的寄售时间为下午2点,那么我们把这个时间改成当前时间,那么这样子就可以获取提前包了。
我们可以看看这个平台的商品详情的返回数据
{
"code": "0",
"data": {
"id": "16",
"type": 1,
"itemsLevel": null,
"title": "KAJA纪念邀请盲盒 ",
"subtitle": null,
"mainImgUrl": "https://res10.eryday.fun/rs/product/20230405/aa0448d940058098.png",
"mainImg": {
"id": "89",
"sort": 0,
"path": "res10/rs/product/20230405/aa0448d940058098.png",
"url": "https://res10.eryday.fun/rs/product/20230405/aa0448d940058098.png",
"mediaType": 1,
"canDownload": false,
"isMain": false,
"props": {
"width": 1024,
"height": 1024
}
},
"markingPrice": null,
"price": 9.9,
"logicStatus": 4, // 逻辑状态 重点关注
"startTime": "2023-04-09T20:00:00.000+08:00", //开售时间 重点关注
"endTime": "2023-04-10T00:00:00.000+08:00",
"issueNumber": 5000,
"tags": [],
"author": "",
"authorImgUrl": null,
"issuer": "iFun官方",
"issuerImgUrl": "https://res10.eryday.fun/rs/content/20230220/7e64d39a4836b899.png",
"hasPreemption": true,
"preemptionDate": null,
"rebatePoint": "0",
"userCanPreemption": null,
"introImgUrls": [
"https://res10.eryday.fun/rs/product/20230409/7dd4a6ab4e2da912.png"
],
"detailHeaderMedia": {
"id": "96",
"sort": 0,
"path": "res10/rs/product/20230409/9141040f48f6a397.png",
"url": "https://res10.eryday.fun/rs/product/20230409/9141040f48f6a397.png",
"mediaType": 1,
"canDownload": false,
"isMain": false,
"props": {
"width": 1024,
"height": 1024
}
},
"detailMedias": [
{
"id": "95",
"sort": 0,
"path": "res10/rs/product/20230409/7dd4a6ab4e2da912.png",
"url": "https://res10.eryday.fun/rs/product/20230409/7dd4a6ab4e2da912.png",
"mediaType": 1,
"canDownload": false,
"isMain": false,
"props": {
"width": 1125,
"height": 4897
}
}
],
"purchaseNotes": "数字文创藏品为虚拟数字商品,而非实物。仅限年满18周岁的中国大陆实名认证用户购买。数字文创藏品的版权由发行方和原创作者拥有,除另行获得版权拥有者书面同意外,用户不得将数字文创藏品用于任何商业用途。本商品一经售出,不支持退换。请勿对数字文创藏品进行炒卖、场外交易、欺诈或以任何其他非法方式进行使用。"
},
"success": true,
"ext": {
"executionTime": "3",
"currentDate": "2023-04-15T01:12:32.885+08:00"
},
"msg": "操作成功"
}
我们通过观察,可以发现通过修改上面的两个参数中的任意一个,都可以修改商品的寄售状态,从而提前获取抢购接口。
这个时候,咋们的抓包神器就得出场了,由于fiddler安装起来稍微复杂了一下下,这边为了方便演示,就先用另外一个软件,功能都是一样的,目的就是为了在服务器放回数据的这个阶段,将这个请求给拦截住,然后修改里面的数据,再将修改后的数据返回给平台。
我们先在文本框里将返回数据修改好,因为这个商品已经是售完状态了,所以改开始寄售时间肯定是不行了,我们直接改商品状态,先把4改成1
{
"code": "0",
"data": {
"id": "16",
"type": 1,
"itemsLevel": null,
"title": "KAJA纪念邀请盲盒 ",
"subtitle": null,
"mainImgUrl": "https://res10.eryday.fun/rs/product/20230405/aa0448d940058098.png",
"mainImg": {
"id": "89",
"sort": 0,
"path": "res10/rs/product/20230405/aa0448d940058098.png",
"url": "https://res10.eryday.fun/rs/product/20230405/aa0448d940058098.png",
"mediaType": 1,
"canDownload": false,
"isMain": false,
"props": {
"width": 1024,
"height": 1024
}
},
"markingPrice": null,
"price": 9.9,
"logicStatus": 1,
"startTime": "2023-04-09T20:00:00.000+08:00",
"endTime": "2023-04-10T00:00:00.000+08:00",
"issueNumber": 5000,
"tags": [],
"author": "",
"authorImgUrl": null,
"issuer": "iFun官方",
"issuerImgUrl": "https://res10.eryday.fun/rs/content/20230220/7e64d39a4836b899.png",
"hasPreemption": true,
"preemptionDate": null,
"rebatePoint": "0",
"userCanPreemption": null,
"introImgUrls": [
"https://res10.eryday.fun/rs/product/20230409/7dd4a6ab4e2da912.png"
],
"detailHeaderMedia": {
"id": "96",
"sort": 0,
"path": "res10/rs/product/20230409/9141040f48f6a397.png",
"url": "https://res10.eryday.fun/rs/product/20230409/9141040f48f6a397.png",
"mediaType": 1,
"canDownload": false,
"isMain": false,
"props": {
"width": 1024,
"height": 1024
}
},
"detailMedias": [
{
"id": "95",
"sort": 0,
"path": "res10/rs/product/20230409/7dd4a6ab4e2da912.png",
"url": "https://res10.eryday.fun/rs/product/20230409/7dd4a6ab4e2da912.png",
"mediaType": 1,
"canDownload": false,
"isMain": false,
"props": {
"width": 1125,
"height": 4897
}
}
],
"purchaseNotes": "数字文创藏品为虚拟数字商品,而非实物。仅限年满18周岁的中国大陆实名认证用户购买。数字文创藏品的版权由发行方和原创作者拥有,除另行获得版权拥有者书面同意外,用户不得将数字文创藏品用于任何商业用途。本商品一经售出,不支持退换。请勿对数字文创藏品进行炒卖、场外交易、欺诈或以任何其他非法方式进行使用。"
},
"success": true,
"ext": {
"executionTime": "3",
"currentDate": "2023-04-15T01:12:32.885+08:00"
},
"msg": "操作成功"
}
我们先设置系统代理,再拦截响应
发现状态改成了即将开售,那么我们继续改成2试试
成功点亮购买按钮,我们点击立即购买。就能够获取到抢购的接口了。
按照上面的思路,去分析抢购接口的请求参数、我们后续就可以通过软件生成对应的抢购请求,然后批量发送。
请求URL:https://m.eryday.fun/api/order/trading
请求头:
Accept: */*
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Connection: keep-alive
Content-Length: 61
Content-Type: application/json
Cookie: cna=c4bf69feb31f409c960ec48a4ee23f74; acw_tc=0b68a81a16814951542354451e2d0c5a97f1af858edf8feda8a6d03f44f5ba
Host: m.eryday.fun
Origin: https://m.eryday.fun
Referer: https://m.eryday.fun/
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1 Edg/112.0.0.0
x-app-type: 100
x-appversion: 1.0.9
x-appversionnum: 119
x-device-id: 16814957461176540747
x-device-type: 10
x-token: xxxxxxxxxx--xxxxxxxxxxx // 这里会携带token
请求体:
{"pid":"16","traceId":"487c83c5-bf6e-4c21-a12a-1039a3b30696"}
这个pid就是商品id,可以通过浏览器的地址,有个product_details?id=16获取
那么下面的这个traceId,应该就是平台的加密数据了,那么这个又是下面的知识点了,但是这个后面通过解密发现其实就是一个UUID,相当于一个随机的字符串,我们在手动模拟请求的时候可以随便改几个数据,也可以发送成功
这样子我们直接就拿到抢购接口了。大家可以找找其他平台练练手,这个还是很简单的。特别是该发售时间,建议先改这个。百分之99的平台都可以通过这个方法提前获取抢购接口。
破解接口加密的几种常用的方法
因为数藏台子都是赶鸭子上架的,大多数平台的加密措施其实做的并不是很好,也很多根本没有加密的,基本上的关于数藏平台的加密方式,都是相对比较简单的。
下面是比较常见的加密方式和他的一些特征:
MD5加密
这种加密方式是不可逆的,一般用在登录的时候,因为是不可以解密的,所以当你登录的时候将密码通过一定的规则MD5加密之后,传到服务器,服务器会从数据库中获取到你的密码,然后用相同的规则进行MD5加密(比如加一段特定的字符串),然后和你传过来的MD5进行比较,如果一致则登录成功。
假设我的密码是“123456”,一般网站做MD5加密的时候,会在密码后面拼接一串字符串变成“123456liangjiang666”,然后对123456liangjiang666进行MD5加密
加密后的数据为:b5f69f2a0b186354da715d6e80249e2b
这串加密的数据是无法解密的,但是不管加密123456liangjiang666多少次,最终的结果都是b5f69f2a0b186354da715d6e80249e2b
DES / AES 加密
DES 是一种使用密钥加密的算法。该加密算法是一种对称加密方式,其加密运算、解密运算需要使用的是同样的密钥(一组字符串)即可。
这个加密方式我们一般需要关注这三个点
Key:为 7 个字节共 56 位,是 DES 算法的工作密钥Data:为 8 个字节 64 位,是要被加密或别解密的数据Mode:为 DES 的工作方式
在JS逆向的时候只需要找到key即可,这块得在视频讲解。
RSA 加密
RSA 加密算法是一种非对称加密算法。
通过公钥加密,使用私钥解密。私钥是通过公钥计算生成的。假设 ABC 三方之间互相要进行加密通信,大家互相之间使用公钥进行信息加密,信息读取时使用各自对应的私钥进行信息加密用户输入支付密码会通过 RSA 加密
JS逆向的时候找公钥和私钥,一般都会存在前端
base 64 伪加密
Base64 是一种使用 64 位字符来表示任意二进制数据的方法。base64 是一种编码方式而不是加密算法,只是看上去像是加密而已,上面说到的图片验证码,就是base64编码,这个无需解密,转换一下即可。
对于上面的平台的traceId加密其实就是上图这段,让我们问问chatgpt这是个啥玩意
我们用软件生成一下就行了
抢购软件的编写
编写抢购软件,可以选择很多语言,易语言、python、java啥的都是可以的,这块我打算放在视频上面讲解,或者去看看我前面几篇文章,我展示下用chatgpt写哈哈
直接拿下,用易语言编写的话直接软件可以生成,非常方便
后续以视频的方式带大家入手抢购软和捡漏软