Files
webproxy/CONTRIBUTING.md
yexuejc a9ebb5e2cd
CI / Build / Vet / Test (push) Canceled after 0s
chore: 开源化准备(LICENSE/CI/测试/文档)+ 全量中文注释
首个提交。webproxy 是部署在服务器上的 Web 正向代理:打开网页输入任意
URL,由服务器代为请求目标站点,经 HTML/CSS 重写、静态资源代理、
重定向/Cookie/表单处理后回填浏览器,核心场景是经服务器访问其所在
内网的客户网站。

- 开源件:MIT LICENSE、根级 SECURITY.md、CONTRIBUTING.md、
  CHANGELOG.md、Makefile、CI(gofmt/vet/build/test)
- 安全止损:.gitignore 排除 debug.log(含内网 IP)/二进制/调试散文件/
  本地 config.json;config.example.json 默认 blacklist,不关 SSRF
- module 路径规范化为 github.com/yexuejc/webproxy
- 测试:新增 proxy_test.go(URL 编解码/子域解析/SSRF 分类/Origin 改写);
  tests/cookietest 手工 E2E 程序加 build tag 并拆为独立子包,不污染
  go test ./...
- 注释:全部 Go 源码按函数作用/场景/入参/出参 + 分支 + 变量标准补齐
- 清理:删除旧"浏览器持有 Cookie"方案弃用代码(rewriteSetCookie/
  stripDomainSecure/reCookieDomain/reCookieSecure);会话 Cookie 改由
  服务端按 origin 的 jar 持有,绕开跨站 iframe 的 SameSite 扣发
2026-10-20 21:33:28 +08:00

1.7 KiB
Raw Permalink Blame History

贡献指南(Contributing)

感谢你考虑为 WebProxy 做贡献!本文说明如何本地开发、提交规范与代码要求。

开发环境

  • Go 1.22+(CI 使用 go-version-file: go.mod)
  • 无需额外依赖(仅 golang.org/x/net、golang.org/x/text,已 vendor)
git clone https://github.com/yexuejc/webproxy.git
cd webproxy
go run .                      # 默认监听 :8765

本地校验(提交前请全部跑通)

make fmt                     # gofmt -w .
make vet                     # go vet ./...
make test                    # go test ./...
make build                   # go build -o webproxy .

也可直接用 go 命令等价执行。CI 会自动跑同一套(gofmt / go vet / go build / go test)。

tests/cookietest 下的 mock.go / wsclient.go 是用于端到端回归的独立小程序,带 //go:build cookietest 标签,不会参与 go test ./...。 需要手动构建时:

go run -tags cookietest ./tests/cookietest/mock.go      # 启动 mock fnOS
go run -tags cookietest ./tests/cookietest/wsclient.go  # 原生 TCP WS 客户端探针

提交规范

  • 单一职责:一个 PR 解决一个问题/一类改动。
  • 提交信息建议遵循 类型: 简述,例如 fix: 修复跨站 iframe 下 SameSite Cookie 被扣发、feat: 新增 whitelist 模式。
  • 保持 gofmt 格式、go vet 无告警。

issue / PR 模板

  • Bug:请附复现步骤、目标站点类型(内网/公网)、代理日志(WEBPROXY_DEBUG=1)。
  • 新功能:先开 Issue 讨论设计,避免重复劳动。

许可

提交贡献即表示你同意以本仓库 LICENSE(MIT)条款授权你的贡献。