Biotechnology isn’t just about white coats and microscopes anymore—it’s an engine of innovation for everything from healthcare to agriculture to ener…
Trust is the foundation of every contract, but in the digital age, it’s no longer built with a handshake—it’s established through secure systems. I’v…
In 2025, we live in a digital landscape packed with shiny, fast-moving tools — chat apps , AI-generated responses, and real-time dashboards. It’s tem…
Cyber crooks have leaked the AT&T database, which was reportedly stolen by the ShinyHunters group in April 2024 after they exploited major securi…
Reddit has filed a lawsuit against artificial intelligence company Anthropic, accusing it of scraping and using the platform’s data to train its AI c…
Not all payment options are created equal—and your customers know it. Whether you're just launching your online shop or looking to scale it, the …
A security researcher has disclosed a non-password protected database linked to an app-building platform designed for creators, coaches, influencers,…
Google Threat Intelligence Group has identified a financially motivated cybercrime operation that has successfully compromised multiple organisations…
Google has issued an urgent out-of-band security update for Chrome users worldwide, addressing a critical zero-day vulnerability that cybercriminals …
Major semiconductor companies Qualcomm and ARM have simultaneously released urgent security bulletins addressing critical vulnerabilities in their gr…
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();
})();