破解www.ainitu.com印章下载
// ==UserScript==
// @name 破解www.ainitu.com印章下载
// @namespace http://tampermonkey.net/
// @version 1.4
// @description 导出指定 ID 的 <canvas> 为 SVG,并自动删除指定元素
// @author You
// @match https://ainitu.cdxyxjiao.top*
// @match https://www.ainitu.com*
// @grant none
// ==/UserScript==
(function () {
'use strict';
// 等待页面加载完成
window.addEventListener('load', () => {
console.log('页面加载完成,开始删除指定元素');
// 使用 CSS 选择器和 XPath 定位要删除的元素
const selectors = [
'/html/body/div[1]', // XPath 选择器
'//*[@id="app"]/div/div[5]', // XPath 选择器
'//*[@id="app"]/div/div[6]', // XPath 选择器
'//*[@id="app"]/div/div[4]/button[3]', // XPath 选择器
'//*[@id="app"]/div/div[4]/div', // XPath 选择器
'/html/body/div[3]', // XPath 选择器
'/html/body/div[2]',
];
// 删除元素的通用函数
function deleteElement(selector) {
try {
// 优先尝试 XPath
const element = document.evaluate(selector, document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
if (element) {
element.remove();
console.log(`已删除元素(XPath): ${selector}`);
} else {
console.log(`未找到元素(XPath): ${selector}`);
}
} catch (err) {
console.error(`无法删除元素(XPath): ${selector}`, err);
}
}
// 遍历删除指定元素
selectors.forEach(selector => deleteElement(selector));
console.log('指定元素删除完成');
});
// 创建一个按钮
const button = document.createElement('button');
button.innerText = '导出 Canvas 为 SVG';
button.style.position = 'fixed';
button.style.top = '10px';
button.style.right = '10px';
button.style.zIndex = '1000';
button.style.padding = '10px 20px';
button.style.backgroundColor = '#007bff';
button.style.color = '#fff';
button.style.border = 'none';
button.style.borderRadius = '5px';
button.style.cursor = 'pointer';
button.style.boxShadow = '0 2px 4px rgba(0, 0, 0, 0.2)';
document.body.appendChild(button);
// 按钮点击事件
button.addEventListener('click', function () {
console.log('按钮点击事件触发');
// 通过 ID 获取目标 <canvas> 元素
const canvas = document.getElementById('canvas');
if (!canvas) {
alert('未找到 ID 为 "canvas" 的 <canvas> 元素');
console.log('未找到目标 <canvas> 元素');
return;
}
console.log('找到目标 canvas:', canvas);
// 获取 Canvas 的宽度和高度
const width = canvas.width;
const height = canvas.height;
// 创建 SVG 元素
const svgNS = "http://www.w3.org/2000/svg";
const svg = document.createElementNS(svgNS, "svg");
svg.setAttribute("xmlns", svgNS);
svg.setAttribute("viewBox", `0 0 ${width} ${height}`);
svg.setAttribute("width", width);
svg.setAttribute("height", height);
// 获取 Canvas 数据并嵌入 SVG
const dataURL = canvas.toDataURL();
const image = document.createElementNS(svgNS, "image");
image.setAttributeNS(null, 'href', dataURL);
image.setAttribute("x", 0);
image.setAttribute("y", 0);
image.setAttribute("width", width);
image.setAttribute("height", height);
svg.appendChild(image);
// 转换为字符串并下载
const svgData = new XMLSerializer().serializeToString(svg);
const blob = new Blob([svgData], { type: "image/svg+xml;charset=utf-8" });
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'exported_canvas.svg';
a.click();
URL.revokeObjectURL(url); // 释放 URL
console.log('目标 canvas 转换为 SVG 并成功导出');
});
})();