无法获得完整尺寸的Instagram个人资料照片

时间:2018-02-07 11:41:52

标签: java android image instagram profile

几天前,我可以通过从图片网址中移除vp /并在 s150x150 更改为 s720x720 的分辨率,在我的Android应用中获取凹版资料图片exp,它工作正常,但现在我仍然得到" 无效的网址签名" ,所以我认为Instagram已经在他们的网址中添加了签名,我通常会将图片中的部分从vp /删除到/ t51 ...就像这样

https://scontent-mxp1-1.cdninstagram.com/ VP / XXXXXXXX / T51 .... JPG
但它不起作用!!

我不知道Instagram发生了什么,所以有人可以帮我找到解决这个问题的方法吗?或者另一种方法。感谢

1 个答案:

答案 0 :(得分:3)

以下是截至2020年5月在没有https://www.instadp.com/之类的外部网站的情况下的操作方法。程序也可以使用此API方法。

  • 首先,请确保您已登录浏览器上要执行此操作的Instagram帐户。

  • 在此URL中输入用户名代替“此处的用户名”:

https://www.instagram.com/username此处/?__ a = 1

  • 访问URL。

  • 首先在“ profilePage_”之后复制数字。这是用户ID。 (它也位于JSONgraphql.user.id下。)

  • 在此URL中粘贴数字,以代替“此处的数字”

https://i.instagram.com/api/v1/users/numberhere/info/

  • 访问URL。您很可能会看到{"message": "useragent mismatch", "status": "fail"}。如果这样做,请执行以下步骤:

  • 如果您使用的是Chrome,请按F12或Ctrl + Shift + I或Ctrl + Shift + J打开DevTools。

  • 在底图中(您会看到“控制台”,“新功能”,“网络条件”),单击“网络条件”。

  • 在“用户代理”下,取消选中“自动选择”。

  • 选择“自定义...”,然后将Instagram移动用户代理粘贴到框中,如下所示:

Mozilla / 5.0(Linux; Android 9; GM1903 Build / PKQ1.190110.001; wv)AppleWebKit / 537.36(KHTML,like Gecko)Version / 4.0 Chrome / 75.0.3770.143 Mobile Safari / 537.36 Instagram 103.1.0.15.119 Android( 28/9; 420dpi; 1080x2260; OnePlus; GM1903; OnePlus7; qcom; sv_SE; 164094539)

 You can find more [here][3].
  • 请勿关闭DevTools。刷新页面。

    注意:有browser extensions可以做到这一点。

    在其他浏览器上检查this tutorial的操作。

  • 按Ctrl + F,然后搜索“ hd_profile_pic_url_info”。

  • 在“ url”和“ width”之间复制URL。这是很长的,所以请仔细看。 (它位于JSON中的user.hd_profile_pic_url_info.url下。)

注意:像this one这样的扩展名将使这一部分变得更加容易。

  • 将URL粘贴到地址栏中,但不要按Enter。

  • 在URL中查找“ \ u0026”的所有实例。 URL的后半部分应大约有3个。这些是“&”的JavaScript代码,但在地址栏URL中不起作用(如果按Enter键,您将看到Bad URL timestamp)。将它们全部替换为“&”。

  • 访问URL。

现在,您拥有了全分辨率的个人资料图片。 :)

更新:最后是编写一个函数来获取此URL。您可以在浏览器中使用它,而不必执行所有这些步骤。

async function fetchIGProfilePic(input) {
    if (!/^https?:\/\/i.instagram.com\//.test(window.location.href)) {
        if (window.confirm('fetchIGProfilePic:\n\nWe need to navigate to i.instagram.com for the request to work. (We need to make the request from the same domain as the profile pic API; CORS policy.) Please run the script after doing this.\n\nNavigate to i.instagram.com? (Ignore the 404 error.)')) {
            window.location.href = 'https://i.instagram.com/api/v1/';
            return;
        } else {
            return 'fetchIGProfilePic: Cancelled.';
        }
    }
    let response;
    let output;
    try {
        response = await fetch('https://www.instagram.com/' + input + '/?__a=1');
        if (!response.ok) {
            console.log('Failed 1st step, to fetch userID, with bad response status:' + response.status);
            return;
        }
    } catch(error) {
        console.log('Failed 1st step, to fetch userID, with ok response status: ' + error);
        return;
    }
    let userData = await response.json();
    try {
        response = await fetch('https://i.instagram.com/api/v1/users/' + userData.graphql.user.id + '/info/', {
            // The following doesn't seem to be necessary in a console request, but I kept it in in case you have issues at this stage.
            headers: {'user-agent': 'Mozilla/5.0 (Linux; Android 9; GM1903 Build/PKQ1.190110.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/75.0.3770.143 Mobile Safari/537.36 Instagram 103.1.0.15.119 Android (28/9; 420dpi; 1080x2260; OnePlus; GM1903; OnePlus7; qcom; sv_SE; 164094539)'
            }
        });
        if (!response.ok) {
            console.log('Failed 2nd step, to fetch profile pic URL, with bad response status: ' + response.status);
            window.alert('fetchIGProfilePic:\n\nYou might not be logged in, which is necesary for the request to work. Please log into an Instagram account, then run this script again.');
            return;
        }
    } catch(error) {
        console.log('Failed 2nd step, to fetch profile pic URL, with ok response status: ' + error);
        return;
    }
    let profileData = await response.json();
    console.log('Full-size profile pic URL of ' + input + ':\n' + profileData.user.hd_profile_pic_url_info.url);
}

fetchIGProfilePic('instagram'); // Enter the username here.

在浏览器中,按F12键打开控制台,然后粘贴脚本。将用户名放在方括号中,然后按Enter,它将在控制台中检索URL。运行脚本时,请确保您在https://i.instagram.com/api/v1/上并登录了Instagram帐户。