0

我是网络开发的新手,正在尝试构建一个小型网页,该网页将尝试检测是否有人当前在该浏览器上登录了 Instagram。如果我在 Chrome 的控制台中逐个命令运行我的代码并手动复制粘贴 HTML,它就可以完美运行。但是当我尝试单独运行我的代码时,它似乎就像在隐身模式下一样运行。

如何解决这个问题?如果用户需要授予我的页面访问 Instagram 的权限,我该怎么做?

这是我的代码的 JS 部分:

const USERNAME_REGEX = /"viewer"\:{.*"full_name"\:"([^"]+)"/gm;
  const FULLNAME = 'full_name\":\"';

  document.addEventListener('DOMContentLoaded', () => {
    const request = new XMLHttpRequest();
    request.open('GET', 'https://instagram.com');
    request.send();
    request.onload = () => {
      const data = request.responseText;
      var u = data.match(USERNAME_REGEX);
      if (u != null) {
        u = u[0];
        u = u.substring(u.indexOf(FULLNAME) + FULLNAME.length).slice(0, -1);
        document.querySelector('#info').innerHTML = u;
      }
      else {
        document.querySelector('#info').innerHTML = 'no one is logged in!';
      }
    }
  });

谢谢你:)祝你有美好的一天!

4

1 回答 1

3

我是网络开发的新手,正在尝试构建一个小型网页,该网页将尝试检测是否有人当前在该浏览器上登录了 Instagram。

这听起来像是一场安全和隐私的噩梦,幸运的是,这对每个人(包括你在内)来说都是不可能的。(或者至少,它不应该是……)

如果我在 Chrome 的控制台中逐个命令运行我的代码并手动复制粘贴 HTML,它就可以完美运行。

完全不同的语境。事实上,您会发现,如果您在不在 Instagram.com 上的控制台中运行此代码,它将无法正常工作。

同源策略将阻止您访问另一个域。您正在尝试的是一种经典的跨域攻击,它不会起作用。CORS 可以解决这个问题,但 Instagram 肯定不会让您访问。

如何解决这个问题?

你没有。

于 2020-05-20T03:06:01.850 回答