Javascript远程解析JSON实现自动下载或打开指定网站。
远程下载是一种利用JSON和JavaScript技术来实现的方法,其主要目的是保护域名免受屏蔽。通过远程下载,用户可以在不直接访问被屏蔽的域名的情况下获取所需的内容,从而绕过域名屏蔽。
远程下载的工作原理是将需要下载的内容以JSON格式存储在一个可信任的服务器上,然后通过JavaScript代码从该服务器上获取并解析这些内容。由于该服务器的域名未被屏蔽,因此可以成功获取到所需的内容,而不受域名屏蔽的限制。
远程下载在实际应用中有很多用途。首先,它可以用于绕过网络审查。在一些地区,ZF或其他机构可能会屏蔽某些特定的域名,限制用户访问特定的内容。通过远程下载,用户可以通过访问未被屏蔽的服务器来获取被屏蔽的内容,从而绕过网络审查。
单一域名
<script> // 远程解析指定JSON超链接地址 fetch('http://www.domain.com/download.json') .then(response => response.json()) .then(data => { // 判断客户端类型 const userAgent = navigator.userAgent.toLowerCase(); let clientType; if (/android/.test(userAgent)) { clientType = 'Android'; } else if (/iphone|ipad|ipod/.test(userAgent)) { clientType = 'Apple'; } else if (/windows/.test(userAgent)) { clientType = 'Windows'; } // 获取JSON中的URL地址 const links = data.links; let downloadUrl; for (let i = 0; i < links.length; i++) { if (links[i].name === clientType) { downloadUrl = links[i].url; break; } } // 下载对应文件 if (downloadUrl) { //window.location.href = downloadUrl; //当前页面打开 window.open(downloadUrl, '_blank'); //新标签页打开 } else { console.log('无法确定客户端类型或找不到对应的下载链接。'); } }) .catch(error => { console.log('发生错误:', error); }); </script>
这是单一域名,不需要多条域名的选择。
随机域名
<script> // 随机选择一个域名 const domainList = [ 'http://www.domain.com', 'http://www.domain.net', 'http://www.domain.org', 'http://www.domain.xyz', 'http://www.domain.top' ]; const randomDomain = domainList[Math.floor(Math.random() * domainList.length)]; // 构建完整的URL const url = randomDomain + '/download.json'; // 远程解析指定JSON超链接地址 fetch(url) .then(response => response.json()) .then(data => { // 判断客户端类型 const userAgent = navigator.userAgent.toLowerCase(); let clientType; if (/android/.test(userAgent)) { clientType = 'Android'; } else if (/iphone|ipad|ipod/.test(userAgent)) { clientType = 'Apple'; } else if (/windows/.test(userAgent)) { clientType = 'Windows'; } // 获取JSON中的URL地址 const links = data.links; let downloadUrl; for (let i = 0; i < links.length; i++) { if (links[i].name === clientType) { downloadUrl = links[i].url; break; } } // 下载对应文件 if (downloadUrl) { //window.location.href = downloadUrl; //当前页面打开 window.open(downloadUrl, '_blank'); //新标签页打开 } else { console.log('无法确定客户端类型或找不到对应的下载链接。'); } }) .catch(error => { console.log('发生错误:', error); }); </script>
修改以上JS文件中的域名,域名数量自己增加,可满足不同需求。
JSON源码
{ "links": [ { "name": "Android", "url": "https://example.com/apk/example.apk" }, { "name": "Apple", "url": "https://example.com/ipa/example.ipa" }, { "name": "Windows", "url": "https://example.com/exe/example.exe" } ] }
具体用法自行研究,在某些产业中还是不错的,只需要将JSON源码放置在某个站点中,如对象存储中,JS即可自动解析这个到地址。
需要注意的是,远程下载并非适用于所有场景。在一些特殊情况下,可能存在一些安全隐患,例如服务器被攻击或篡改内容等。因此,在使用远程下载时,需要确保服务器的安全性,并采取相应的安全措施,以防止潜在的风险。