Tries to detect and un-break Session IDs posted on 4chan
目前為
// ==UserScript==
// @name 4chan Session ID Unbreaker
// @license GPLv3
// @namespace https://boards.4chan.org/
// @version 1.3
// @description Tries to detect and un-break Session IDs posted on 4chan
// @author ceodoe
// @match https://boards.4chan.org/*/thread/*
// @match https://boards.4chan.org/*/res/*
// @icon https://www.google.com/s2/favicons?sz=64&domain=4chan.org
// @grant none
// ==/UserScript==
function parsePosts() {
let posts = document.querySelectorAll("blockquote.postMessage");
for(let i = 0; i < posts.length; i++) {
if(posts[i].getAttribute("data-4sidu-parsed") !== "1") {
posts[i].setAttribute("data-4sidu-parsed", "1");
// Strip all backlinks as they are likely to contain the magic number 05 that all Session IDs start with
let postText = posts[i].innerText.replace(/\>\>\b[0-9]+\b/g, "");
let idStartIndex = postText.indexOf("05");
if(idStartIndex > -1) {
let id = postText.substring(idStartIndex).replace(/[^A-Fa-f0-9]/g, "").substring(0, 66);
if(id.length == 66) { // All Session IDs are 66 characters long; if we didn't get that many characters, the ID is invalid
let html = `
<div style="margin-top: 1em; border-top: 1px solid; padding: 0.5em; width: fit-content;">
<span style="color: #66cc33; font-weight: bold;">Session ID:</span> ${id}
</div>
`;
posts[i].insertAdjacentHTML("beforeend", html);
}
}
}
}
}
new MutationObserver(function(event) { parsePosts(); }).observe(document.querySelector("div.thread"), {childList: true});
parsePosts();