{"id":19605716,"url":"https://github.com/chenjunyu19/hydro-base64","last_synced_at":"2025-04-27T19:32:52.098Z","repository":{"id":239393034,"uuid":"799021351","full_name":"chenjunyu19/hydro-base64","owner":"chenjunyu19","description":null,"archived":true,"fork":false,"pushed_at":"2024-05-13T08:51:25.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-26T16:38:45.191Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chenjunyu19.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2024-05-11T01:19:53.000Z","updated_at":"2024-07-13T13:33:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"f38345e7-0b43-4367-ae38-2e2b3f378f91","html_url":"https://github.com/chenjunyu19/hydro-base64","commit_stats":null,"previous_names":["chenjunyu19/hydro-base64"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenjunyu19%2Fhydro-base64","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenjunyu19%2Fhydro-base64/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenjunyu19%2Fhydro-base64/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chenjunyu19%2Fhydro-base64/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chenjunyu19","download_url":"https://codeload.github.com/chenjunyu19/hydro-base64/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251196255,"owners_count":21550931,"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","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":[],"created_at":"2024-11-11T09:45:55.681Z","updated_at":"2025-04-27T19:32:52.091Z","avatar_url":"https://github.com/chenjunyu19.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# hydro-base64\n\n给 [Hydro](https://hydro.js.org/) 的部分请求体进行一次额外的 base64 编码，以防止被一些有怪癖（quirks）的 WAF 误认为是恶意请求导致被拦截。\n\n## 安装方法\n\n在 Hydro v4.12.2 下通过测试。Hydro 可能会发生变更，请以实际情况为准，自行调整部分操作和代码。\n\n### 服务端\n\n1. 克隆或下载本仓库。\n2. 添加插件：`hydrooj addon add /path/to/hydro-base64`。\n3. 重启 Hydro。\n\n### 客户端\n\n1. 克隆 Hydro 仓库 \u003chttps://github.com/hydro-dev/Hydro\u003e。\n2. 编辑 `@hydrooj/ui-default` 包中的 `utils/base.ts`，修改 `request.post` 函数，可以参考下面的 patch。\n3. 构建 UI：`yarn \u0026\u0026 yarn build:ui:production`。\n4. 安装该包：`yarn global add file:/path/to/ui-default`。\n5. 重启 Hydro。\n6. 注意可能清除浏览器的站点数据（缓存存储和 ServiceWorker）。\n\n```diff\ndiff --git a/packages/ui-default/utils/base.ts b/packages/ui-default/utils/base.ts\nindex 53744dbc..eda8f010 100644\n--- a/packages/ui-default/utils/base.ts\n+++ b/packages/ui-default/utils/base.ts\n@@ -148,6 +148,14 @@ export const request = {\n       // {foo: 'bar'}\n       postData = JSON.stringify(dataOrForm);\n       options.contentType = 'application/json';\n+      postData = JSON.stringify({\n+        operation: dataOrForm.operation,\n+        encodedBody: window.Hydro.utils.base64.encode(postData)\n+      });\n+      if (!options.headers) {\n+        options.headers = {};\n+      }\n+      options.headers['X-Hydro-Encoding'] = 'base64';\n     }\n     return request.ajax({\n       url,\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenjunyu19%2Fhydro-base64","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchenjunyu19%2Fhydro-base64","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchenjunyu19%2Fhydro-base64/lists"}