自建一个匿名文件上传终结点

视频 https://www.bilibili.com/video/BV1Hz1DBZEov/ 明确需求 在做一个项目时,无论大小,首先我们要知道自己需要什么,哪些是刚需,哪些是次要的,哪些是根本不必要的 深度思考一下,我觉得该项目使用场景应该在:当我处于非家庭环境,且手上有一台不直通家庭网络但是可连接至互联网的设备,需要传输一些非敏感文件且文件不大(如:文档,截图,小软件) 那么大致的需求即为: 基于Web网页,制作一个前端页面,必须包含一个 input file 。上传完成打印上传完成 后端将文件放到一个存储空间。该存储空间必须在家庭网络内较方便的访问 方案对比 这里提供两种方案,各有优劣: 方案一:对象存储 方案二:本地服务器 稳定性 ⭐⭐⭐⭐⭐ 不依赖本地设备 ⭐⭐ 需要家庭电脑在线 复杂度 ⭐⭐⭐ 需要配置云函数 ⭐⭐⭐⭐⭐ 一行命令启动 成本 对象存储费用 无(家庭带宽) 适用场景 需要稳定运行 家庭电脑常在线 方案一:EdgeOne Pages + 对象存储 如果你希望服务稳定运行,不依赖家庭设备在线状态,那么对象存储方案更适合你。 梳理思路 借助对象存储,我只需要找一个云函数连接到我的对象存储,然后提供一个上传端点即可。 正式开始 于是我找到了EdgeOne Pages,它的Functions非常适合做这件事,且支持原生Node运行时,也就是 node-functions 直接使用 AWS-S3 这个NPM包再做一个最简单的前端上传页面,搞定! 为了防止上传重名文件,每个文件上传后都会被重命名为 原文件名_时间戳_IP 该项目已开源 afoim/EdgeOnePageFunctionUnknownUploader-S3- 方案二:Python uploadserver 更推荐: https://github.com/svenstaro/miniserve 如果你的家庭电脑通常保持在线,且追求简单易用,那么在自家电脑启动一个匿名文件上载器也是个不错的选择。 安装 确保你安装了 Python 安装 uploadserver pip install --user uploadserver 接下来,创建并进入一个新文件夹,作为 上传目录 mkdir upload cd upload 运行,并监听 IPv4 的 8000端口 ...

November 8, 2025 · 1 min · 114 words

对标CF Worker?拿EdgeOne边缘函数做一个随机图API!

正式开始 前往 afoim/EdgeOne_Function_PicAPI: 适用于EdgeOne边缘函数的随机图API 复制 worker.js 代码 部署到EdgeOne边缘函数 将代码开头的 R2_CONFIG 设为你自己的 var R2_CONFIG = { region: 'auto', service: 's3', accountId: '', accessKeyId: '', secretAccessKey: '', bucketName: '' }; 配置你的R2,将横屏随机图放到 ri/h 和 ri/v 。保证跟代码中的路径一样 // 根据路径确定前缀 var prefix = ''; if (pathname === '/h') { prefix = 'ri/h/'; } else if (pathname === '/v') { prefix = 'ri/v/'; } else if (pathname === '/') { 访问 /h 则展示一张横屏随机图,访问 /v 则展示一张竖屏随机图 如果需要绑定域名请设置触发规则 注意 边缘函数每月有300万次的请求数限制,暂不知道超出是否扣费

July 31, 2025 · 1 min · 72 words

N款CDN/静态托管服务商的优缺点比较

