隐式转发-骚套路建站方案
在帮别人弄域名的时候,看到了隐式 URL
,于是就研究了一下相关内容。
隐性转发:用的是 iframe 框架技术、非重定向技术,效果为浏览器地址栏输入 http://www.dnspod.cn 回车,打开网站内容是目标地址 http://cloud.tencent.com/ 的网站内容,但地址栏显示当前地址 http://www.dnspod.cn 。
也就是说,所谓「隐式 URL」,只不过是域名解析的服务商用他们的服务器去响应了访客的请求,并回应了一段使用了 iframe 的 html 。这段代码打开了一个大小为 100% 的窗口去请求了被“隐式代理”的站点。
然后我突发奇想,这样的话好像可以绕过国内建站需要备案的问题,将web服务直接部署在非常规端口,然后使用隐式转发到IP+端口,
或许还能减少一些敏感网址被墙的几率。
这里帖一下代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>示例站点</title>
<style>
iframe {
width: 100%;
height: 100vh;
border: none;
}
body, html {
margin: 0;
padding: 0;
overflow: hidden;
}
</style>
</head>
<body>
<iframe id="mainFrame" title="Embedded Content"></iframe>
<script>
function encodeURL(url) {
return btoa(url).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}
function decodeURL(encoded) {
encoded = encoded.replace(/-/g, '+').replace(/_/g, '/');
while (encoded.length % 4) encoded += '=';
return atob(encoded);
}
function initializeFrame() {
const iframe = document.getElementById('mainFrame');
// 使用base64编码的域名
const encodedDomain = 'base64编码后的字符';
const targetUrl = decodeURL(encodedDomain);
iframe.src = targetUrl;
iframe.addEventListener('load', function() {
try {
const iframeDoc = iframe.contentWindow.document;
function modifyLinks(doc) {
const links = doc.getElementsByTagName('a');
Array.from(links).forEach(link => {
link.addEventListener('click', function(e) {
e.preventDefault();
let newUrl = this.href;
if (!newUrl.includes(decodeURL(encodedDomain))) {
if (newUrl.startsWith('/')) {
newUrl = decodeURL(encodedDomain) + newUrl;
}
}
iframe.src = newUrl;
const encodedNewUrl = encodeURL(newUrl);
window.history.pushState({}, '', '?url=' + encodedNewUrl);
});
});
}
const observer = new MutationObserver((mutations) => {
mutations.forEach(mutation => {
if (mutation.type === 'childList') {
modifyLinks(iframeDoc);
}
});
});
observer.observe(iframeDoc.body, {
childList: true,
subtree: true
});
modifyLinks(iframeDoc);
} catch (e) {
console.log('无法访问内容,可能是因为同源策略限制');
}
});
}
window.addEventListener('load', initializeFrame);
window.addEventListener('popstate', function(e) {
const urlParams = new URLSearchParams(window.location.search);
const encodedUrl = urlParams.get('url');
if (encodedUrl) {
document.getElementById('mainFrame').src = decodeURL(encodedUrl);
}
});
</script>
</body>
</html>
❤️转载请注明出处❤️