MiraiForum

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

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

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

      背景

      看到了 @xiatianYa 的求助帖与一些回复 https://mirai.mamoe.net/topic/2575/ 发现很多人不知道 cloud flare worker 免费服务,作为资深白嫖怪教大家如何白嫖接口代理。

      要求

      1. 您冰雪聪明的大脑 (必须)
      2. 一点js基础 (可选)
      3. 心仪的域名 (可选)
      4. 赞美的心 (可选)

      介绍

      cloud flare worker 是 cloud flare (知名免费CDN厂商) 一段时间之前推出的一项免费服务, 允许在CDN服务器上运行js脚本或wasm

      截止到这篇文章写完的时候,这仍是一项长期免费服务,免费套餐为每天 100000 个请求, 大概是100个人 每人请求100次, 或0.01个人 每人请求10000000次

      步骤

      如果您在下方任何步骤中出现了问题,请移步下方的 常见问题 小结

      1. 注册/登录账户 https://dash.cloudflare.com/login

      2. 创建Worker
        d357a244-1af3-4616-b6f1-852de5ae6990-image.png
        cc30ef6c-bab3-40d2-9c5d-2a1643aacb00-image.png

      3. 设置一个便于记忆的 Name (可选)
        c2557bc5-3027-4944-ac42-6748f73cca7f-image.png

      4. 创建成功,点击修改代码
        cb55515f-8b1e-4c20-8eb8-ac6e37ea8dd3-image.png

      5. 写代码
        以背景里的求助帖为例,需要代理的接口为
        https://api.steampowered.com/IGameServersService/GetServerList/v1/?key=A96B85AE8E6A3E52C726563D902C2B77&filter=addr\180.102.24.61:16261
        则可以用以下代码代理

      export default {
        async fetch(request, env, ctx) {
          // 指定要代理的目标地址
          const targetURL = 'https://api.steampowered.com/IGameServersService/GetServerList/v1/?key=A96B85AE8E6A3E52C726563D902C2B77&filter=addr\\180.102.24.61:16261';
          const modifiedRequest = new Request(targetURL, request);
          const response = await fetch(modifiedRequest);
      
          return new Response(response.body, {
            status: response.status,
            statusText: response.statusText,
            headers: response.headers,
          });
        },
      };
      
      1. 保存 (建议先进行请求测试(葱绿色框框))
        2948f5e8-fe19-4357-82fc-2eca2289e421-image.png

      2. 大功告成,可以通过图上的链接访问
        https://hello-world-autumn-fire-2598.d2n.workers.dev/
        d71ef107-105c-41bf-ba7e-6843a5cc4187-image.png

      3. 可选:域名太丑怎么办,使用自己的域名代理
        1facbbdb-b841-43fc-a4a0-99a50a5c6d34-image.png bfe80147-ce11-410e-8d8a-19e5f731723d-image.png
        于是就可以在 https://d2n.moe/helloworker 访问了

      常见问题

      Q: 访问不了 cloudflare 怎么办啊
      A: 参考下一条问题

      Q: 保存不了代码怎么办啊
      A: 参考下一条问题

      Q: 默认的 workers.dev 域名访问不了怎么办啊
      A: workers.dev 的域名在中国某些地区惨遭DNS污染,可修改hosts访问,或使用梯子进行编辑,挂载到自己的域名下即可

      Q: 挂载时找不到域名怎么办啊
      A: 先在cloudflare中添加您的域名

      Q: 怎么添加域名啊
      A: https://www.bing.com/search?q=cloudflare+添加域名

      Q: 遇到的问题这里没有怎么办啊
      A: 跟帖补充

      后话

      因为便于演示的原因,只代理了某个特定的地址,通过修改代码实现代理任意地址或动态地址等,也可实现修改header实现cors转发等高级操作,本教程抛砖引玉,希望坛友发挥主观能动性

      如果你来自遥远的未来,本文的大部分信息可能已经失效(例如示例数据,代码,域名等), 请开动脑筋找到适合当前时代的解决方案, 也可以回帖询问我, 如果不回复就是已经过世了,请用赞美之心为我默哀几秒

      如果你不会写代码,可以用以下咒语询问GPT等有代码写作能力的聊天AI

      帮我写一个 cloudflare worker,风格为ESM,样式为: 
      
      export default {
        async fetch(request, env, ctx) {
          return new Response('Hello World!');
        },
      };
      
      如果你有访问网络的能力,文档地址为 https://developers.cloudflare.com/workers/
      
      代理xxx地址,提供xxx功能,oooxxx
      

      如果你的AI太笨, 写的代码没法用, 欢迎回帖求助

      如果有任何其它问题,欢迎回帖提问

      本文随意转载 CC-BY-NC-SA,请先告知我

      1 条回复 最后回复 回复 引用 4
      • Referenced by  Dituon Dituon 
      • 1106095212
        1106095212 最后由 编辑

        有趣的人😘

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

          与文章不相关的知识: 设置worker在某些更节能的服务器上运行以拯救地球

          1f17f68045eca09d5fe4bd73602497b3.png

          1 条回复 最后回复 回复 引用 0
          • Mr.喜
            Mr.喜 ⭐2021⭐ 最后由 编辑

            还有这种东西的 白嫖力(

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

              请问这样操作之后如果要在插件中使用,自己的域名一般是填在哪里啊?

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

                @PandragonXIII 插件没有提供修改接口域名的配置项吗🤔

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

                  @Dituon fe92dd9c-6f28-44c3-a4c9-3c91511d287f-图片.png
                  用的是https://github.com/cssxsh/mirai-openai-plugin#readme
                  新手不太懂,文档里好像也没有,就来问问
                  以及,issue里好像有,但是被close了
                  0f48f84c-59bc-4763-bec2-a2e335419755-图片.png

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

                    @PandragonXIII 插件不支持修改,issue被关闭的原因是「没有相关开发计划」

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

                      @Dituon 那有可以修改的插件推荐吗?十分感谢!

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

                        此回复已被删除!
                        1 条回复 最后回复 回复 引用 0
                        • Dituon
                          Dituon @PandragonXIII 最后由 Dituon 编辑

                          @PandragonXIII

                          已向插件提交PR
                          https://github.com/cssxsh/mirai-openai-plugin/pull/51

                          插件站内地址
                          https://mirai.mamoe.net/topic/1849

                          编译好的修改版本
                          https://drive.google.com/file/d/1jaP1AOtwKfISPXVrDM-MZiBSYIkhkVRT/view

                          修改 cloudflare worker.js

                          const api = 'https://api.openai.com'
                          
                          export default {
                            async fetch(request, env, ctx) {
                              const url = api + new URL(request.url).pathname
                          
                              const response = await fetch(url, {
                                method: request.method,
                                headers: request.headers,
                                body: request.body,
                              });
                          
                              return new Response(response.body, {
                                status: response.status,
                                statusText: response.statusText,
                                headers: response.headers,
                              });
                            },
                          };
                          

                          修改插件默认配置项 api 至 您的worker域名, 例如: https://api.openai.com/v1 至 https://您的域名/v1

                          Dituon created this issue in cssxsh/mirai-openai-plugin

                          open feat: 支持修改API地址 #51

                          1 条回复 最后回复 回复 引用 1
                          • Referenced by  Dituon Dituon 
                          • X
                            xiatianYa 最后由 编辑

                            感谢大佬

                            X 1 条回复 最后回复 回复 引用 0
                            • X
                              xiatianYa @xiatianYa 最后由 编辑

                              @xiatianYa a34f5a75-1f21-4ff5-83c4-27a80a4e2756-图片.png
                              为啥我的这个没用啊 在编辑里面也发送不了

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

                                马克

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

                                  @xiatianYa workers域名在国内某些地区无法访问,可以使用我的域名进行测试,或者访问cloudflare时使用代理

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

                                    @Dituon 我看网上说cloud flare DNS域名被污染了 然后我这边创建也访问不了 我试试我添加自己域名试试

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

                                      @xiatianYa 是的

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

                                        图片.png
                                        图片.png
                                        这样应该就可以了吧 不知道需要多久

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

                                          @Dituon 好了 我代理到我自己的域名服务器了

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

                                            他这个需要托管的自己国内的服务器后 就可以通过自己的域名去访问了

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