Surge HTTP Rewrite 应用案例:免密访问 Cloudflare Workers 项目 cronbin

24 年 4 月 21 日 星期日
607 字
4 分钟

AI 摘要

奋力赶来...

最近使用 Cloudflare Workers 部署了 Owen 的 cronbin 项目,一个可以定时执行 curl 任务的小工具,做一些API定时调用任务很好用,比如定时激活 Render 免费账户下的项目。

cronbin

部署 cronbin 后我遇到了一个权限验证的小难题,即需要记住 APIKEY。通过检查代码,我发现有三种方式可以进行权限验证:

  1. 查询参数验证:系统会检查 URL 中的 key 查询参数,并将其与设定好的 APIKEY 进行比对。如果不一致,就会返回一个未授权的错误提示。
  2. Cookie验证:程序尝试从 Cookie 中获取 API 密钥。它会搜索名为 key 的 Cookie,并对其值与 APIKEY 进行匹配。
  3. 授权头验证:程序检查 Authorization 头部信息,并期望它包含格式为 Bearer <APIKEY> 的值。如果收到的授权信息不符合预期格式,同样会返回未授权的错误。

由于日常使用 Surge 来管理网络请求,所以理论上可以通过 HTTP Rewrite 功能添增 Header 条目来简化操作。

在 Surge 配置文件中,添加以下规则:

toml
[Header Rewrite]
^https?://cronbin.yourdomain.com header-add Cookie key=YOUR_API_KEY

[MITM]
hostname = cronbin.yourdomain.com

这样做的主要目的是通过 MITM 解密后,自动向请求中添加名为 key 的 Cookie 条目,其中 YOUR_API_KEY 应替换为您部署时使用的实际 API 密钥,cronbin.yourdomain.com 应替换为您实际的 cronbin 访问链接。

这样,在浏览器中直接访问 cronbin 页面时,将能够无需输入密码即可登录,且这一设置只在个人的本地环境中生效,不会影响其他用户。

增加 Authorization 完成验证

在 Surge 配置文件中,再添加以下规则:

toml
[Header Rewrite]
^https?://cronbin.yourdomain.com header-add Authorization "Bearer YOUR_API_KEY"

[MITM]
hostname = cronbin.yourdomain.com

与增加 Cookie 类似,需要根据自己 cronbin 部署的实际情况修改规则中的 API 密钥和域名。

开启抓包后访问 cronbin.yourdomain.com,在 Request Header 中已经被添加了 Authorization,同时可以直接进入管理页面。

Authorization

作为两种常用的HTTP请求认证机制,Surge 类的网络工具都能提供很好的支持,而且可以很好的满足需要。对于个人使用的工具类网站,都可以考虑采用这种验证形式,再维护一个 module 就能实现免密访问了,懒人福音。

文章标题:Surge HTTP Rewrite 应用案例:免密访问 Cloudflare Workers 项目 cronbin

文章作者:Cedar

文章链接:https://some.fylsen.com/posts/surge-http-rewrite-application-case-access-cloudflare-workers-cronbin-without-password  [复制]

最后修改时间:


商业转载请联系站长获得授权,非商业转载请注明本文出处及文章链接,您可以自由地在任何媒体以任何形式复制和分发作品,也可以修改和创作,但是分发衍生作品时必须采用相同的许可协议。
本文采用CC BY-NC-SA 4.0进行许可。