# [空投脚本基础-女巫篇]-几个你必须知道的流程控制方式

By [0xmetaOG](https://paragraph.com/@0xmetaog) · 2024-04-23

---

> **如果想跟踪最新资讯可以关注我的推特：**[**@airdorp\_cmd**](https://twitter.com/airdorp_cmd)
> 
> **我会保持，日—周—月三个级别的不同题材更新。**
> 
> **喜欢的可以点赞转发，也欢迎大家一起交流学习：**[**TG社区**](https://t.me/CoinMarketData_1)

**从脚本的角度看，我们知道，常见的女巫方式有以下几种：**

*   **重放：重复发送或者是复制发送，相同的内容**
    
*   **输入错误：输入的信息错误**
    
*   **交互逻辑：正常的用户交互逻辑顺序问题**
    
*   **权限过度使用：非正常接口调用权限过度使用**
    

![](https://storage.googleapis.com/papyrus_images/d691d1718a7d04288c865a511889d008b6fe2cbdd454af52269468ba3259906a.png)

按照以上的逻辑我们归结一下几点来充分说明：

> ### 一、交互顺序问题

交互顺序逻辑，我们举一个简单的例子来说明。

对于有DID认证权限的项目来说，我们要做的顺序是先去请求对应的DID权限，然后再去请求对应的交互逻辑接口。

这里有一个问题，正常情况下，我们一般是先知道接口再去写交互脚本的，这时候我们一般是知道有了DID权限之后，我们需要请求哪些接口来完成任务。正常的顺序是：

a、请求DID身份认证信息。

b、完成交互任务

但是，很多时候，很多脚本的请求顺序是，直接去交互任务，这时候就会越权请求对应的任务接口，返回错误信息之后通过判断没有权限然后再去请求对应的DID身份认证信息，再去进行任务交互。

这种逻辑正确吗？

好像没什么问题，但是如果前端接口进行了埋点记录，这就是一种女巫行为，因为正常的前端操作是不可能先去做任务再去请求DID的，没有认证信息之前，任务按钮一般都是灰色的或者是不显示的。只有通过脚本才能进行调用。

> ### 二、越权调用或接口过度使用

越权其实通过上述案例启示可以很容易理解，就是非认证权限下调用下层接口。

这就会让前端埋点被动记录。

接口过度使用其实也很容易理解。

举一个简单的例子。

对于常规任务的先后顺序不论是后端接口还是前端交互界面，一般都是有一个全局变量来控制的。

对于一系列连续的交互任务来说，我们的逻辑顺序是，一件一件按次序的完成，然后再和全局接口进行比对校验，其实每一次的交互都会有对应的返回值，这也是可以作为全局判断的依据。

**不可行也是不可取的是，每次交互都是请求全局状态认证进行校验。**

比如：用户任务状态接口是

    https://xxx.com/user/config
    

请求任务接口为：

    https://xxx.com/user/task1
    https://xxx.com/user/task2
    https://xxx.com/user/task3
    

常规的开发逻辑应该是：全局config是一个用户状态维护，不同任务接口是局部接口的任务状态维护，完成对应的任务都会有对应的返回值返回回来。

如果按照，每完成一个任务就去请求一下config接口来进行校验任务状态，这其实就属于过度请求。常规的产品中，除非了用户刷新和用户主动更新，是不会频繁请求config接口的，这气势就是一个隐患，一定会有吗？不一定，但是一旦有就100%女巫。

以上均是站在严格女巫的角度来做的接口调用方面的逻辑顺序树立，并不一定适合所有项目，但是如果能避免就尽量避免这些不必要的麻烦。

毕竟当下的交互成本并不低，所以尽可能的规避不必要的风险。

因为web3当前处于一个很早起的阶段，项目周期也很短，开发周期更短，以上说的内容并不能代表所有的项目配置，但这一定是趋势。随着更多的web2开发着参与进来，我想web2的防范水平也很快会普及到web3中，这只是时间问题。

如果你想获得更多web3脚本交互信息可以关注我的推特，或者订阅

[Subscribe](null)

我们会持续保持更新，让健康的交互成为更多人可以做的事情。

---

*Originally published on [0xmetaOG](https://paragraph.com/@0xmetaog/46oPb3L81vtxBge0RoWp)*
