2021-04-09 19:34:05 +08:00
|
|
|
|
# 脚本
|
|
|
|
|
|
2022-09-14 23:17:52 +08:00
|
|
|
|
当前目录下的脚本都是基于 MagicJS 2 或 MaicJS 3 框架进行开发。
|
2021-04-09 19:34:05 +08:00
|
|
|
|
|
2022-09-14 23:17:52 +08:00
|
|
|
|
其中 MagicJS 2 已停止维护,以下涉及的特性,都以MagicJS 3为主。
|
2021-04-09 19:34:05 +08:00
|
|
|
|
|
2022-09-14 23:17:52 +08:00
|
|
|
|
你可以在仓库的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导致信息泄露。所以请务必确保在青龙面板上运行脚本的安全性,本仓库的脚本不会窃取你的数据,但是无法避免第三方恶意脚本,窃取由本仓库的脚本存储/生成的数据。
|
2021-04-09 19:34:05 +08:00
|
|
|
|
|