Clash/script/README.md
2022-09-15 21:10:09 +08:00

169 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 脚本
当前目录下的脚本都是基于 MagicJS 2 或 MaicJS 3 框架进行开发。
其中 MagicJS 2 已停止维护以下涉及的特性都以MagicJS 3为主。
你可以在仓库的README中查询到哪些项目是基于MagicJS3的。
**涉及NodeJS含青龙面板的内容统一在此说明单个脚本的README中不再赘述。**
## 数据存储
### iOS平台
基于 MagicJS 2/3 编写的脚本运行在iOS平台的APP中时数据存储在由APP提供的存储池。
### NodeJS
运行在NodeJS环境中时数据存储在脚本同级目录下的magic.json文件中而不存储在环境变量。
如果有需求可以将不同的脚本存放在不同的目录下读取不同的magic.json文件来实现数据隔离。
如果将所有的脚本数据存储在同个magic.json文件中它们也可以和谐相处。
例如下面的例子,把什么值得买和饿了么的数据存储在一起。
```json
{
"smzdm_cookie": "xxxxxxxxxxxxxxxxxxxxxxx",
"eleme_app_longitude": "xxxxxxxxxxxxxxxxx",
"eleme_app_latitude": "xxxxxxxxxxxxxxx",
"eleme_task_keywords": "xxxxxxxxxxxxxxxxxxxx",
"magic_bark_url": "xxxxxxxxxxxxxxxxxxxxxx"
}
```
### 脚本变量
基于MagicJS 3的脚本会在README中明确说明使用的变量。在iOS平台下这些变量可以在BoxJS中配置和修改。在NodeJS环境下这些变量需要手动编辑magic.json文件。
### 共用变量
基于 MagicJS 3 的脚本,除脚本自身所需的变量外,以下的变量是所有脚本共用的。所有基于 MagicJS 3 的脚本(Magic 2 除外)在iOS平台下都会受到共用变量的影响。而在NodeJS环境下共用变量会影响所有读取同一个magic.json的脚本。
| 变量名 | 类型 | 说明 |
| -------------- | ------ | ------------------------------------------------------------ |
| magic_bark_url | string | Bark推送链接如 https://api.day.app/xxxxxxxxxxxxxxx/ |
| magic_loglevel | string | 日志等级,默认`INFO`,出现问题选`DEBUG`更多等级见MagicJS手册 |
## 青龙面板
MagicJS 3 增加“青龙面板模块”可以将所使用的变量直接同步到青龙面板的magic.json文件中。以此来实现手机仅获取Cookie青龙面板进行签到。
同步变量需要通过手机访问青龙面板接口,请确保青龙面板可以被手机正常访问。
### 同步开关
支持数据同步到青龙面板的脚本在BoxJS中都会有同步开关请先将其打开。
![](https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/tieba/images/05.jpg)
如果没有青龙面板、访问缓慢,甚至无法访问,不建议在平时打开此功能,以免由于网络问题造成客户端加载数据缓慢。
### 配置连接
使用前需要在BoxJS中配置青龙面板的链接。
![](https://raw.githubusercontent.com/blackmatrix7/ios_rule_script/master/script/tieba/images/04.jpg)
配置完成后如果访问没有问题每次获取到的Cookies都会同步到青龙面板。
### 存储目录
数据存储在青龙面板的脚本管理目录下的magic.json文件中。只有在同级目录下的脚本才会访问magic.json文件中的数据。
## 多账户
`MagicJS 3` 开始,正式对多账户进行支持,**部分脚本已实现多账户签到,如百度贴吧签到。**
多账户分为以下几种情况:
1. APP本身可以支持多账户
以百度贴吧为例APP客户端本身能够切换账号。这类程序实现多账号仅需要切换账号后重启APP以重新获取Cookies即可。
2. 通过网页登录的多账户
可以通过隐身模式、无痕模式等浏览器功能,来实现多账号同时登录,如什么值得买的签到。
3. APP不支持多账户但退出账户后Cookies不会失效
通过获取Cookie -> 退出账号 -> 登录新账号 -> 获取新账号Cookie的方式来实现多账户。
4. APP不支持多账户退出账户后Cookies失效
此类情况需要在不同设备上登录不同的账户将Cookies同步到青龙面板由青龙面板实现多账户签到。
### 数据存储
多账户的数据以JSON格式存储。
以百度贴吧的为例多账户Cookies存在在JSON中的格式类似下面
```json
{
"tieba_signin_cookie": {
"magic_session": true,
"百度用户1": "你第一个账户的Cookie",
"百度用户2": "你第二个账户的Cookie",
"百度用户3": "你第三个账户的Cookie"
}
}
```
其中 **`"magic_session": true` 不可删除和更改它用来辅助MagicJS判断存储的是Sessions还是Object。**
`百度用户1`这样的文字可以随意编写只要不重复。如果是由脚本自动获取通常是用户id等唯一标识。
不建议手动修改多账户的JSON字符串错误的JSON字符串可能会导致脚本运行异常。
### 脏数据
如果因意外情况产生脏数据导致多账户的签到出现异常建议将Cookie数据进行删除重新获取所有账户的Cookie。
例如上述的`tieba_signin_cookie`,出现异常时,应将整个`tieba_signin_cookie`删除,全部重新获取。
## 安全性
JavaScript脚本可以执行非常多的操作通常来说在客户端中调用脚本属于高风险行为。您在使用脚本前务必确认脚本安全可信如果有条件应该仔细阅读脚本代码。
### 特别注意
#### 脚本是否含有对外发送请求的操作
如带有Cookie、Token、Password等等可以作为身份凭证的请求这类请求比较敏感务必确认请求的目标安全可信。理论上恶意脚本可以利用你的Cookie进行非常多的行为如发帖、购物等等。
#### 脚本对响应体进行修改
对于修改响应体的脚本必须确认修改响应体内容可信。通过对Http请求响应体的修改可以在客户端上显示一些欺诈信息例如显示一些虚假的中奖信息。
应慎重使用可以由远端控制修改响应体的脚本,此类脚本可能在当初检查时执行的结果是正常的,但是在某个时刻,可由远端控制修改响应内容。
### 加密的脚本
本仓库的脚本源码都完全开放不加密不混淆不会将你的信息发送给任何第三方欢迎进行Code Review。
**出于安全性考虑,不建议使用任何被加密、混淆的脚本。**
### 青龙面板
如果你在使用青龙面板由于magic.json内的数据是完全开放不做加密的并不能防止其他恶意脚本读取magic.json导致信息泄露。
所以请务必确保在青龙面板上运行脚本的安全性本仓库的脚本不会窃取你的数据但是无法避免第三方恶意脚本窃取由magic.json的内容。
##### 数据同步
MagicJS 3的青龙模块提供了快速将手机上数据同步至青龙面板的功能但也带来额外的安全风险。
青龙面板所需的登录配置,受运行环境限制,仅能以明文的形式存储在客户端提供的存储池中。
如果恶意脚本篡改青龙面板的登录配置脚本会将你的Cookies等数据同步至恶意脚本所提供的青龙面板中造成信息泄露。此类风险在当前的条件下没有很好的解决方式。
**所以再次建议不要使用被混淆和加密的脚本。**