我正在开发一种用于检查网页中链接完整性的工具。
我注意到各种 Instagram URL 将返回 HTTP 500 响应,如果一个人要在浏览器中访问给定的 URL,则会收到伴随预期资源的 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 响应吗?