Skip to content

封装函数

说明

1.1. 网络请求

同步请求, 请在 worker 进程中使用

js
import { fetch, request, fetchCookie, post, fetchPC, postPC, convertBase64Image, batchFetch, bf } from '@main/utils/hiker/request';

[1] fetch(url, options)
    // options带onlyHeaders: 获取返回的headers-返回内容{'Set-Cookie':['a=b','b=c']};
    // options带withHeaders: 获取返回的header-返回内容"{body:'字符串内容',headers:{}}"
    // options带withStatusCode: 获取返回的状态码-返回内容"{body:'字符串内容',headers:{},statusCode:200}"
    // options带toHex: 响应体返回hex数据-返回内容"{body:'hex内容',headers:{},statusCode:200}"
[2] request(url, options) // 同fetch
[3] fetchCookie(url, options) // 单独获取cookie-返回结果"['a=b','b=c']"
[4] post(url, options) // 默认options.method为POST
[5] fetchPC(url, options) // 默认options.method为GET, 模拟PC端UA
[6] postPC(url, options) // 默认options.method为POST, 模拟PC端UA
[7] convertBase64Image(url) // 传入url获取base64图片-返回内容"data:image/jpeg;base64,xxxxxx"
[8] batchFetch(urls, options) // 批量请求-返回结果[同fetch结果1, 同fetch结果2, ...]
[9] bf(url, options) // 同batchFetch

1.2. 数据加密

js
import { base64Encode, base64Decode, aesEncode, aesDecode, decodeStr, encodeStr, rsaEncrypt, rsaDecrypt, md5, base64java, _base64, hexToBytes, hexToBase64, window0, rc4, } from '@main/utils/hiker/crypto';

[1] base64Encode(val) // base64加密
[2] base64Decode(val) // base64解密
[3] aesEncode(key, val) // aes加密
[4] aesDecode(key, val) // aes解密
[5] encodeStr(val, encoding: 'utf8' | 'gbk' | 'gb2312') // 字符串加密
[6] decodeStr(val, encoding: 'utf8' | 'gbk' | 'gb2312') // 字符串解密
[7] rsaEncrypt(key, val) // rsa加密
[8] rsaDecrypt(key, val) // rsa解密
[9] md5(val) // md5加密
[10] _base64{decodeToString,encodeToString,encode,decode} // 复刻android.util.Base64
[11] base64java // 同_base64
[12] hexToBytes(val) // 十六进制转byte数组
[13] hexToBase64(val) // 十六进制转base64
[14] window0{atob,btoa} // window0.atob 解密 window0.btoa 加密
[15] rc4{encode,decode} // rc4.encode加密 rc4.decode解密

1.3. 文件操作

Sync是同步方法, 不带则为异步方法

js
import { fileExist, fileExistSync, fileSize, fileSizeSync, fileState, fileStateSync, deleteFile, deleteFileSync, readFile, readFileSync, saveFile, saveFileSync, readDir, readDirSync, readJson, readJsonSync, deleteDir, deleteDirSync, createDir, createDirSync } from '@main/utils/hiker/file';

[1] fileExist(path) // 判断文件是否存在, 返回boolean
[2] fileExistSync(path) // fileExist同步方法
[3] fileState(path) // 获取文件状态, 返回dir|file|unkown
[4] fileStateSync(path) // fileState同步方法
[5] deleteFile(path) // 删除文件
[6] deleteFileSync(path) // deleteFile同步方法
[7] readFile(path, crypto(0:不加密, 1:gzip加密)) // 读取文件
[8] readFileSync(path, crypto(0:不加密, 1:gzip加密)) // readFile同步方法
[9] saveFile(path, content, crypto(0:不加密, 1:gzip加密)) // 保存文件
[10] saveFileSync(path, content, crypto(0:不加密, 1:gzip加密)) // saveFile同步方法
[11] readDir(path) // 读取目录
[12] readDirSync(path) // readDir同步方法
[13] deleteDir(path) // 删除目录
[14] deleteDirSync(path) // deleteDir同步方法
[15] fileSize(path) // 获取文件大小
[16] fileSizeSync(path) // fileSize同步方法

1.4. 路径获取

js
import { APP_MARK, APP_MARK_PATH, APP_STORE_PATH, APP_TMP_PATH, APP_DB_PATH, APP_LOG_PATH, APP_PLUGIN_PATH, APP_FILE_PATH,APP_PUBLIC_PATH, APP_RUNTIME_PATH, isAppMarkPath, isAppStorePath, getAppDefaultPath, relative2absolute, absolute2relative } from '@main/utils/hiker/path';

[1] APP_MARK // 应用标识 zy
[2] APP_MARK_PATH // 应用标识路径 zy://
[3] APP_STORE_PATH // 返回应用存储路径 app.getPath('userData')
[4] APP_TMP_PATH // 返回应用临时路径 APP_STORE_PATH/tmp
[5] APP_DB_PATH // 用数据库路径 APP_STORE_PATH/database
[6] APP_LOG_PATH // 应用日志路径 APP_STORE_PATH/log
[7] APP_PLUGIN_PATH // 应用插件路径 APP_STORE_PATH/plugin
[8] APP_FILE_PATH // 应用文件路径 APP_STORE_PATH/file
[9] APP_PUBLIC_PATH // 应用公共路径 app.getAppPath()/resources
[10] APP_RUNTIME_PATH // 应用运行时路径 app.getAppPath()/resources/app.asar 或 app.getAppPath()/resources/app.asar.unpacked
[11] isAppMarkPath // 判断是否APP_MARK开头
[12] isAppStorePath // 判断是否APP_STORE_PATH开头
[13] getAppDefaultPath(path) // 获取应用默认路径 app.getPath(path)
[14] relative2absolute(path) // 相对路径转绝对路径, 相对路径为zy://开头
[15] absolute2relative(path) // 绝对路径转相对路径, 相对路径为zy://开头

1.5. 用户代理

js
import { MOBILE_UA, PC_UA, UA, UC_UA, IOS_UA } from '@main/utils/hiker/ua';

// const MOBILE_UA = 'Mozilla/5.0 (Linux; Android 11; Pixel 5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.91 Mobile Safari/537.36';
// const PC_UA = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36';
// const UA = 'Mozilla/5.0';
// const UC_UA = 'Mozilla/5.0 (Linux; U; Android 9; zh-CN; MI 9 Build/PKQ1.181121.001) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.5.5.1035 Mobile Safari/537.36';
// const IOS_UA = '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';

Released under the MIT License.