🔥 我的开源项目火了!竟被各个公众号转发

前言🌟

两个月前我写了个摸鱼岛摸鱼网站,从 10 个小功能到现在 20~30个功能,少了不了摸鱼岛的用户的支持以及 pr ,大家的开源精神给我摸鱼岛加了很多助力,还被 DeepSeek 收录以及各个公众号转发,今天也是重新排版,带来摸鱼岛 2.0 的介绍文档,此项目开源,只希望获取各位的小小 star 🌟即是给我的最大鼓励。

!NOTE 本项目为开源项目,使用者必须在网站标注作者名称以及指向本项目的链接。如果不想保留署名,必须首先获得授权。不得用于非法用途。

!NOTE

在线体验地址🔗

最新版(域名 2025.09 过期):fish.codebug.icu/ 稳定版:yucoder.cn/

后端地址🌈:github.com/lhccong/fis...

前端地址🏖️:github.com/lhccong/fis...
!WARNING 私部署时记得修改后端接口地址路径指向。

✨ 开源🌟一站式摸鱼网 ✨

​

部署教程 · 目前现状 · 意见反馈 · 截图展示 · 在线演示 · 开源与贡献 · 相关项目 · 赞赏支持

​

  • DeepSeek

  • 小红书

  • 微信公众号

功能

  1. 支持多种数据源聚合:

    • ✅ 知乎热榜
    • ✅ 微博热榜
    • ✅ 虎扑步行街热榜
    • ✅ 编程导航热榜
    • ✅ CSDN 热榜
    • ✅ 掘金热榜
    • ✅ B 站热门
    • ✅ 抖音热搜
    • ✅ 网易云热歌榜(支持网站点击播放)
    • ✅ 什么值得买热榜
    • ✅ 待补充...
  2. 每日待办功能。

  3. 摸鱼聊天室:

    • ✅ 发送 emoji 表情包
    • ✅ 发送搜狗在线表情包
    • ✅ 支持网站链接解析
    • ✅ 支持 markdown 文本解析
    • ✅ 支持 AI 助手回答(接入硅基流动模型)
    • ✅ 头像框功能
    • ✅ 用户地理位置显示功能
    • ✅ 用户称号功能
    • ✅ 五子棋、象棋对战邀请功能
    • ✅ 积分红包🧧发送功能
    • ✅ 支持用户 CV 发送图片功能
  4. 摸鱼阅读:

    • ✅ 在线搜书功能
    • ✅ 小窗口观看功能
    • ✅ 支持自定义书源
  5. 小游戏:

    • ✅ 五子棋(人机/在线对战)
    • ✅ 象棋(人机/在线对战)
    • ✅ 2048
  6. 工具箱:

    • ✅ JSON 格式化
    • ✅ 文本比对
    • ✅ 聚合翻译
    • ✅ Git 提交格式生成
    • ✅ AI 智能体
    • ✅ AI 周报助手
  7. 头像框兑换功能。

  8. 其他:

    • ✅ 音乐播放器
    • ✅ 下班薪资计算器(放假倒计时)
    • ✅ 修改网站图标
    • ✅ 网站标题闪烁消息提醒
    • ✅ 摸鱼初始页

截图展示

信息聚合

每日待办

摸鱼室

摸鱼阅读

小游戏

  • 五子棋
  • 象棋
  • 2048

工具箱

  • JSON 格式化工具
  • 文本比对

头像框兑换

目前现状

  • 各大公众号转发。
  • 用户突破 1k 的个人网站。

  • 最高峰实时在线人数达 80 +。

部署教程

后端

  • 执行初始化 SQL create_table.sql

  • 更改 MySQL 地址、Redis 地址、Minio 地址、邮箱发送配置

  • Maven 打包

  • docker 部署

  • dockerfile 文件

    bash 复制代码
    FROM openjdk:8
    ENV workdir=/cong/fish
    COPY . ${workdir}
    WORKDIR ${workdir}
    EXPOSE 8123
    CMD ["java","-jar","-Duser.timezone=GMT+08","fish-island-backend-0.0.1-SNAPSHOT.jar"]
  • 打包命令

    ini 复制代码
    docker build -f ./dockerfile -t fish .
    ​
    启动命令:docker run -d -e TZ=CST -p 8123:8123 -p 8090:8090 --name "fish" fish:latest
  • nginx 配置

    ini 复制代码
    server {
        listen       80;
        listen  [::]:80;
        server_name  moyuapi.codebug.icu;
    ​
        rewrite ^(.*) https://$server_name$1 permanent;
    }
    ​
    server {
        listen       443 ssl;
        server_name  moyuapi.codebug.icu;
    ​
        ssl_certificate      /etc/nginx/ssl/cert.pem;
        ssl_certificate_key  /etc/nginx/ssl/key.pem;
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
    ​
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
    ​
        location / {
             root /usr/share/nginx/fish;
             index index.html;
              try_files $uri $uri/ /index.html;
        }
    ​
    ​
       location /fish/ {
             proxy_pass http://fish:8123/;    
        }
    ​
    # WebSocket代理配置,处理 wss:// 请求
        location /ws/ {
            proxy_pass http://fish:8090/;  # 后端 WebSocket 服务地址
            proxy_http_version 1.1;  # 使用 HTTP/1.1 协议,WebSocket 需要这个版本
            proxy_set_header Upgrade $http_upgrade;  # 必须设置这些头来支持 WebSocket 协议的升级
            proxy_set_header Connection 'upgrade';  # 维持 WebSocket 连接
            proxy_set_header Host $host;  # 确保 Host 头部传递正确
            proxy_cache_bypass $http_upgrade;  # 禁用缓存
        }
    ​
    location /sogou-api/ {
            proxy_pass https://pic.sogou.com/;
            proxy_set_header Host pic.sogou.com;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_ssl_server_name on;
    ​
            # 解决 CORS 问题
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
            add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range";
            add_header Access-Control-Expose-Headers "Content-Length,Content-Range";
    ​
            # 处理 OPTIONS 预检请求
            if ($request_method = OPTIONS) {
                return 204;
            }
        }
    ​
    location /holiday/ {
        proxy_pass https://date.appworlds.cn/;
        
        # 保持目标 API 的 Host,避免返回默认网页
        proxy_set_header Host date.appworlds.cn;
    ​
        # 伪装成浏览器,防止服务器根据 User-Agent 返回 HTML
        proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
    ​
        # 强制服务器返回 JSON,而不是 HTML
        proxy_set_header Accept "application/json";
    ​
        # CORS 允许跨域
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
        add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range";
        add_header Access-Control-Expose-Headers "Content-Length,Content-Range";
    ​
        # 处理 OPTIONS 预检请求
        if ($request_method = OPTIONS) {
            return 204;
        }
    }
    ​
    ​
    location /img-api/ {
            proxy_pass https://i.111666.best/;
            proxy_set_header Host pic.sogou.com;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_ssl_server_name on;
    ​
            # 解决 CORS 问题
            add_header Access-Control-Allow-Origin *;
            add_header Access-Control-Allow-Methods "GET, POST, OPTIONS";
            add_header Access-Control-Allow-Headers "DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range";
            add_header Access-Control-Expose-Headers "Content-Length,Content-Range";
    ​
            # 处理 OPTIONS 预检请求
            if ($request_method = OPTIONS) {
                return 204;
            }
        }
    ​
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }

