MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    [教程] 使用 cloud flare worker 实现免费接口代理

    开发交流
    8
    31
    3968
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Y
      Yan502 最后由 编辑

      b9da2f9c-1640-4737-b457-7a10aa112d90-image.png 我们网站需要代理这个接口,要怎么弄呢

      1 条回复 最后回复 回复 引用 0
      • Dituon
        Dituon 最后由 编辑

        cloud flare worker 的域名 workers.dev 可能在中国某些地区被污染,挂梯子后重试,之后挂载到自己的域名上

        1 条回复 最后回复 回复 引用 0
        • MrXiaoM
          MrXiaoM 童心未泯 最后由 MrXiaoM 编辑

          之前写的一个脚本,反向代理一个网站,还可以替换内容中的原链接为新链接。

          // API地址
          const api = 'https://lolibooru.moe/';
          // 替换地址 (改为空值不替换)
          const referTo = '';
          
          async function handleRequest(request, origin, pathname, searchParams) {
            const apiUrl = new URL(api);
            apiUrl.pathname = pathname;
            
            for (const [key, value] of searchParams) {
              apiUrl.searchParams.append(key, value);
            }
            request = new Request(apiUrl, request);
            request.headers.set('Origin', apiUrl.origin);
            
            let response = await fetch(request, { method: 'GET' });
            if(response.status == 200 || response.status == 301 || response.status == 302) {
              let changed = false;
              if (referTo.length > 0) {
                const type = response.headers.get("Content-Type");
                if (type != null && (
                  type.includes("text") ||
                  type.includes("javascript") ||
                  type.includes("json")
                )) {
                  let body = await response.text();
                  body = body.replace(api, referTo);
                  response = new Response(body, response);
                  changed = true;
                }
              }
              if (!changed) response = new Response(response.body, response);
          
              response.headers.set('Access-Control-Allow-Origin', origin);
              response.headers.append('Vary', 'Origin');
            }
            return response;
          }
          
          addEventListener('fetch', (event) => {
            const request = event.request;
            const url = new URL(request.url);
            const origin = request.headers.get('Origin');
            const pathname = url.pathname;
            const searchParams = url.searchParams;
            return event.respondWith(handleRequest(request, origin, pathname, searchParams));
          });
          
          
          1 条回复 最后回复 回复 引用 0
          • Y
            Yan502 最后由 Yan502 编辑

            这里一直显示无效的域名 是因为什么

            MrXiaoM 1 条回复 最后回复 回复 引用 0
            • MrXiaoM
              MrXiaoM 童心未泯 @Yan502 最后由 编辑

              @Yan502 不用 https://

              Y 1 条回复 最后回复 回复 引用 0
              • Y
                Yan502 @MrXiaoM 最后由 Yan502 编辑

                @MrXiaoM 还是会报错的

                MrXiaoM 1 条回复 最后回复 回复 引用 0
                • MrXiaoM
                  MrXiaoM 童心未泯 @Yan502 最后由 编辑

                  @Yan502 你是不是看不懂英文
                  用根域名,不要用子域名

                  Dituon Y 2 条回复 最后回复 回复 引用 0
                  • Dituon
                    Dituon @MrXiaoM 最后由 编辑

                    翻译: 使用 izhtai.net 而不是 www.admin.izhtai.net

                    1 条回复 最后回复 回复 引用 0
                    • Y
                      Yan502 @MrXiaoM 最后由 编辑

                      @MrXiaoM 之前没有注意到, 我们目前的项目就是这个域名,我也搞不懂,这怎么代理

                      Dituon 1 条回复 最后回复 回复 引用 0
                      • Dituon
                        Dituon @Yan502 最后由 编辑

                        @Yan502 更新了 「常见问题」 小节,可以参考一下

                        Y 1 条回复 最后回复 回复 引用 0
                        • Y
                          Yan502 @Dituon 最后由 编辑

                          @Dituon ok 谢谢

                          1 条回复 最后回复 回复 引用 0
                          • 1
                          • 2
                          • 2 / 2
                          • First post
                            Last post
                          Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact