用CF和BackBlaze零成本自建抗刷抗DDoS图床/文件床,年度最强白嫖攻略

CF大善人就不用多介绍了,BackBlaze在云存储领域属于S3平替,10G免费,兼容S3 API,最关键的是从CF下载不占流量。

注册地址,无aff,信箱即可注册,无需付款

BackBlaze免费账户默认存储是私有的,公开访问需要钞票。cloudflare大善人就派上用场了,我们通过worker来让它变成公开访问。

有阿达西问为什么用b2不用r2,这个解决方案最大的特点就是抗刷,cloudflare可以抗住99.6%的流量,真正访问图床的流量非常少,而且无需信用卡,不怕被刷掉一套房

代码更新了

  • 加入了图片转webp选项,默认80%质量。只对jpg,png,bmp,gif,tiff起效,其他文件直接上传即可
API
  1. 注册BackBlaze之后,创建一个Bucket。所有图片都会保存在这个bucket里面
  2. 随便上传一个文件,点开文件之后找到S3 URL记下来。
  3. 创建一个Application Keys,访问权限可读写。保存好Key ID和Access Key
  4. 在cloudflare里创建一个worker,Start from a template点右边的Hello world,然后deploy

  5. 在下个页面点Edit code,把代码贴进去
  6. 修改文件开始的几行,把你的设置放进去
const config = {
  S3_BASE_URL: '',
  S3_BUCKET: '',
  S3_ACCESS_KEY_ID: '',
  S3_SECRET_ACCESS_KEY: '',
  S3_REGION: '',
  DOWNLOAD_URL: '',
  UPLOAD_URL: '',
  debug: true
};

S3_BASE_URL 之前保存下来S3 URL的base URL,去除bucket部分,比如https://s3.us-west-004.backblazeb2.com
S3_BUCKET 你创建的bucket名字
S3_ACCESS_KEY_ID BackBlaze的Key ID
S3_SECRET_ACCESS_KEY BackBlaze的Access key
S3_REGION 在S3 base URL里面可以找到,比如us-west-004
DOWNLOAD_URL 图床地址,比如https://myhost.xyz
UPLOAD_URL 图床上传API地址,比如https://myhost.xyz/upload
然后点选Deploy

  1. 设置你的域名的worker route,配置myhost.xyz/*使用worker,图床API就搞定了

  2. 当一切正常之后,回到代码,把开始的debug: true改成debug: false,开启缓存

上传页面

下载压缩包,解压后把里面的文件上传到bucket里就好

你可以通过 https://myhost.xyz/Rl3GzAMhmhyz5ElD3m0NbwKY5KnvHSk5ATKtNPi23_E/index.html 访问上传页面(把myhost换成你的域名)

当你有了初始的上传页面之后,就可以上传新的上传页面了(详见FAQ)

️如果遇到404,如果设置都没错的话,有可能是因为Cloudflare worker缓存原因。去域名的缓存配置里面清除所有内容试试看

域名设置

重要️在你的域名设置里面,A record或者cname可以随便设,但反向代理(小黄云)一定要打开

FAQ

Q: 上传链接里的Rl3GzAMhmhyz5ElD3m0NbwKY5KnvHSk5ATKtNPi23_E太长了我记不住怎么办?
A: 你可以把链接放收藏夹里,或者可以配置一个page rule来重写

Q: 图床能不能设置成只有自己可以上传?
A: 人还是要有点共享精神的。虽然但是,本系统支持通过混淆来实现安全,方法就是套娃。

当你有了最初始的上传页面,首先在上传页面源码(压缩包里的Rl3GzAMhmhyz5ElD3m0NbwKY5KnvHSk5ATKtNPi23_E)中找到url.pathname = 'upload';, 把upload改成你的小秘密,比如upload123456,再把文件名改成index.html,通过上传页面重新上传,你就有了新的上传链接了。

接下来去cf worker里面把UPLOAD_URL改成小秘密,比如https://myhost.xyz/upload123456

最后去backblaze把原始页面删掉,你就有了一个看起来很安全的系统了。

免费的东西,喜欢就加点🍗

点赞
  1. 小菜鸟说道:

    牛的

  2. 云上拾荒者说道:

    @tof #57 检查一下配置是不是都对,page rule是在正确的子域名里面的,URL域名和worker的download url域名一致,清理一下浏览器缓存

  3. 云上拾荒者说道:

    @notpeppa #138 嗯嗯 不好意思这个教程没写清楚,我等一下改一下。

    你在下载的文件里把这一行

    const url = new URL(window.location);
    

    改成

    const url = new URL('https://域名/');
    

    就可以本地打开上传了。域名是你上传的域名

发表回复

电子邮件地址不会被公开。必填项已用 * 标注

×
订阅图标按钮