Netlify 注册门槛高,需要使用谷歌邮箱注册。支持IPv6回源。用量限制较宽松,仅有带宽和构建时间限制。 我认为是免费计划里最快的CDN!并且限制很少! 需要注意,构建时间是每月限制。但是流量限制较为宽松 因为节点禁Ping,所以这里用Tcping结果展示 推荐CNAME: apex-loadbalancer.netlify.com Vercel 零成本用上。注册无门槛,延迟良好。用量限制较严格。仅支持IPv4回源。默认的 *.vercel.app 在国内会被SNI阻断,需要绑定自己的域名 Vercel每天可以构建100次,每次构建时间不得超过45分钟 推荐IP: 76.76.21.21 EdgeOne CDN 目前处于内测,需要兑换码。获取方式前往 腾讯云EdgeOne免费计划兑换码 - 立即体验 。无流量和请求数限制。 支持高级回源设置 全球可用区(不含中国大陆) 本人博客目前使用的CDN 默认提供的CNAME延迟一般。下图是使用了本人的HK优选: eo.072103.xyz(注: EdgeOne Page不可用) EdgeOne CDN 中国大陆可用区 需要实名认证,需要域名备案 默认CNAME可用 Cloudflare 无流量和请求数限制。无法被打死 戳我查看优选域名 下图使用本人的分流优选: fenliu.072103.xyz Render 注册简单,具有严格的用量限制 Github Page 需要使用Github Action发布。中国大陆大部分地区会间歇性阻断,不推荐使用

July 13, 2025 · 1 min · 44 words

EdgeOne + Cloudflare,我们天下无敌!

引言 主播也是搞到了EdgeOne免费版激活码了,终于可以大展宏图了😋 我怎么换到EdgeOne免费版? 前往 腾讯云EdgeOne免费计划兑换码 - 立即体验 推荐直接发推,按照要求发 发完后私信EO官方即可 默认EdgeOne给的Anycast CNAME过于垃圾? 默认在EO添加域名EO会发给你一个类似 afo.im.eo.dnse4.com 这样的CNAME 也就是 你的域名.eo.dnse4.com emm 这玩意吧 你们自己看速度吧 我推荐大家使用 43.174.150.150 。是一个中国香港的三网优化IP。速度如下。本人EdgeOne优选: eo.072103.xyz 换了CNAME后无法自动申请免费SSL? 如果你将你的域名托管给EO并且没有用EO给你的CNAME,则这个选项不可用 我推荐采用1panel、宝塔、acme.sh手动申请泛域名证书然后上传到腾讯云SSL控制台,就像这样 EdgeOne怎么做重定向? 在这里 EO边缘函数也支持重定向,支持更细化的重定向规则 但是这玩意记录请求数,不如用Cloudflare的重定向规则 首先我们在CF写这样一个规则 然后让EO回源到CF边缘节点。最简单就是随便填个IP然后套CDN 接着配置EO回源,这里一定要使用加速域名作为回源Host头 原理:用户 - EO - CF - CF识别到Host匹配重定向规则 - 301 EdgeOne反代一切? 大部分情况将 回源HOST头 改为源站就能解决反代后网站无法访问的问题

June 26, 2025 · 1 min · 46 words

关于我折腾了一晚上 EdgeOne

这是个啥? 在我的早期文章中提过EdgeOne,当时它还仅有Page业务,而且IP是很垃圾的新加坡,并且还会吞提交。故我当时给出了不如Cloudflare Page的评价 不过这玩意最近出了CDN业务,并且还是免费。所以我又重拾起来了 我要怎么用上? 浏览器访问: https://edgeone.ai 注册账号 或者看视频: https://www.bilibili.com/video/BV1KmNUzVEEL 关于EdgeOne CDN - 网站安全加速 以下言论仅适用于未备案用户 需要搞免费版兑换码。或者直接买个人版后可用,需要外币卡。 通过创建 加速区域全球可用区(不含中国大陆) 。会分配给你一个类似 eo3-blog.afo.im.eo.dnse4.com 这样的CNAME地址要求你做CNAME解析。IP很烂。可以直接做优选。 获取方式很简单,直接ITDOG PING edgeone.ai 找个最快的IP直接写A解析(貌似国内的也可以🤔),如图。本人EdgeOne优选: eo.072103.xyz 因为这玩意是一个CDN,需要一个源站。如果你是静态站点可以用Cloudflare Page部署一个站,然后设置回源如下(注意回源Hosts头要填写源站域名,否则CF可能会报423 Locked 他妈的比腾讯云的418我是个茶壶规范多了😅) 最后开启SSL,结束,享受它吧 关于EdgeOne Pages(新) 不用花钱,注册账号后即可用 不管你的加速区域在哪,都建议绑定自己的域名,否则可能出现访问401。含中国大陆的区域需要域名备案 以下言论仅适用于未备案用户 通过创建 加速区域全球可用区(不含中国大陆) 。IP现在从新加坡Anycast改为了俩IP(如果按国内可用来算)43.175.44.57(中国香港。非移动延迟250ms+,移动延迟100ms-), 43.132.85.153(日本东京。三网200ms左右)。比起之前的新加坡平均300ms的神奇IP好了很多 EdgeOne Pages无法优选。如果将EdgeOne Pages托管的域名指向非 edgeone.app 解析出的IP。会报418(比如EdgeOne CDN节点IP) 默认时延情况,如图 以下言论仅适用于备案用户 默认延迟50ms以下(中国大陆) 优选不能将IP指向EdgeOne CDN节点的IP,否则报418。

