您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
生成一个批量下载网页图片的按钮,点击后直接下载。目前支持网站:1. 微信公众号网页 2. 微博网页 3.其他网页使用通用方法下载
当前为
// ==UserScript== // @name 网页图片下载 // @version v1.5 // @description 生成一个批量下载网页图片的按钮,点击后直接下载。目前支持网站:1. 微信公众号网页 2. 微博网页 3.其他网页使用通用方法下载 // @author nixingshiguang // @match http*://*/* // @exclude http*://www.xiaohongshu.com/* // @exclude *127.0.0.1* // @icon https://cftc.160621.xyz/file/8d23583061c79384c94e0.png // @grant GM_download // @namespace https://greasyfork.org/users/943170 // ==/UserScript== (function () { 'use strict'; /** * 附加功能,隐藏滚动条 */ // 获取页面上的样式表 var style = document.createElement('style'); document.head.appendChild(style); var sheet = style.sheet; // 添加自定义滚动条样式 sheet.insertRule('::-webkit-scrollbar { display: none; }', 0); /** * 网页图片下载功能 */ window.onload = function () { // 创建一个按钮 var dlb = document.createElement('button'); //设置按钮内容和样式 dlb.innerHTML = '下载图片'; dlb.style.position = 'fixed'; dlb.style.top = '100px'; dlb.style.color = 'black'; dlb.style.right = '10px'; dlb.style.zIndex = '9999'; dlb.style.borderRadius = '10px'; dlb.style.padding = '10px'; dlb.style.border = '0'; dlb.style.backgroundColor = 'white'; dlb.style.boxShadow = '0 0 5px 5px skyblue '; dlb.style.opacity = '0.5'; // 将按钮添加到页面中 document.body.appendChild(dlb); // 提前声明图片元素变量 var imgElements; // 获取当前日期 var today = new Date(); // 格式化日期为 "aaaa-aa-aa" var year = today.getFullYear(); var month = ('0' + (today.getMonth() + 1)).slice(-2); var day = ('0' + today.getDate()).slice(-2); var formattedDate = year + '-' + month + '-' + day; // 生成随机字符串 function random_string(length) { let result = ''; const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; const charactersLength = characters.length; for (let i = 0; i < length; i++) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } // 通用下载代码 function universal() { // 给按钮绑定点击事件 dlb.addEventListener('click', function () { // 获取页面上所有的img元素 imgElements = document.querySelectorAll('img'); //执行下载 download(); }); } // 微信公众号下载代码 function wxggh() { //给按钮绑定点击事件 dlb.addEventListener('click', function () { // 判断是图文链接、还是图片文字链接 // 获取用于判断的元素 var diff = document.querySelector("#js_article"); // 判断 if (diff) { if (diff.classList.contains('share_content_page')) { // 获取页面上所有的img元素 imgElements = document.querySelectorAll('.swiper_item img'); } else { // 获取页面上所有的img元素 imgElements = document.querySelectorAll('#img-content img'); } } //执行下载 download(); }) }; // 微博下载代码 function weibo() { //给按钮绑定点击事件 dlb.addEventListener('click', function () { console.clear(); console.group("微博图片下载"); // 获取底部图片元素 imgElements = document.querySelectorAll(".Viewer_prevItem_McSJ4 img"); var count = 1; //替换字符,生成原图url imgElements.forEach(function (img) { console.log("下载第" + count + "张图片"); count++; var src = img.getAttribute("src"); var real_src = src.replace("orj360", "large"); // 创建一个 XMLHttpRequest 对象 var xhr = new XMLHttpRequest(); xhr.open('GET', real_src, true); xhr.responseType = 'blob'; xhr.onload = function () { if (xhr.status === 200) { var blob = xhr.response; // 创建一个 <a> 标签 var link = document.createElement('a'); link.style.display = 'none'; document.body.appendChild(link); // 创建一个 URL 对象 var url = window.URL.createObjectURL(blob); // 设置 <a> 标签的 href 属性为 Blob URL link.href = url; // 设置下载图片的文件名 link.download = formattedDate + '.jpg'; // 可以根据需要修改文件名 // 模拟点击下载 link.click(); // 释放 URL 对象 window.URL.revokeObjectURL(url); // 移除 <a> 标签 document.body.removeChild(link); } }; xhr.send(); }); console.log("下载完成"); console.groupEnd(); }); } // 手机版网页微博下载代码 function weiboMobie() { //给按钮绑定点击事件 dlb.addEventListener('click', function () { console.clear(); console.group("微博手机版图片下载"); // 获取底部图片元素 imgElements = document.querySelectorAll("img[data-v-5deaae85]"); var count = 1; //替换字符,生成原图url imgElements.forEach(function (img) { console.log("下载第" + count + "张图片"); count++; var src = img.getAttribute("src"); var real_src = src.replace("orj360", "large"); // 创建一个 XMLHttpRequest 对象 var xhr = new XMLHttpRequest(); xhr.open('GET', real_src, true); xhr.responseType = 'blob'; xhr.onload = function () { if (xhr.status === 200) { var blob = xhr.response; // 创建一个 <a> 标签 var link = document.createElement('a'); link.style.display = 'none'; document.body.appendChild(link); // 创建一个 URL 对象 var url = window.URL.createObjectURL(blob); // 设置 <a> 标签的 href 属性为 Blob URL link.href = url; // 设置下载图片的文件名 link.download = formattedDate + '.jpg'; // 可以根据需要修改文件名 // 模拟点击下载 link.click(); // 释放 URL 对象 window.URL.revokeObjectURL(url); // 移除 <a> 标签 document.body.removeChild(link); } }; xhr.send(); }); console.log("下载完成"); console.groupEnd(); }); } // 下载按钮点击事件的通用代码 function download() { // // 清空控制台内容 // console.clear(); console.group("图片下载脚本"); // 存储所有img元素的data-src属性值 var imageUrls = []; // 声明计数变量 var count = 1; imgElements.forEach(function (img) { var dataSrc = img.getAttribute('data-src'); var Src = img.getAttribute('src'); if (dataSrc) { console.log('从dataSrc获取的第' + count + '张的图片链接'); imageUrls.push(dataSrc); } else { console.log("从src获取的第" + count + "张的图片链接"); imageUrls.push(Src); } count += 1; }); console.log("下载开始"); console.log(imageUrls); imageUrls.forEach(function (url) { GM_download({ url: url, name: formattedDate + random_string(4) + '.jpg' // name: url.substring(url.lastIndexOf('/') + 1) }); }); console.log("下载结束"); console.groupEnd(); } // 通过判断当前网址来执行不同的下载获取图片代码 // 获取当前网页url var currentUrl = window.location.href; // 使用Switch匹配执行代码 switch (true) { //匹配微信公众号推文:mp.weixin.qq.com/s/ case currentUrl.includes("mp.weixin.qq.com/s/"): wxggh(); break; //匹配微博原图:https://weibo.com/*?layerid= case currentUrl.includes("https://weibo.com/"): weibo(); break; //匹配微博手机版原图:https://m.weibo.cn/ case currentUrl.includes("https://m.weibo.cn/"): weiboMobie(); break; // 使用通用下载代码 default: universal(); } } })();