前端

  • 修改 src/constants/index.ts 的接口地址。
  • max build --打包命令。
  • 部署 dist 文件。

开源与贡献

项目支持者 🔥

前端贡献者 🌟

后端贡献者 🌟:

📌 贡献方式

如果你也有希望聚合的数据源不妨来参加一下贡献,将你的数据源爬取出来放入其中。

1️⃣ 页面元素抓取

📌 适用于:目标网站未提供 API,数据嵌入在 HTML 结构中。

✅ 贡献要求

  • 推荐使用:

    • Jsoup(Java)
    • BeautifulSoup(Python)
    • Cheerio(Node.js)
  • 选择器精准:避免因页面结构变化导致抓取失败。

  • 减少 HTTP 请求:优化抓取效率,避免重复请求。

  • 遵守网站爬取规则 (robots.txt )。

💡 示例代码

ini 复制代码
Document doc = Jsoup.connect("https://example.com").get();
String title = doc.select("h1.article-title").text();

2️⃣ 页面接口返回数据抓取

📌 适用于:目标网站提供 API,可直接调用接口获取 JSON/XML 数据。

✅ 贡献要求

  • 推荐使用:

    • HttpClient(Java)
    • axios(Node.js)
    • requests(Python)
  • 分析 API 请求 :确保请求参数完整(headers、cookies、token)。

  • 减少不必要的请求:优化调用频率,避免触发反爬机制。

  • 异常处理:确保代码稳定运行。

💡 示例代码

ini 复制代码
String apiUrl = "https://api.example.com/data";
String response = HttpRequest.get(apiUrl).execute().body();
JSONObject json = JSON.parseObject(response);

🔗 数据源注册

数据抓取完成后,需要注册数据源,以便系统能够正确使用。

🚀 注册流程

  1. 添加数据源 Key : /src/main/java/com/cong/fishisland/model/enums/HotDataKeyEnum.java 定义新的数据源 Key。

  2. 更新数据源映射:

    • /src/main/java/com/lhccong/fish/backend/config/DatabaseConfig.java 文件中,添加新的数据源配置。
  3. 创建数据源类:

    • src/main/java/com/cong/fishisland/datasource 目录下,新建数据源类,继承 DataSource,实现 getHotPost 方法。
  4. 实现数据获取逻辑:

    • 按照 HotPostDataVO 格式返回数据。
    • 使用 @Builder 注解,确保数据能正确解析。

💡 示例代码

scss 复制代码
HotPostDataVO.builder()
            .title(title)
            .url(url)
            .followerCount(followerCount)
            .excerpt(excerpt)
            .build();

🚀 贡献流程

  1. Fork 仓库 ➜ 点击 GitHub 右上角 Fork 按钮。
  2. 创建分支 ➜ 推荐使用有意义的分支名,如 feature/data-scraper-optimization。
  3. 提交代码 ➜ 确保代码可读性高,符合规范。
  4. 提交 Pull Request(PR) ➜ 详细描述您的更改内容,并关联相关 issue(如有)。
  5. 等待审核 ➜ 维护者会进行代码审核并合并。

以上讲解如果对你有帮助,不妨给我的项目点个小小的 star 🌟,成为一下我的精神股东呢

🎉 感谢您的贡献!

您的每一份贡献都让 fish-island 变得更好!💪

相关推荐
子兮曰5 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰5 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万5 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝5 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
胡写代码5 天前
别再前后端各写一套表单校验了
java·后端
三十而立洋5 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
大勇前进5 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端
yuzhi_liu5 天前
我用 LangGraph4j 实现 Multi-Agent Supervisor
后端
alsmile5 天前
Node-RED 之外,国产规则引擎的新方案:基于标准语法,Go 先行实现
后端·开源·go
大白805 天前
PHP 内存溢出排查思路:看懂报错日志,精准定位问题
后端