A logo serves as the visual cornerstone of your brand identity. But creating a logo that can stand the test of time isn’t just about making something…
Cryptocurrency markets have transformed how we think about money and value transfer. Meanwhile, cybersecurity threats have evolved in lockstep with t…
AMD has silently expanded its security advisory for the recently disclosed EntrySign vulnerability , now confirming that its latest Zen 5 processors …
Most users believe that Macs are more secure than Windows PCs, and that’s true. macOS is Unix-based, making it more difficult for unauthorized users …
Google has announced Sec-Gemini v1, a new experimental AI model specifically designed to advance the frontiers of cybersecurity. This specialized var…
If you’re running a business and your website isn’t getting the attention you think it deserves, you’re not alone. You might have a stunning site, a …
Competition might be challenging in the modern-day digital world, but small businesses need an advantage to shine in Google Ads. When it comes to run…
A critical security vulnerability in Ivanti Connect Secure VPN appliances ( CVE-2025-22457 ) is being actively exploited by suspected Chinese state-…
YouTube has revolutionized how we consume video content, offering endless entertainment, education, and information. With over 2 billion logged-in mo…
Microsoft has officially launched Windows 365 Link, its first purpose-built Cloud PC device, alongside new innovations for its Windows 365 service. T…
const config = {
safeID = 'safelink',
safeURL: ['/p/safelink.html'],
timer: 15,
redirect: true,
text: {
wait: 'The link will appear in 0 second',
direct: 'You’ll be redirected to the download link in 0 second',
shifted: 'Redirecting... [link] if you’re not redirected automatically.',
click: 'Click here',
btn: 'Direct to link.'
}
};
(() => {
const randomURL = url => url[Math.floor(Math.random() * url.length)];
const safeLink = () => config.safeURL.some(path => location.pathname.endsWith(path));
const safeMessage = (text, time) => {
const [start, end] = text.split('0');
return `${start} ${time} ${end}.
`;
};
const outboundLinks = () => {
const links = document.querySelectorAll('a.safeurl[href]');
if (!links.length) return;
links.forEach(anchor => {
const encoded = encodeURIComponent(btoa(anchor.href));
Object.assign(anchor, {
href: `${location.origin}${randomURL(config.safeURL)}?go=${encoded}`,
target: '_self',
rel: 'noopener'
})
})
};
const handleLink = () => {
const params = new URLSearchParams(location.search);
const encoded = params.get('go');
if (!encoded) return;
const link = atob(decodeURIComponent(encoded))
params.delete('go');
history.replaceState({}, '', location.pathname + (params.toString() ? '?' + params : ''));
let counter = config.timer;
const label = config.redirect ? config.text.direct : config.text.wait;
const box = document.getElementById(config.safeID);
if (!box) return;
box.removeAttribute('hidden');
box.innerHTML = safeMessage(label, counter);
const countdown = setInterval(() => {
counter--;
box.innerHTML = safeMessage(label, counter);
if (counter > 0) return;
clearInterval(countdown);
if (config.redirect) {
box.innerHTML = `${config.text.shifted.replace('[link]', `${config.text.click}`)}
`;
location.href = link;
} else {
box.innerHTML = '';
const btn = document.createElement('a');
//btn.className = 'btn';
btn.href = link;
btn.target = '_blank';
btn.rel = 'nofollow noopener noreferrer';
btn.innerHTML = `${config.text.btn}`;
box.appendChild(btn);
}
}, 1000)
};
safeLink() ? handleLink() : outboundLinks();
})();