您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Mark the current page CVE
- // ==UserScript==
- // @name Mark CVE
- // @namespace http://tampermonkey.net/
- // @version 0.1.3
- // @description Mark the current page CVE
- // @author Kali-Team
- // @match *://*/*
- // @exclude https://scap.kali-team.cn/*
- // @icon https://avatars.githubusercontent.com/u/99640169?s=200&v=4
- // @grant none
- // @run-at document-idle
- // @homepage https://github.com/cn-kali-team/mark-cve
- // @license GPL-3.0-only
- // ==/UserScript==
- (function () {
- 'use strict';
- let DefaultBaseUrl = 'https://scap.kali-team.cn/cve/';
- function GetBaseURL() {
- const KeyName = 'base_url';
- if (typeof browser === "undefined") {
- return DefaultBaseUrl;
- }
- try {
- browser.storage.local.get(KeyName).then((item) => {
- DefaultBaseUrl = item.base_url || DefaultBaseUrl;
- });
- } catch (error) {
- console.error(error);
- }
- return DefaultBaseUrl;
- }
- function Mark() {
- const userSelection = window.getSelection();
- const id = userSelection.toString().toLocaleUpperCase();
- const selectedTextRange = userSelection.getRangeAt(0);
- let cve = selectedTextRange.startContainer.parentNode;
- if (cve.querySelector(".Marked") != null || cve.getAttribute("class") === "Marked") {
- return;
- }
- if (["A", "CODE"].includes(cve.tagName)) {
- return;
- }
- const spanElement = document.createElement("span");
- spanElement.setAttribute("class", "Marked");
- selectedTextRange.surroundContents(spanElement);
- const icon = document.createElement("a");
- icon.href = DefaultBaseUrl + id;
- icon.target = "_blank";
- const svg = document.createElement('img');
- svg.setAttribute("style", "background-color: rgb(154, 205, 50);");
- svg.src = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGNsYXNzPSJpY29uIGljb24tdGFibGVyIGljb24tdGFibGVyLWJ1ZyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIGZpbGw9Im5vbmUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCI+PHBhdGggc3Ryb2tlPSJub25lIiBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTkgOXYtMWEzIDMgMCAwIDEgNiAwdjEiIC8+PHBhdGggZD0iTTggOWg4YTYgNiAwIDAgMSAxIDN2M2E1IDUgMCAwIDEgLTEwIDB2LTNhNiA2IDAgMCAxIDEgLTMiIC8+PHBhdGggZD0iTTMgMTNsNCAwIiAvPjxwYXRoIGQ9Ik0xNyAxM2w0IDAiIC8+PHBhdGggZD0iTTEyIDIwbDAgLTYiIC8+PHBhdGggZD0iTTQgMTlsMy4zNSAtMiIgLz48cGF0aCBkPSJNMjAgMTlsLTMuMzUgLTIiIC8+PHBhdGggZD0iTTQgN2wzLjc1IDIuNCIgLz48cGF0aCBkPSJNMjAgN2wtMy43NSAyLjQiIC8+PC9zdmc+";
- icon.appendChild(svg);
- spanElement.appendChild(icon);
- }
- function FindCVE() {
- GetBaseURL();
- if (DefaultBaseUrl.startsWith(location.hostname)) {
- return;
- }
- const regex = new RegExp('\\bCVE-\\d{4}-\\d{4,7}\\b', 'gmi');
- let m;
- let cve_arr = [];
- while (m = regex.exec(document.body.innerText)) {
- cve_arr.push(m.toString().toLocaleUpperCase());
- }
- document.designMode = "on";
- Array.from(new Set(cve_arr)).forEach(cve => {
- const sel = window.getSelection();
- sel.collapse(document.body, 0);
- while (window.find(cve)) {
- Mark();
- sel.collapseToEnd();
- }
- Mark();
- sel.collapseToEnd();
- });
- window.scrollTo(0, 0);
- document.designMode = "off";
- }
- FindCVE();
- })();