前言

由于之前写过几篇文章,但是个人不是很满意,所以这次我打算把所有的知识汇总成一篇文章。可能会有很多地方写的不是很好,欢迎大家评论指出,我后续修正。
个人vx:http://wc.ljlju.cn/4ZGETK

抢购软件原理

我们在点击抢购按钮的时候,会向平台的服务器发送HTTP请求,这条HTTP请求会携带你的账号信息(token或cookie)商品的id、数量、支付密码等等发送到服务器。服务器接收到请求后,会进行执行抢购的操作,然后再返回结果,告诉你是否抢购结果(抢购成功、库存不足、服务器异常……)。

我们的抢购软件,就是跳过了点击抢购按钮的步骤,直接向平台服务器发送抢购的HTTP请求,通过软件的循环发送,可以实现一秒钟发送几十条几百条抢购的HTTP请求,只要有一条HTTP请求被平台服务器处理成功并且返回结果为下单成功,则为抢到了商品。这种方式可比手动或者连点器强很多!!!

查看和分析HTTP请求

这里我直接用某台子进行学习讲解,大家切勿进行非法的操作。

打开下方网址:https://m.eryday.fun

点击键盘的F12,弹出调试窗口

image-20230413233711087

image-20230413233921711

接下来大家点击网络

image-20230413234328573

好了,这时候咋们点击我的,然后随便输入手机号、输入验证码、点击发送验证码按钮,这个时候我们可以观察到有这么一个接口

image-20230413234541337

这个就是你点击获取验证码按钮后,请求给后端的接口,我们接着点开他

image-20230413235012124

对于上图我们一般需要关注的点有下面三个:

  1. 请求的URL地址:https://m.eryday.fun/api/verify-code/send
  2. 请求方法:GET
  3. Content-type:application/json

这个是发送验证码接口,用户这时候还没有登录,所有请求头并没有token选项,后面会给大家讲到。

我们先点开负载看看里面是什么内容,负载里面的内容就是请求体

image-20230413235444703

通过观察,我们发下了一下信息:

mobile:"13333333333" (我们输入的手机号)
id: "Jo9lbMldS5Gf6naD5KbAzA" (不确定是什么参数)
type:1(类型,这个应该是固定的)
captcha:x526(我们刚刚输入的验证码)

我们再点开响应看看里面的内容

再点开响应可以看到登录的结果

image-20230413235826949

我们可以看到,这个就是点击**”发送验证码“按钮后,接口返回的信息。通过返回信息我们可以知道这个验证码是发送失败的,因为我们的手机号输入的比较6,触发了风控机制,接下来我们刷新页面**输入一个正常的手机号码,再点击发送验证码按钮,然后观察观察请求接口的情况。

image-20230414000311020

上面框住的四条请求,就是我们从输入手机号、验证码到点击发送验证码按钮这个过程的所有请求了,我们一一点开请求,看看他们之间是否有联系

image-20230414000543325

image-20230414001048312

image-20230414001118115

image-20230414000616048

相信大家已经发下了,上面我们未知的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这个参数的值,改成我们自己输入的手机号,即可模拟发送该接口。写抢购软件也是一样的道理,先找出点击抢购按钮的接口参数,我们在通过软件模拟出一样的参数,然后循环不断的像平台发送抢购请求,从而达到快人一步的目的。

接下来我希望大家可以举一反三,分析一下该平台登录接口的信息。

image-20230414001909688

通过分析登录的接口,我们就可以获取到用户的token的值,那么在后续的所有请求中,在请求头携带该token,就相当于是该用户发起的请求,平台是通过这个token,来关联这个请求到底是哪个用户发起的。

image-20230414002058316

我们可以看到后续的请求都会在请求体携带这个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

image-20230414002649570

image-20230414002558234

我们只需要将上面分析出来的接口的信息,填进去,点击发送请求即可,下面我模拟获取图片验证码的,请求体(提交数据)可以先点击查看源,再复制进去

image-20230414002811489

image-20230414002946685

image-20230414003038683

最后我们获取到的响应正文,和浏览器获取到的响应是一模一样的,这个时候我们手动复制content里面的内容,data:image/png…然后浏览器打开,就能看到图片验证码,我们接着模拟发送验证码的接口,将这次的图片验证码的id和正确的图片验证码作为提交数据。就可以模拟成功发送验证码的请求。

image-20230414003247286

image-20230414003515824

image-20230414003702247

这个时候我们的手机号成功接收到平台的验证码。

然后通过获取的验证码,再进行模拟登录接口,就能够获取到用户的token,从而进行后续的其他操作。这一步我就不演示了,希望大家可以举一反三。

提前获取抢购接口

接下来讲解怎么获取抢购的提前包

我们在写抢购接口的时候往往都得提前去获取,接下来教大家一个百试百灵也是最简单的获取提前包的方法

image-20230415011128832

我们点进去看看,记得分析接口。

image-20230415011356363

我先说抓提前包的思路

还是看这张图,我们需要做的就是在返回结果这里动手脚

首先我们要明白,是什么来控制网站的商品未寄售->寄售中->已售完这三个状态的变化的,其实就是这个返回结果

当我们点击商品进入商品详情的时候,接口会返回该商品的所有信息,当然也就包括了商品的寄售状态

image-20230415014913556

我们想要获取提前包,那么就可以在第三步的时候,拦截服务器返回的接口数据,将代表寄售状态的数据改成寄售中,或者直接修改系统返回的寄售时间。本来系统设置该商品的寄售时间为下午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": "操作成功"
}

image-20230415015731322

我们先设置系统代理,再拦截响应

image-20230415015826491

image-20230415020329732

image-20230415020948373

发现状态改成了即将开售,那么我们继续改成2试试

image-20230415021054733

成功点亮购买按钮,我们点击立即购买。就能够获取到抢购的接口了。

image-20230415021228304

按照上面的思路,去分析抢购接口的请求参数、我们后续就可以通过软件生成对应的抢购请求,然后批量发送。

请求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,相当于一个随机的字符串,我们在手动模拟请求的时候可以随便改几个数据,也可以发送成功

image-20230415021853585

这样子我们直接就拿到抢购接口了。大家可以找找其他平台练练手,这个还是很简单的。特别是该发售时间,建议先改这个。百分之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编码,这个无需解密,转换一下即可。

image-20230415125054608

image-20230415125022693

对于上面的平台的traceId加密其实就是上图这段,让我们问问chatgpt这是个啥玩意

image-20230415125718709

我们用软件生成一下就行了

image-20230415125832510

抢购软件的编写

编写抢购软件,可以选择很多语言,易语言、python、java啥的都是可以的,这块我打算放在视频上面讲解,或者去看看我前面几篇文章,我展示下用chatgpt写哈哈

image-20230415130622959

image-20230415130637799

直接拿下,用易语言编写的话直接软件可以生成,非常方便

image-20230415130914400

后续以视频的方式带大家入手抢购软和捡漏软

在这里插入图片描述

Logo

为所有Web3兴趣爱好者提供学习成长、分享交流、生态实践、资源工具等服务,作为Anome Land原住民可不断优先享受各种福利,共同打造全球最大的Web3 UGC游戏平台。

更多推荐