5

我有一个问题,前两天突然出现。我有一个 prestashop 模块,允许我从 Instagram 页面检索图像。

它工作得很好,但突然之间,什么都没有。我有一个错误是“ProfilePage:未定义的索引”我做了很多var_dump,我注意到json不再有这个索引,它变成了LoginAndSignupPage。

更奇怪的是,使用相同的模块,相同的代码,它可以在预生产中工作,在本地也可以,但不适用于生产。起初,我以为网站的主机做了一些改变,但不,他们没有……

https://imgur.com/3utc6bB

你有什么主意吗?

谢谢您的帮助

4

3 回答 3

3

问题是 Instagram 在过去一周左右限制了他们未登录(访客)的访问(基于 IP 地址)。

在对其服务器进行大量查询后,他们将开始显示“请登录”页面()。

解决此问题的唯一方法是让您在 Instagram 上希望使用此过程的每个用户创建一个 API 密钥(这是不现实的,因为主要是我们不知道他们)。否则,我们在向 Instagram 发出请求时需要使用代理,这样它就不会看到您从同一个 IP 地址多次访问他们的服务器。

在尚未访问 Instagram 服务器的全新 IP 地址上使用代码可以正常工作。但是,经过多次查询(一旦 IP 被列入黑名单),我得到的是相同的登录页面,而不是 instagram 帐户。

根据 Instagram 的 API 文档,他们希望您为每个希望提取照片的用户拥有一个 API 密钥(将 API 密钥保持在沙盒模式)。再一次,这对我来说似乎是不现实的。我们“可以”在 Instagram 上提交我们的应用程序以供审核(理论上“可能”让您从同一个 API 密钥为其他用户提取照片),但我非常怀疑他们是否会批准从其服务器中提取图像和元数据的应用程序。

于 2019-08-30T07:42:16.710 回答
0

使用代理,最好的住宅代理,似乎 instagram 开始积极禁止 IP,并且他们很难限制它的速率。

任何被禁止的 ip 都被路由到 LoginAndSignupPage,因此您无法提取信息。由于它基于 IP,因此可能不会发生在每个人身上,除非他们的 IP 也被阻止。

于 2019-08-30T06:43:46.277 回答
-2

这个对我有用:

var name = "you_profile";

$.get("https://www.instagram.com/" + name + "/?__a=1", function(json) {
    if (json) {
        edges = json.graphql.user.edge_owner_to_timeline_media.edges;
        $.each(edges, function(n, edge) {
            var active =  n == 0 ? 'active' : '';
            $('#instagram').append(
                '<div class="carousel-item col-md-3 ' + active + ' ">' + '<a href="https://instagr.am/p/' + edge.node.shortcode +'"><img src="' + edge.node.thumbnail_src +'" alt=""></a>' + '</div>'
            );
        });
    }
});
于 2019-08-25T10:58:51.363 回答