自动混淆 cm-edt 项目的 js 代码
如果你 fork 了 cm 的 edt 项目,且没有任何修改,那么本文可以略过,cm 的库已经自带了自动同步和混淆的工作流 yml 文件。如果你跟我一样对代码进行了修改,可能会导致自动同步出错,明文 js 不能保持最新,也就无法自动混淆,那么本文可以解决这一问题。
自动拉取最新 明文源码 js
文件
首先 fork cm 的 edt 项目
在自己的仓库的 .github/workflows/
目录新建一个文件,命名为 files-sync.yml
,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| name: Upstream File Sync
permissions: contents: write
on: schedule: - cron: "0 0 * * *" workflow_dispatch:
jobs: sync_latest_from_upstream: name: Sync specific file from upstream repo runs-on: ubuntu-latest if: ${{ github.event.repository.fork }} env: FILE_TO_SYNC: 明文源码.js
steps: - name: Checkout target repo uses: actions/checkout@v3
- name: Add upstream repo run: | git remote add upstream https://github.com/cmliu/edgetunnel.git git fetch upstream
- name: Force update or create file from upstream run: | git checkout upstream/main -- "$FILE_TO_SYNC" || true echo "强制更新或新建本地文件 $FILE_TO_SYNC 完成"
- name: Commit changes run: | if ! git diff --quiet HEAD "$FILE_TO_SYNC"; then git config --global user.name "GitHub Actions Bot" git config --global user.email "actions@github.com" git add "$FILE_TO_SYNC" git commit -m "强制覆盖或更新 $FILE_TO_SYNC" git push else echo "没有检测到文件更改,跳过提交" fi
|
按自己的需求修改源代码
如果你会 js,可以自行修改代码,或按 我的教程 进行 csv 节点名称格式化的修改。我的仓库 已经进行过修改,其中的 明文源码2.js
文件即是。下文代码 js 文件名以 明文源码2.js
为例,如果你修改后的文件名不是这个,请自行修改 yml 文件中对应的文件名。
自动混淆修改后的 明文源码2.js
在自己仓库的 .github/workflows/
目录新建 obfuscator2.yml
文件,内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
| name: Obfuscate js2
permissions: contents: write
on: push: paths: - 明文源码2.js workflow_dispatch:
jobs: obfuscate_and_update_worker: name: Obfuscate js2 runs-on: ubuntu-latest
env: SOURCE_FILE: 明文源码2.js OUTPUT_FILE: jiami2.js
steps: - name: Checkout repository uses: actions/checkout@v3
- name: Setup Node.js uses: actions/setup-node@v3 with: node-version: 18
- name: Install obfuscation tool run: | npm install -g javascript-obfuscator
- name: Obfuscate ${{ env.SOURCE_FILE }} run: | javascript-obfuscator $SOURCE_FILE --output $OUTPUT_FILE \ --compact true \ --control-flow-flattening true \ --control-flow-flattening-threshold 1 \ --dead-code-injection true \ --dead-code-injection-threshold 1 \ --identifier-names-generator hexadecimal \ --rename-globals true \ --string-array true \ --string-array-encoding 'rc4' \ --string-array-threshold 1 \ --transform-object-keys true \ --unicode-escape-sequence true echo "已生成混淆后的 $OUTPUT_FILE 文件"
- name: Check if ${{ env.OUTPUT_FILE }} is updated run: | git status ls -l $OUTPUT_FILE
- name: Commit and push changes run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git add $OUTPUT_FILE git commit -m "更新混淆后的 $OUTPUT_FILE 文件" || echo "无更改,跳过提交" git push
|
手动运行该 工作流 action
,会在仓库根目录自动生成一个 jiami2.js
文件,这就是混淆后的你修改过的 js 代码
后续只要 明文源码2.js
文件的内容发生变更,github action 会自动更新 jiami2.js
文件,使用 jiami2.js
文件文件到 cf 以 worker 方式部署即可。
更为简单的方式
如果你的修改需求和我一样,仅仅需要统一格式化 csv 变量生成的节点名称,那么可以直接 fork 我的仓库,获取最新的我修改好的 明文源码2.js
文件。该仓库保持与 cm 仓库的自动同步(仅同步 明文源码.js 文件)
#github #节点