下面是一个返回instagram用户数据的JSON的示例url:https://www.instagram.com/therock/?__a=1
它返回如下JSON:
{
"logging_page_id":"profilePage_232192182",
"show_suggested_profiles":true,
"show_follow_dialog":false,
"graphql":{
"user":{
"biography":"founder",
"blocked_by_viewer":false,
"business_email":null,
"restricted_by_viewer":false,
"country_block":false,
"external_url":"https://projectrock.online/7ad",
"external_url_linkshimmed":"https://l.instagram.com/?u=https%3A%2F%2Fprojectrock.online%2F7ad&e=ATMKh6M0eOgq-_jVoR3-xJ0Q2wwVSenYemMoYM0A0nWrW9Y5P7mDXX1dkk2dDLidhEuV1Wees7Z3teLJqp7vB2k&s=1",
"edge_followed_by":{
"count":199139001
},
"followed_by_viewer":false,
"edge_follow":{
"count":406
},
"follows_viewer":false,
"full_name":"therock",
"has_ar_effects":false
我正在做一个ASP。NET核心API,并有一个接收instagram句柄并解析JSON的端点。它在本地运行良好,但当我在Azure-deployed API上达到相同的端点时,我会得到登录页面:
<!DOCTYPE html>
<html lang="en" class="no-js not-logged-in client-root">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>
Login • Instagram
</title>
<meta name="robots" content="noimageindex, noarchive">
<meta name="apple-mobile-web-app-status-bar-style" content="default">
<meta name="mobile-web-app-capable" content="yes">
<meta name="theme-color" content="#ffffff">
<meta id="viewport" name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, viewport-fit=cover">
<link rel="manifest" href="/data/manifest.json">
我尝试使用第三方浏览器作为服务(PhantomJsCloud(,但返回相同的登录页面。我以为这是CORS策略,但修复它没有奏效,还设置了返回的cookie,但无济于事。我在这里真的很失落,如果有人能指出为什么会发生这种事,我会非常感激。非常感谢。
instagram可能不希望你这样获取它,并且有一些机制可以识别你的请求是通过编程完成的。我认为当你在浏览器中调用它时,它正在工作。你可以尝试柏树或木偶师仍然让它工作,或者可能使用带有代币等的官方api。
编辑:可以我玩了一点,可以以某种方式让它发挥作用,但不确定这有多可靠:
- 首先,我从以下内容开始:https://codelike.pro/fetch-instagram-posts-from-profile-without-__a-parameter/
- 在具有解析的JSON对象之后,我搜索
entry_data.ProfilePage[0].graphql.user.edge_owner_to_timeline_media.page_info.end_cursor
->对以下请求使用了end_cursor: - https://www.instagram.com/graphql/query/?query_id=17888483320059182&id=928659671&第一个=100&after=需要使用end_cursor作为&查询参数后。
query_id
是instagram帐户中的Media,id
是instagrm帐户的id(您可以从parsedObject中获取instagram账户的id
(
query_id
是来自instagram的某种硬编码的东西,其他id可以在这里找到:https://gist.github.com/Carlos-Henreis/2df27431fa5d7a84b7a5e57ee1bf6ae2#file-query_id.csv
编辑2:意识到这只会在你的ip也没有被instagram检测到或你发送登录会话的cookie时起作用,否则你不会得到ProfilePage,而是得到LoginAndSignupPage,不幸的是
有关更多信息,请参阅此处:https://stackoverflow.com/a/57722553/5195852