无法获得完整尺寸的 Instagram 个人资料图片
can't get instagram profile picture full size
几天前,通过从图片 URL 中删除 vp/ 并将分辨率从 s150x150[= 更改为 s150x150 到 s720x720 for exp,它工作正常但现在我仍然得到“invalid url signature”,所以我认为instagram 在他们的 url 中添加了签名,我通常会在图片 URL 中删除 vp/ 到 /t51 的部分...像这样
https://scontent-mxp1-1.cdninstagram.com/vp/xxxxxxxx/t51....jpg
但它不起作用!
我不知道 instagram 怎么了,所以有人可以帮我找到解决这个问题的方法吗?或者另一种方法。谢谢
以下是截至 2020 年 5 月在没有 https://www.instadp.com/ 这样的外部网站的情况下的操作方法。程序也可以使用这种API方法。
首先,确保您已在要执行此操作的浏览器上登录 Instagram 帐户。
在此 URL:
中输入用户名代替“usernamehere”
https://www.instagram.com/usernamehere/?__a=1
访问URL.
复制开头“profilePage_”后面的数字。这是用户 ID。 (它也位于 JSON 中的 graphql.user.id
下。)
粘贴此 URL 中的数字以代替“numberhere”
https://i.instagram.com/api/v1/users/numberhere/info/
访问URL。您很可能会看到 {"message": "useragent mismatch", "status": "fail"}
。如果这样做,请执行以下步骤:
如果你在Chrome,按F12或Ctrl+Shift+I或Ctrl+Shift+J打开DevTools。
在底部绘图中(您会看到“控制台”、“新增功能”、“网络状况”),单击“网络状况”。
在“用户代理”下,取消选中“Select 自动”。
Select“自定义...”,然后将 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)
您可以找到更多 here。
不要关闭 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 帐户。
几天前,通过从图片 URL 中删除 vp/ 并将分辨率从 s150x150[= 更改为 s150x150 到 s720x720 for exp,它工作正常但现在我仍然得到“invalid url signature”,所以我认为instagram 在他们的 url 中添加了签名,我通常会在图片 URL 中删除 vp/ 到 /t51 的部分...像这样
https://scontent-mxp1-1.cdninstagram.com/vp/xxxxxxxx/t51....jpg
但它不起作用!
我不知道 instagram 怎么了,所以有人可以帮我找到解决这个问题的方法吗?或者另一种方法。谢谢
以下是截至 2020 年 5 月在没有 https://www.instadp.com/ 这样的外部网站的情况下的操作方法。程序也可以使用这种API方法。
首先,确保您已在要执行此操作的浏览器上登录 Instagram 帐户。
在此 URL:
中输入用户名代替“usernamehere”
https://www.instagram.com/usernamehere/?__a=1
访问URL.
复制开头“profilePage_”后面的数字。这是用户 ID。 (它也位于 JSON 中的
graphql.user.id
下。)粘贴此 URL 中的数字以代替“numberhere”
https://i.instagram.com/api/v1/users/numberhere/info/
访问URL。您很可能会看到
{"message": "useragent mismatch", "status": "fail"}
。如果这样做,请执行以下步骤:如果你在Chrome,按F12或Ctrl+Shift+I或Ctrl+Shift+J打开DevTools。
在底部绘图中(您会看到“控制台”、“新增功能”、“网络状况”),单击“网络状况”。
在“用户代理”下,取消选中“Select 自动”。
Select“自定义...”,然后将 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)
您可以找到更多 here。
不要关闭 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 帐户。