隐式转发-骚套路建站方案

在帮别人弄域名的时候,看到了隐式 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>
❤️转载请注明出处❤️