Instagram web api 获取::ERR_BLOCKED_BY_RESPONSE

Vyp*_*tek 11 instagram

我创建了一个脚本,可以在某个个人资料的图库中提取照片……使用 instagram-web-api

不幸的是现在它不再有效,instagram 不返回媒体图像这是错误:ERR_BLOCKED_BY_RESPONSE

Instagram 最近改变了它的 CORS 政策?我该如何解决?

sup*_*jet 9

最近在https://github.com/restyler/instagram-php-scraper上报告了同样的问题 。

Instagram 现在会设置cross-origin-resource-policy: same-origin它是否不喜欢您的浏览器在加载图像时发送到 cdninstagram 域的“引用者”。

缓解这种情况的一种方法可能是创建一个简单的图像代理,它可以在您的域上工作,将图像从 instagram 服务器下载到您的服务器,然后将其输出到浏览器。

以下是 CloudFlare 图像代理的示例:

https://gist.github.com/restyler/6c51e3ad20d7596e799d76e87cf93236

效率不高,但可以自托管,PHP 实现:

https://github.com/restyler/inwidget-proxified/blob/master/imgproxy.php

在代理上添加额外的缓存层以减少对 instagram cdn 服务器的重复图像请求量可能是个好主意。

当您运行图像代理时,您只需要将所有 instagram 图像源替换为代理版本。


小智 8

为 php; 我将我的 img src 更改为这个,它就像魅力一样!假设 $image 是来自 instagram 页面的 instagram 图片 cdn 链接:

'data:image/jpg;base64,'.base64_encode(file_get_contents($image))
Run Code Online (Sandbox Code Playgroud)


Uğu*_*rım 8

现在 100% 工作。你可以试试这个。

corsDown

  • 利用谷歌翻译漏洞,它可以显示任何图像URL,无论是否经过许可。所有这些过程都是由访问者的IP和计算机来完成的。

  • 这太棒了...向发现此漏洞的人致敬! (2认同)

小智 2

我有同样的问题,当我尝试加载 Instagram 的图片 url(我尝试使用 3 个 IP 地址)时,我在控制台上看到以下内容:

无法加载资源:net::ERR_BLOCKED_BY_RESPONSE

你可以在这里看到,Instagram 图像没有加载(实际上,当我在谷歌上粘贴这个网址时,它可以工作,但 Instagram 会在这些图片上添加时间戳,所以,它可能不适合你)。

这是最近的,三天前,它可以正常工作。

<img src="https://scontent-cdt1-1.cdninstagram.com/v/t51.2885-19/s320x320/176283370_363930668352575_6367243109377325650_n.jpg?tp=1&_nc_ht=scontent-cdt1-1.cdninstagram.com&_nc_ohc=nC7FG1NNChYAX8wSL7_&edm=ABfd0MgBAAAA&ccb=7-4&oh=696d56547f87894c64f26613c9e44369&oe=60AF5A34&_nc_sid=7bff83">
Run Code Online (Sandbox Code Playgroud)