利用 cloudflare 写了个下载辅助工具

207次阅读
没有评论

共计 1257 个字符,预计需要花费 4 分钟才能阅读完成。

简单说明

demo:

https://proxy.onesrc.workers.dev/

下载走 cloudflare,支持断点续传,mime 响应与原链接一致。

但不支持非直链下载。

例如 Github 下载速度过慢,可使用本工具加速。

代码示例

addEventListener('fetch', event => {
    event.respondWith(handleRequest(event.request))
})

const html = `
  <html><head></head><body>
  <input type="url" placeholder="url" id="url" style="width: 80%; display: block;">
  <input type="submit" id="submit" value="submit"/>
  <div id="res"></div>
  <a id="a" href=""></a>
  <div>注:该工具只针对直链有效</div>
  <script>
  document.getElementById('submit').onclick=function(){
      let url  = document.getElementById('url').value;
      console.log('url: '+url);
      let a = document.getElementById('a');
      let div = document.getElementById('res');
      if(!url || !url.startsWith('http')){
          div.textContent="链接不合法: "+url;
          a.style="display:none";
      }else{
          div.textContent="";
          let res = (new URL(window.location.href)).origin+'?url='+encodeURIComponent(url);
          a.textContent=res;
          a.href=res;
          a.style="";
      }
  }
  </script>
  </body></html>`;

/**
 * Respond to the request
 * @param {Request} request
 */
async function handleRequest(request) {
    let url = (new URL(request.url)).searchParams.get('url');
    if (!url) {
        return new Response(html, { status: 200, headers: { 'Content-Type': 'text/html; charset=utf-8' } });
    }
    let r = request.headers.get('Range');
    console.log(r);
    return await fetch(url, {
        headers: {
            range: r || 'bytes=0-'
        }
    });
}

其他说明

  • ui 比较简陋,可自己修改解决。
  • 不支持重定向,如需要自己添加。
  • 使用本工具仅供学习交流使用。
正文完
 
admin
版权声明:本站原创文章,由 admin 2019-12-30发表,共计1257字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码