乐于分享
好东西不私藏

豆包图片去水印下载教程,搞定带水印问题

豆包图片去水印下载教程,搞定带水印问题

✨ 核心优势(2026年3月亲测有效)

✅ 无需PS,下载即得无水印原图;

✅ 不改变分辨率、水平分辨率、垂直分辨率、位深度等;

✅ 使用该去水印脚本下载得到的图片(比如:2.39MB),相较于未使用脚本下载的有水印图片(比如:2.42MB)仅略小

✅ 浏览器端操作,无需额外软件。

📋 准备工作

需2个核心工具:

  1. Edge浏览器

  2. “篡改猴”扩展(脚本管理工具)+ 豆包去水印专用脚本(核心功能载体)。

🔧 操作步骤(3步完成)

第一步:安装篡改猴扩展

  • Edge浏览器打开edge://extensions,左下角开启开发人员模式→ 点击「获取Microsoft Edge扩展」→ 搜索「篡改猴」→ 点击「获取」安装。✅ 安装成功后,浏览器右上角会出现猴子头图标

第二步:安装去水印脚本

推荐豆包AI生图去水印(增强版)(创建于2025年12月13日,Greasy Fork平台验证):

打开脚本页面;

点击「安装此脚本」→ 篡改猴自动弹出安装页→ 点击「安装」完成。

第三步:使用方法(自动处理,超简单)

  1. 访问豆包官网(https://www.doubao.com)→ 登录账号;
  2. 输入提示词生成图片→ 脚本后台自动监控,将带水印URL替换为无水印原始版(接口返回数据中本身存在);(无论小图预览还是大图预览,均不再显示“AI生成”水印
  3. 下载:

直接点击小图预览处的「下载」按钮或大图预览右上角的“下载原图”→ 保存无水印原图

🔍 技术原理(数据层面替换,稳定可靠)

豆包生成图片时,会同时返回两个版本:

  • 带水印的「展示版」(页面可见);

  • 无水印的「原始版」(隐藏在接口返回数据中)。脚本通过重写JSON.parse方法监控API返回数据,自动将带水印URL替换为原始URL,无需修改页面布局,从根源解决水印问题。

    注:这个原理我是从网上看到的,还没亲自验证过。

⚠️ 注意事项

  • 需确保篡改猴扩展处于「启用状态」;
  • 脚本仅处理豆包生成的图片,不影响其他功能。

按此操作,即可免费获取豆包生成的无水印原图,无需额外成本! 🎉

若Greasy Fork无法打开,可直接复制下方已精简多余通知的脚本代码,点击“篡改猴”扩展图标,选择“添加新脚本…”,清空默认代码后粘贴,按Ctrl+S保存,刷新豆包生图页面即可。

// ==UserScript==// @name         豆包AI生图去水印(增强版)// @namespace    http://tampermonkey.net/// @version      1.2.0// @description  豆包AI生图下载原图去水印,并添加用户提示// @author       mzh// @homepage https://blog.csdn.net/u011027547// @match        https://www.doubao.com/*// @icon         https://www.google.com/s2/favicons?sz=64&domain=doubao.com// @grant        none// @license      GPL-3.0// @downloadURL https://update.greasyfork.org/scripts/558800/%E8%B1%86%E5%8C%85AI%E7%94%9F%E5%9B%BE%E5%8E%BB%E6%B0%B4%E5%8D%B0%EF%BC%88%E5%A2%9E%E5%BC%BA%E7%89%88%EF%BC%89.user.js// @updateURL https://update.greasyfork.org/scripts/558800/%E8%B1%86%E5%8C%85AI%E7%94%9F%E5%9B%BE%E5%8E%BB%E6%B0%B4%E5%8D%B0%EF%BC%88%E5%A2%9E%E5%BC%BA%E7%89%88%EF%BC%89.meta.js// ==/UserScript==(function() {'use strict';let scriptActive = false;functionshowActivationMessage() {// 避免重复提示if (scriptActive) return;        scriptActive = true;// 控制台日志console.log('🚫 豆包AI去水印脚本已激活,正在监控图片数据...');// 页面顶部状态栏const statusBar = document.createElement('div');        statusBar.textContent = '豆包AI去水印:已启用(检测到图片生成时会自动去除水印)';        statusBar.style.cssText = `            position: fixed;            top: 0;            left: 0;            width: 100%;            background: #4CAF50;            color: white;            padding: 8px;            text-align: center;            font-size: 14px;            z-index: 9999;            box-shadow: 0 2px 5px rgba(0,0,0,0.2);        `;document.body.appendChild(statusBar);// 5秒后淡出状态栏setTimeout(() => {            statusBar.style.transition = 'opacity 0.5s';            statusBar.style.opacity = '0';setTimeout(() => {if (document.body.contains(statusBar)) {document.body.removeChild(statusBar);                }            }, 500);        }, 5000);    }// 移除成功提示函数functionfindAllKeysInJson(obj, key) {const results = [];functionsearch(current) {if (current && typeof current === 'object') {if (!Array.isArray(current) && Object.prototype.hasOwnProperty.call(current, key)) {                    results.push(current[key]);                }const items = Array.isArray(current) ? current : Object.values(current);for (const item of items) {search(item);                }            }        }search(obj);return results;    }let _parse = JSON.parse;JSON.parse = function(data) {let jsonData = _parse(data);if (!data.match('creations')) return jsonData;let creations = findAllKeysInJson(jsonData, 'creations');if (creations.length > 0) {            creations.forEach((creation) => {                creation.map((item) => {if (item.image && item.image.image_ori_raw && item.image.image_ori_raw.url) {const rawUrl = item.image.image_ori_raw.url;                        item.image.image_ori.url = rawUrl;// 预览时也去水印                        item.image.image_preview.url = rawUrl;                        item.image.image_thumb.url = rawUrl;                    }return item;                });            });// 已移除成功提示        }return jsonData;    }// 页面加载后显示激活提示if (document.readyState === 'loading') {document.addEventListener('DOMContentLoaded', showActivationMessage);    } else {setTimeout(showActivationMessage, 1000);    }})();