June 21, 2025 · 1 min · 51 words

Github全站反向代理搭建指南

引言 由于网络原因,国内访问Github经常遇到各种问题。本文将带你从原理到实践,搭建一个属于自己的Github全站反向代理。 为什么不能只用透明代理? 针对Github这样的网站,我们无法仅使用一个简单的透明反向代理指向 github.com 来解决,原因有两点: 1. 外域依赖问题 Github官网有许多外域依赖,比如 raw.githubusercontent.com、avatars.githubusercontent.com 等。如果只代理主域名,这些资源请求会直接访问原站,导致加载失败。 2. 钓鱼风险 注意!直接反代主流网站后,不久你的网站就会被Cloudflare标记为钓鱼站点,因为你原封不动的克隆了人家站点并且 没有显式屏蔽登录页面。 解决方案:透明代理 + HTML覆写 核心思路 我们需要实现两个关键功能: 透明代理:将请求转发到Github服务器 HTML覆写:重写Github返回的HTML,将其中的外域改为我们自己的域 请求流程对比 原始流程: 用户 -> github.com -> raw.githubusercontent.com(被github.com请求) 代理流程: 用户 -> gh.072103.xyz -> raw-githubusercontent-com.072103.xyz(被gh.072103.xyz请求) 对于 gh.072103.xyz 的请求由代理服务转发到 github.com,而针对于 raw-githubusercontent-com.072103.xyz 的请求则转发到 raw.githubusercontent.com。 域名映射配置 你需要配置类似这样的域名映射: const domain_mappings = { 'github.com': 'gh.', 'avatars.githubusercontent.com': 'avatars-githubusercontent-com.', 'github.githubassets.com': 'github-githubassets-com.', 'collector.github.com': 'collector-github-com.', 'api.github.com': 'api-github-com.', 'raw.githubusercontent.com': 'raw-githubusercontent-com.', 'gist.githubusercontent.com': 'gist-githubusercontent-com.', 'github.io': 'github-io.', 'assets-cdn.github.com': 'assets-cdn-github-com.', 'cdn.jsdelivr.net': 'cdn.jsdelivr-net.', 'securitylab.github.com': 'securitylab-github-com.', 'www.githubstatus.com': 'www-githubstatus-com.', 'npmjs.com': 'npmjs-com.', 'git-lfs.github.com': 'git-lfs-github-com.', 'githubusercontent.com': 'githubusercontent-com.', 'github.global.ssl.fastly.net': 'github-global-ssl-fastly-net.', 'api.npms.io': 'api-npms-io.', 'github.community': 'github-community.' }; 假如你的域名为 abc.com,你需要将以下子域名绑定到你的代理服务: gh.abc.com avatars-githubusercontent-com.abc.com raw-githubusercontent-com.abc.com …等等 防钓鱼措施 我们需要找到原站点的所有登录页逐一屏蔽,对于Github.com,我们需要屏蔽: ...

April 14, 2025 · 4 min · 764 words