{"id":15035573,"url":"https://github.com/elecv2/elecv2p","last_synced_at":"2025-10-07T22:21:07.614Z","repository":{"id":37640472,"uuid":"264572006","full_name":"elecV2/elecV2P","owner":"elecV2","description":"一款基于 NodeJS，可通过 JS 修改网络请求，以及定时运行脚本或 SHELL 指令的网络工具。","archived":false,"fork":false,"pushed_at":"2025-10-04T10:07:29.000Z","size":10305,"stargazers_count":1374,"open_issues_count":2,"forks_count":303,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-10-04T12:09:48.256Z","etag":null,"topics":["anyproxy","cron","ifttt","javascript","mitm","nodejs","v2p","vue"],"latest_commit_sha":null,"homepage":"https://elecv2p.onrender.com","language":"Vue","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elecV2.png","metadata":{"files":{"readme":"Readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-05-17T02:59:24.000Z","updated_at":"2025-10-04T10:07:33.000Z","dependencies_parsed_at":"2024-06-18T13:17:16.804Z","dependency_job_id":"bc204bb3-03f9-4208-8356-2a9593b6fbc5","html_url":"https://github.com/elecV2/elecV2P","commit_stats":null,"previous_names":[],"tags_count":70,"template":false,"template_full_name":null,"purl":"pkg:github/elecV2/elecV2P","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elecV2%2FelecV2P","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elecV2%2FelecV2P/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elecV2%2FelecV2P/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elecV2%2FelecV2P/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elecV2","download_url":"https://codeload.github.com/elecV2/elecV2P/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elecV2%2FelecV2P/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278855872,"owners_count":26057754,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-07T02:00:06.786Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anyproxy","cron","ifttt","javascript","mitm","nodejs","v2p","vue"],"created_at":"2024-09-24T20:28:56.808Z","updated_at":"2025-10-07T22:21:07.577Z","avatar_url":"https://github.com/elecV2.png","language":"Vue","readme":"## 简介\r\n\r\nelecV2P - customize personal network.\r\n一款基于 NodeJS，可通过 JS 修改网络请求，以及定时运行脚本或 SHELL 指令的网络工具。\r\n\r\n![elecV2P overview/预览](https://raw.githubusercontent.com/elecV2/elecV2P-dei/master/docs/res/overview.png)\r\n\r\n### 基础功能\r\n\r\n- 查看/修改网络请求 (MITM)\r\n- 定时执行 JS/SHELL 脚本\r\n- FEED/IFTTT/自定义 通知\r\n- EFSS 基础文件管理\r\n\r\n## 安装/INSTALL\r\n\r\n***程序开放权限极大，建议局域网使用。公网部署（务必参考 [Advanced.md](https://github.com/elecV2/elecV2P-dei/blob/master/docs/Advanced.md)），风险自负***\r\n\r\n*elecV2P 所有文件及依赖总大小约 90 M。初始运行时内存占用约 90 M，运行 100 个定时任务时总内存占用约 150 M（仅供参考，不同软硬件条件下程序调用资源可能有所不同）*\r\n\r\n**在可使用 Docker 的情况下，推荐使用方法三进行安装**\r\n\r\n### 方法一：直接 NODEJS 运行\r\n\r\n**需求 NODEJS 版本 (node -v) \u003e= 14.17.0**\r\n\r\n``` sh\r\ngit clone https://github.com/elecV2/elecV2P.git\r\ncd elecV2P\r\n\r\n# 安装依赖库（根据网络环境和硬盘读写速度，需要 1-10 分钟不等\r\nyarn\r\n\r\n# elecV2P 默认以 pm2 的方式启动，需要先安装好 pm2\r\n# pm2 的安装方式:\r\n# 1. 添加 elecV2P 所在目录/node_modules/.bin 到系统环境变量 PATH 中\r\n# 2. 或者直接执行 yarn global add pm2\r\n# 然后执行命令\r\nyarn start\r\n\r\n# 其他基础方式启动命令\r\nnode index.js\r\n# 假如提示 80 端口不可用，尝试命令\r\n# windows 平台 CMD:\r\n# set PORT=8000 \u0026\u0026 node index.js\r\n# windows 平台 PowerShell:\r\n# $env:PORT=\"8000\";node index.js\r\n# 其他平台：\r\n# PORT=8000 TZ=Asia/Shanghai node index.js\r\n## TZ=Asia/Shanghai 用于设置程序运行时区\r\n```\r\n\r\n#### 升级\r\n\r\n方式一：使用 [softupdate.js](https://raw.githubusercontent.com/elecV2/elecV2P/master/script/JSFile/softupdate.js) 软更新升级\r\n\r\n- 首先在 webUI/JSMANAGE 脚本管理中找到 softupdate.js 文件，假如不存在就远程推送或本地上传一下\r\n- 然后按照文件内的说明，根据自身需求更改 CONFIG 设置项\r\n- 最后点击测试运行即可\r\n\r\n方式二：手动升级（不推荐\r\n\r\n- 先备份好个人数据，比如 根证书，以及 efss、script/JSFile、Store、Lists、Shell 等文件夹\r\n- （推荐在 webUI/efss 界面，右键对应文件夹，然后 zip 打包下载。）\r\n- 然后在项目目录下执行命令 git pull，拉取最新的代码进行覆盖升级\r\n- 最后再把备份好的文件上传/复制还原到之前的位置\r\n\r\n### 其他 PM2 相关指令\r\n\r\n``` sh\r\npm2 stop elecV2P  # 停止 elecV2P\r\npm2 stop all      # 停止所有程序\r\n\r\npm2 restart elecV2P   # 重启 elecV2P\r\npm2 restart 0\r\n\r\npm2 ls      # 查看运行状态\r\npm2 logs --raw    # 查看运行日志\r\n\r\npm2 -h      # 查看 PM2 帮助列表\r\n```\r\n\r\n### 方法二：DOCKER\r\n\r\n镜像名称: elecv2/elecv2p\r\n镜像地址: https://hub.docker.com/r/elecv2/elecv2p\r\n\r\n``` sh\r\n# 基础使用命令\r\ndocker run --restart=always -d --name elecv2p -e TZ=Asia/Shanghai -p 80:80 -p 8001:8001 -p 8002:8002 elecv2/elecv2p\r\n\r\n# 推荐使用命令\r\ndocker run --restart=always \\\r\n  -d --name elecv2p \\\r\n  -e TZ=Asia/Shanghai \\\r\n  -p 8100:80 -p 8101:8001 -p 8102:8002 \\\r\n  -v /elecv2p/JSFile:/usr/local/app/script/JSFile \\\r\n  -v /elecv2p/Lists:/usr/local/app/script/Lists \\\r\n  -v /elecv2p/Store:/usr/local/app/script/Store \\\r\n  -v /elecv2p/Shell:/usr/local/app/script/Shell \\\r\n  -v /elecv2p/rootCA:/usr/local/app/rootCA \\\r\n  -v /elecv2p/efss:/usr/local/app/efss \\\r\n  elecv2/elecv2p\r\n\r\n# -p/-v 对应参数 宿主:容器\r\n# 如需更改默认的 80 端口，可在 -e 后面加上 PORT=8000\r\n# 升级 Docker 镜像（如果没有使用 -v 持久化存储，容器内数据会丢失，请提前备份）\r\ndocker rm -f elecv2p           # 先删除旧的容器\r\ndocker pull elecv2/elecv2p     # 再拉取新的镜像\r\n# 再使用之前的 docker run xxxx 命令重新启动一下\r\n# 如果拉取到的镜像不是最新的版本，请修改 Docker 当前使用的仓库地址\r\n```\r\n\r\n- ARM32 平台如果出错，参考 [issues #78](https://github.com/elecV2/elecV2P/issues/78)\r\n- v3.7.3 之后 Github Actions 一直无法生成 ARM32 平台的 Docker。建议通过软更新脚本进行升级 [softupdate.js](https://raw.githubusercontent.com/elecV2/elecV2P/master/script/JSFile/softupdate.js) 。（其他平台的 Docker 不受影响）\r\n\r\n### 方法三：DOCKER-COMPOSE （推荐）\r\n\r\n``` sh\r\n# 创建 elecV2P 持久化数据保存目录\r\nmkdir /elecv2p \u0026\u0026 cd /elecv2p\r\n# 假如失败，请尝试在其他有权限的目录进行创建\r\n# 后面 docker-compose.yaml 映射目录保持和创建的目录一致\r\n\r\n# 下载 docker-compose.yaml 文件\r\ncurl -sL https://git.io/JLw7s \u003e docker-compose.yaml\r\n# 启动运行 elecV2P\r\ndocker-compose up -d\r\n\r\n# 注意: 需提前安装好 docker-compose 管理器\r\n# 默认将 80/8001/8002 端口分别映射到了宿主机的 8100/8101/8102 端口，以防出现占用的情况\r\n# 如果需要设置为其他端口，请自行修改 docker-compose.yaml 文件内容，然后重新启动\r\n```\r\n\r\n以下为 docker-compose.yaml 文件内容，可根据自身需求进行修改。\r\n\r\n``` yaml\r\nversion: '3.7'\r\nservices:\r\n  elecv2p:\r\n    image: elecv2/elecv2p\r\n    container_name: elecv2p\r\n    restart: always\r\n    environment:\r\n      - TZ=Asia/Shanghai\r\n    ports:\r\n      - \"8100:80\"\r\n      - \"8101:8001\"\r\n      - \"8102:8002\"\r\n    volumes:\r\n      - \"/elecv2p/JSFile:/usr/local/app/script/JSFile\"\r\n      - \"/elecv2p/Lists:/usr/local/app/script/Lists\"\r\n      - \"/elecv2p/Store:/usr/local/app/script/Store\"\r\n      - \"/elecv2p/Shell:/usr/local/app/script/Shell\"\r\n      - \"/elecv2p/rootCA:/usr/local/app/rootCA\"\r\n      - \"/elecv2p/efss:/usr/local/app/efss\"\r\n```\r\n\r\n修改后保存文件，然后在 docker-compose.yaml 文件所在目录下执行以下任一命令\r\n\r\n``` sh\r\n# 直接启动（首次启动命令）\r\ndocker-compose up -d\r\n\r\n# 更新镜像并重新启动\r\ndocker-compose pull elecv2p \u0026\u0026 docker-compose up -d\r\n```\r\n\r\n- 如果在某些设备上无法启动，尝试把文件开头的 version: '3.7' 更改为 version: '3.3'\r\n- ARM32 平台如果出错，参考 [issues #78](https://github.com/elecV2/elecV2P/issues/78)\r\n\r\n其他 docker 相关指令\r\n\r\n``` sh\r\n# 查看是否启动及对应端口\r\ndocker ps\r\n\r\n# 查看 elecV2P 运行日志\r\ndocker logs elecv2p -f\r\n```\r\n\r\n## 默认端口\r\n\r\n- 80：    webUI 后台管理界面。用于添加规则/管理脚本/定时任务/MITM 证书 等\r\n- 8001：  ANYPROXY HTTP 代理端口。（*代理端口不是网页，不能通过浏览器直接访问*）\r\n- 8002：  ANYPROXY 代理请求查看端口\r\n\r\n**ANYPROXY 相关端口默认关闭。可在 webUI 首页双击 ANYPROXY 临时开启。**\r\n**如需在启动时自动开启，请前往 webUI-\u003eSETTING-\u003e初始化相关设置 中进行设置。**\r\n**80/8002 对应端口需要用到 websocket，在使用 nginx 等反代工具时注意设置。参考 [ev2p-nginx.conf](https://github.com/elecV2/elecV2P-dei/blob/master/examples/ev2p-nginx.conf)**\r\n\r\n- *80 端口可使用环境变量 **PORT** 进行修改(比如: PORT=8000 node index.js)*\r\n- *在 elecV2P 已经启动时，可在 webUI-\u003eSETTING-\u003e初始化相关设置 中修改其他端口*\r\n- *在 elecV2P 尚未启动时，可在 script/Lists/config.json 文件中修改对应端口*\r\n\r\n## 根证书相关 - HTTPS 解密\r\n\r\n- *如果不使用 RULES/REWRITE 等 MITM 相关功能，此步骤可跳过。*\r\n- *升级启动后，如果不是使用之前的证书，需要重新下载安装信任根证书。*\r\n- *根证书包含两个文件 rootCA.crt/rootCA.key，文件名不可修改。*\r\n\r\n### 安装证书\r\n\r\n选择以下任意一种方式下载证书，然后安装并信任\r\n\r\n- 直接打开 :80/crt\r\n- :80 -\u003e MITM -\u003e 安装证书\r\n- :8002 -\u003e RootCA\r\n\r\n根证书物理存储目录位于 `$HOME/.anyproxy/certificates`。\r\n\r\n*windows 平台的证书存储位置选择 浏览-\u003e受信任的根证书颁发机构*\r\n\r\n### 使用自签根证书\r\n\r\n在 webUI-\u003eMITM 界面上传自签根证书，然后重启 elecV2P\r\n\r\n**注意：使用新的证书后，记得重新下载安装信任证书，并清除由之前根证书签发的域名证书。**\r\n\r\n## RULES - 网络请求修改\r\n\r\n![rules](https://raw.githubusercontent.com/elecV2/elecV2P-dei/master/docs/res/rules.png)\r\n\r\n详细说明参考: [docs/03-rules.md](https://github.com/elecV2/elecV2P-dei/tree/master/docs/03-rules.md)\r\n\r\n## 定时任务\r\n\r\n![task](https://raw.githubusercontent.com/elecV2/elecV2P-dei/master/docs/res/taskall.png)\r\n\r\n支持两种定时方式：\r\n\r\n- 倒计时\r\n- cron 定时\r\n\r\n### 时间格式：\r\n\r\n- 倒计时 30 999 3 2  (以空格分开的四个数字，后三项可省略)\r\n\r\n|    30（秒）    |     999（次）   |      3（秒）         |       2（次）       \r\n:--------------: | :-------------: | :------------------: | :------------------:\r\n| 基础倒计时时间 | 重复次数（可选）| 增加随机时间（可选） | 增加随机重复次数（可选）  \r\n\r\n\r\n- *当重复次数大于等于 **999** 时，无限循环*\r\n\r\n示例: 40 8 10 3 ，表示倒计时40秒，随机10秒，所以具体倒计时时间位于 40-50 秒之间，重复运行 8-11 次\r\n\r\n- cron 定时 \r\n\r\n时间格式：* * * * * * （五/六位 cron 时间格式）\r\n\r\n| * (0-59)   |  * (0-59)  |  * (0-23)  |  * (1-31)  |  * (1-12)  |  * (0-7)      \r\n:----------: | :--------: | :--------: | :--------: | :--------: | :---------:\r\n| 秒（可选） |    分      |    小时    |     日     |     月     |    星期\r\n\r\n\r\n### 可执行任务类型\r\n\r\n- 运行 JS\r\n- 开始/停止 其他定时任务\r\n- 基础 shell 指令。比如 *rm -f \\**, *python test.py*, *reboot* 等等\r\n\r\n更多说明参考：[docs/06-task.md](https://github.com/elecV2/elecV2P-dei/tree/master/docs/06-task.md)\r\n\r\n## 通知\r\n\r\n目前支持通知方式：\r\n- FEED/RSS 订阅\r\n- IFTTT WEBHOOK\r\n- BARK 通知\r\n- 自定义通知\r\n\r\nFEED/RSS 订阅地址为 webUI/feed。\r\n\r\n通知内容：\r\n- 定时任务开始/结束\r\n- 定时任务 JS 运行次数\r\n- 脚本中的自主调用通知\r\n\r\nIFTTT/BARK/自定义通知等相关设置参考: [07-feed\u0026notify](https://github.com/elecV2/elecV2P-dei/tree/master/docs/07-feed\u0026notify.md)\r\n\r\n## DOCUMENTS\u0026EXAMPLES\r\n\r\n说明文档及一些例程: [https://github.com/elecV2/elecV2P-dei](https://github.com/elecV2/elecV2P-dei)\r\n\r\n如果遇到问题欢迎 [open a issue](https://github.com/elecV2/elecV2P/issues)。尽量说明使用平台，版本，以及附上相关的错误日志（提供的信息越详细，越有助于解决问题）。\r\n\r\nTG 频道: https://t.me/elecV2\r\nTG 交流群: https://t.me/elecV2G\r\n\r\n## 更新日志\r\n\r\n查看: https://github.com/elecV2/elecV2P/blob/master/logs/update.log\r\n\r\n## 贡献参考\r\n\r\n- [anyproxy](https://github.com/alibaba/anyproxy)\r\n- [axios](https://github.com/axios/axios)\r\n- [expressjs](https://expressjs.com)\r\n- [node-cron](https://github.com/merencia/node-cron)\r\n- [node-rss](https://github.com/dylang/node-rss)\r\n- [pm2](https://pm2.keymetrics.io)\r\n- [vue](https://vuejs.org)\r\n- [vue-draggable-resizable](https://github.com/mauricius/vue-draggable-resizable)\r\n- [ace](https://github.com/ajaxorg/ace)\r\n- [adm-zip](https://github.com/cthackers/adm-zip)\r\n- [Ant Design Vue](https://www.antdv.com)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felecv2%2Felecv2p","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felecv2%2Felecv2p","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felecv2%2Felecv2p/lists"}