Instagram /?__a=1访问被拒绝。

3

我的问题与新版Instagram有关,使用新版Instagram后我无法通过https://www.instagram.com/nasa/?__a=1访问公共页面的JSON格式。我正在使用:

`AsyncHttpClient client;
 client.get("https://www.instagram.com/nasa/?__a=1", 
 newTextHttpResponseHandler()`

我正在使用Android Studio,有什么建议可以帮助我解决问题吗?我遇到了“Access to www.instagram.com was denied”错误。

"?__a=1" 看起来运行良好。 - Doug S
2个回答

3
这是一个未记录的端点,必须停止使用,因为它不应该对公众开放。强烈建议不要在您的应用程序中使用这些未记录的端点,而是使用Instagram API。
更新于4月13日:
您可以使用此php解决方案获取USER_ID,我尚未测试过,但您可以尝试一下:
$name = "{username}";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://www.instagram.com/$name/");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$result = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if($http=="200") {
  $doc = new DOMDocument();
  $doc->loadHTML($result);
  $xpath = new DOMXPath($doc);
  $js = $xpath->query('//body/script[@type="text/javascript"]')->item(0)->nodeValue;
  $start = strpos($js, '{');
  $end = strrpos($js, ';');
  $json = substr($js, $start, $end - $start);
  $data = json_decode($json, true);
  $user_id = $data["entry_data"]["ProfilePage"][0]["graphql"]["user"]["id"];
} 

原始帖子:https://dev59.com/d6rka4cB1Zd3GeqPXxDL#49479992

这篇文章提供了一些有关IT技术的建议。首先,要确保你的代码易于阅读和理解,这样其他人在查看时就可以更容易地理解它。其次,要确保你的代码是可维护的,这意味着当你需要对其进行更改时,它应该很容易被修改。最后,要确保你的代码是高效的,这意味着它应该在运行时使用尽可能少的资源。


1
好的,谢谢。我再仔细看了一下,那我怎么获取ID呢?我以前是在Chrome的window_shared data中获取ID,但现在不行了。我有一个客户端ID,但那不是它。 - javip
https://www.instagram.com/developer是与人互动的更好地方,因为您可以获取有关API端点和其他基础知识的所有信息。 - Woods

0
我也遇到了这个问题 - 这是一个简单的JavaScript实现,包括一个ajax请求和解析JSON。我需要为自己的网站找到一个解决方案,而不想去处理他们的开发者实现和身份验证,因为只涉及一个个人资料。
我开始寻找替代方法来获取数据,首先请求整个主页,将HTML解析成jQuery,并通过迭代的方式进行处理。在这个过程中,我发现页面上有一个与?__a=1请求几乎相同的脚本: <script type="text/javascript">window._sharedData = ... 我只需去掉脚本中的window._sharedData =部分,以及末尾的分号,然后像处理?__a=1请求一样解析它,并以相同的方式使用数据 - 实际的帖子数据稍微嵌套更深,但都在那里。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接