Instagram?__ a = 1查询:为什么我得到登录页面而不是JSON?

问题描述

这里是一个示例url,可返回instagram用户数据的JSON: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 Core API,并且有一个采用instagram句柄并解析JSON的终结点。它在本地可以正常工作,但是当我在Azure部署的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 不希望您像这样获取它,并且有一些机制来识别您的请求是以编程方式完成的。我假设当你在浏览器中调用它时它正在工作。您可以尝试使用 cypress 或 puppeteer 使其仍然工作,或者可能使用带有令牌等的官方 api。

编辑: 好吧..我玩了一会儿,可以让它以某种方式工作,但不确定这有多可靠:

query_id 是来自 instagram 的某种硬编码的东西,其他 ID 可以在这里找到:https://gist.github.com/Carlos-Henreis/2df27431fa5d7a84b7a5e57ee1bf6ae2#file-query_id-csv

编辑2: 意识到这仅在 instagram 未检测到您的 ip 或您发送登录会话的 cookie 时才有效,否则您将无法获得 ProfilePage 而是不幸的是 LoginAndSignupPage

有关详细信息,请参阅此处:https://stackoverflow.com/a/57722553/5195852

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...