我的问题是关于新的Instagram更新,新的Instagram更新我无法再访问公共页面JSON格式 https://www.instagram.com/nasa/?__a=1。我正在使用
`AsyncHttpClient client;
client.get("https://www.instagram.com/nasa/?__a=1",
newTextHttpResponseHandler()`
我正在使用Android工作室,有关如何继续的任何建议,我得到了 访问www.instagram.com被拒绝
答案 0 :(得分: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"];
}
答案 1 :(得分:0)
我也遇到了这个问题 - 这是一个简单的javascript实现,带有ajax请求,然后解析JSON。我需要一个适用于我自己网站的解决方案,而不想进入并处理他们的开发人员实施和身份验证。
我去寻找替代方法来检索数据,开始请求整个主页面,将html解析为jquery并以这种方式迭代它。在这样做的过程中,我发现页面上的脚本与?__a=1
请求的脚本几乎相同:
<script type="text/javascript">window._sharedData = ...
我简单地剥离了脚本的window._sharedData =
部分以及尾部分号,就像使用?__a=1
请求一样解析,并以相同的方式使用数据 - 实际帖子数据稍微嵌套得更深,但它就在那里。