Printing large images can be challenging without access to a large-format printer. Whether creating a DIY poster, printing architectural plans, or wo…
Flutter, Google's innovative framework, has taken the app development world by storm since its launch in 2018. Promising a "code once, run…
Faxing remains a vital communication tool for businesses across different sectors, even in the digital age. With online fax services, organizations c…
PortSwigger, the company behind the popular web security testing tool Burp Suite, has announced a significant advancement in application security tes…
Valve has removed a free-to-play game called " PirateFi " from its Steam platform after discovering it contained malicious software designe…
In a significant development for the cryptocurrency industry, two Estonian nationals have admitted to orchestrating one of the largest cryptocurrency…
Security researchers at Rapid7 have uncovered a significant SQL injection vulnerability (CVE-2025-1094) affecting PostgreSQL's interactive termin…
Security researchers at Symantec have uncovered an unusual cybersecurity incident where tools typically associated with Chinese espionage operations …
Security researchers at Assetnote have discovered a critical authentication bypass vulnerability in Palo Alto Networks' PAN-OS management interfa…
Microsoft Threat Intelligence has revealed details about an extensive cyber operation conducted by a subgroup within the Russian state actor Seashell…
A recent investigation has uncovered how a Lithuanian ad-tech company, Eskimi, collected and provided sensitive location data of US military personne…
A significant privacy vulnerability that could expose any YouTube user's email address has been documented and responsibly disclosed to Google, e…
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();
})();