使用Cloudflare Workers代理/连接/加速您的文件下载任务

注意

本文不再更新

所以程序如果有更新本文也不会同步更新。

所以建议前往我的Github仓库,那里有最新的代码和部署教程。

如果你不会使用Workers,请看《Cloudflare Workers》

引言

在上一篇文章中,介绍了利用CF Workers搭建反向代理。

我在引言中提到可以用反代来下载一些难以连通的网站上的文件,比如Github。

但是如果使用上一篇文章中的反代,也就意味着每个网站都要部署一个Worker,为了方便甚至还要修改系统Hosts。

本篇文章则是教大家用CF Workers搭建一个下载代理,虽然它本质还是一个反代,但是代码做了一些优化调整。

这样我们就可以用:xxx.example.com/download?url=下载链接,这样的形式进行加速文件下载。

正文

1.部署代码

相信有了之前的操作经验,你已经知道如何使用CF Workers了,如果你还不会,请先看《Cloudflare Workers》。本文不做过多赘述。

直接复制代码到Cloudflare Workers Production,无需做任何修改!

addEventListener('fetch', event => {
  const { pathname } = new URL(event.request.url)
  
  if (pathname === '/') {
    event.respondWith(handlePageRequest(event.request))
  } else if (pathname === '/download') {
    event.respondWith(handleDownloadRequest(event.request))
  } else {
    event.respondWith(new Response('Not Found', { status: 404 }))
  }
})

async function handlePageRequest(request) {
  const html = `
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <title>文件下载</title>
        <script>
          function getDownloadLink() {
            var urlInput = document.getElementById('url');
            var downloadLink = document.getElementById('download-link');
            var proxyLink = window.location.origin + '/download?url=' + encodeURI(urlInput.value);
            downloadLink.textContent = proxyLink;
          }
        </script>
      </head>
      <body>
        <h1>文件下载</h1>
        <form action="/download" method="get">
          <label for="url">下载链接:</label>
          <input type="text" id="url" name="url" required>
          <button type="submit">下载</button>
        </form>
        <br>
        <button onclick="getDownloadLink()">获取下载链接</button>
        <p id="download-link"></p>
        <p>作者博客:<a href="https://blog.968968.xyz" target="_blank">https://blog.968968.xyz</a></p>
        <p>本项目仓库:<a href="https://github.com/zyz0323/Cloudflare-Workers-Download-Proxy" target="_blank">https://github.com/zyz0323/Cloudflare-Workers-Download-Proxy</a></p>
      </body>
    </html>
  `
  
  return new Response(html, {
    headers: { 'Content-Type': 'text/html; charset=utf-8' }
  })
}

async function handleDownloadRequest(request) {
  const url = new URL(request.url)
  const downloadUrl = url.searchParams.get('url')
  
  if (!downloadUrl) {
    return new Response('请提供文件下载链接。', { status: 400 })
  }
  
  const response = await fetch(downloadUrl)
  const modifiedHeaders = new Headers(response.headers)
  modifiedHeaders.set('Content-Disposition', `attachment; filename=${getFileName(downloadUrl)}`)
  
  return new Response(response.body, {
    status: response.status,
    statusText: response.statusText,
    headers: modifiedHeaders
  })
}

function getFileName(url) {
  const urlObj = new URL(url)
  const pathname = urlObj.pathname
  return pathname.substring(pathname.lastIndexOf('/') + 1)
}

点击保存并部署。

此程序源于我的项目zyz0323/Cloudflare-Workers-Download-Proxy

2.绑定域名

这个在本系列文章中也写到过,不会请看《Cloudflare Workers》

3.开始使用

当您访问您的网页时,将显示一个带有输入框和按钮的页面。按照以下步骤操作:

  1. 在输入框中输入要下载的文件链接。
  2. 若点击下载按钮,将会自动将您跳转下载。
  3. 若点击获取下载链接,则会在网页上输出代理后的下载链接。
文章出自:张奕哲's Blog 使用Cloudflare Workers代理/连接/加速您的文件下载任务,版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