我正在开发一种用于检查网页中链接完整性的工具。
我注意到,如果有人在浏览器中访问给定的URL,那么各种Instagram URL将返回HTTP 500响应,会得到HTTP 200响应并伴有预期的资源。
这是在请求常规Instagram URL时,就像浏览器用户那样,而不是在使用REST API时。
使用cURL的典型请求/响应:
curl -v http://instagram.com/p/YKTkxHBA-P/
* About to connect() to instagram.com port 80 (#0)
* Trying 54.225.159.246... connected
> GET /p/YKTkxHBA-P/ HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: instagram.com
> Accept: */*
>
< HTTP/1.1 500 Server Error
< Cache-Control: no-cache
< Content-Type: text/html
< Date: Tue, 15 Oct 2013 08:31:09 GMT
< Server: nginx
< Content-Length: 87
< Connection: keep-alive
<
<html><body><h1>500 Server Error</h1>
An internal server error occured.
</body></html>
* Connection #0 to host instagram.com left intact
* Closing connection #0
在这种情况下,我做了一段时间获得HTTP 200响应,但现在我一直在获得HTTP 500响应。
这一切都是针对特定主机的;这些URL,即使使用cURL发送请求,也会从其他计算机返回HTTP 200响应。
由于这是特定于发送请求的主机,我怀疑是通过IP进行速率限制或请求过滤的形式,但是我找不到有效的文档。
由于某个IP被拒绝访问,Instagram会否正式返回上述HTTP 500响应?
答案 0 :(得分:0)
这是IP速率限制。如果你想跳过你联系Instagram的部分并等待他们在那里工作以解决问题的猴子工作人员,只需为你的服务器分配1000个IP并随机循环它们以满足你的要求。你不会再看到500了。
干杯。
答案 1 :(得分:0)
我昨天收到了Instagram支持的邮件。
...
嗨,
我们对服务器配置进行了一些更改,请您检查一下是否仍然看到500错误?
谢谢,
...
..我100%肯定那些500人不是来自IG的IP费率限制,因为他们之前也没有返回。
我一直在检查日志文件,发现了一对502(坏网关)和“主机不可访问”,但在 2014-04-14 18:28:56(太平洋标准时间)之后不再有500个本身/强>
看起来他们在将近一个月后终于将它整理出来了...... ^ _ ^
答案 2 :(得分:0)
我遇到了完全相同的问题 - 遗憾的是没有办法绕过它。这是因为有两个请求。起初我认为这是我的IP或可能是我的UDID,直到我从我自己的手机和家庭IP登录我的应用程序,但使用不同的Instagram ID,它最终再次按预期工作。最终,随着时间的推移,我可以再次使用自己的ID,但请求有限。我不确定算法是如何工作的,但是我可以再次使用的请求越多,就越多。
此外,这是在实际应用中的实际iPhone上实时实现 - 而不是在iOS SIM或Instagram API控制台上,仅供参考。
要点:请求限制基于用户(每个用户每小时5000个请求)...没有IP速率限制。
希望这会有所帮助:)
克莱顿
答案 3 :(得分:0)
我有同样的问题。正如我所说,你必须获得对API的额外访问权限,我的意思是你的应用程序中的沙箱模式不允许你使用所有的API。要获得额外的预留,请转到客户首选项,选项卡“预先提交”。
答案 4 :(得分:-1)
它似乎与curl版本有关,我也遇到了v 7.22.0在4台不同机器10个不同ip上的同样问题,而v7.30.0和v7.19.7就像魅力一样。 目前正在进一步调查。
答案 5 :(得分:-2)
我几乎100%肯定会发生这种情况,因为域名/ IP地址已被Instagram API阻止。
原因:
奇怪的是你得到了一个&#34; 500内部错误&#34;返回而不是消息&#34;您的IP被阻止&#34;。