Turns the URL at the bottom of YouTube Sorry (captcha) pages into a clickable link
目前為
// ==UserScript==
// @name Convert URL to Link on YouTube Sorry Pages
// @description Turns the URL at the bottom of YouTube Sorry (captcha) pages into a clickable link
// @namespace Violentmonkey Scripts
// @match https://www.google.com/sorry/index
// @grant none
// @version 1.0
// @author Jupiter Liar
// @license Attribution CC BY
// @description 7/16/2023, 9:31 AM
// ==/UserScript==
function convertCaptchaUrlToLink() {
const debugEnabled = false; // Set to true to enable the debugger
const debuggerMaxHeight = 'calc(100vh - 16px)';
const createDebugger = () => {
const debuggerDiv = document.createElement('div');
debuggerDiv.style.position = 'fixed';
debuggerDiv.style.top = '8px';
debuggerDiv.style.left = '8px';
debuggerDiv.style.display = 'block';
debuggerDiv.style.padding = '8px';
debuggerDiv.style.backgroundColor = 'white';
debuggerDiv.style.color = 'black';
debuggerDiv.style.fontFamily = 'sans-serif';
debuggerDiv.style.maxHeight = debuggerMaxHeight;
debuggerDiv.style.overflowY = 'auto';
document.body.appendChild(debuggerDiv);
return debuggerDiv;
};
const debugMessage = (message) => {
if (debugEnabled && debuggerDiv) {
debuggerDiv.innerText += `${message}\n`;
}
};
let debuggerDiv;
if (debugEnabled) {
debuggerDiv = createDebugger();
debugMessage('Debugger enabled.');
debugMessage('Searching for URL to convert...');
}
const traverseElements = (elements) => {
for (const element of elements) {
if (element.tagName === 'DIV' && element.style.fontSize === '13px') {
const urlMatch = element.textContent.match(/URL:\s+(https?:\/\/[^\s<]+)/);
if (urlMatch) {
if (debugEnabled) {
debugMessage('URL found.');
debugMessage('Converting URL to link...');
}
const url = urlMatch[1];
const link = document.createElement('a');
link.href = url;
link.textContent = url;
element.innerHTML = element.innerHTML.replace(urlMatch[0], `URL: ${link.outerHTML}`);
if (debugEnabled) {
debugMessage('URL converted to link.');
}
return;
}
}
if (element.children.length > 0) {
traverseElements(element.children);
}
}
};
setTimeout(() => {
if (debugEnabled) {
debugMessage('Giving up.');
}
}, 60000);
traverseElements(document.body.children);
}
convertCaptchaUrlToLink();