我正在开发一个工具,用于检查网页链接的完整性。
我注意到各种Instagram URLs将返回 HTTP 500 回复, 如果在浏览器中访问给定的 URL, 将会得到 HTTP 200 回复, 并附带预期的资源 。
这是在要求正常的Instagram URL时作为浏览器用户,而不是在使用 REST API 时要求使用普通的Instagram URL。
使用 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
有一段时间我收到了200个HTTP对此类案件的答复,但现在不断收到500个HTTP的答复。
这一切都是特定主机所特有的;这些 URL, 即使使用 CURL 发送请求, 也会返回其他机器的 HTTP 200 回复 。
由于东道方发送请求是特有原因,我怀疑IP正在采取某种费率限制或要求过滤的形式,但是我找不到这方面的任何文件。
Instagram是否会正式退还上述500 HTTP的回复,