Я разрабатываю инструмент для проверки целостности ссылок на веб-странице.
Я заметил, что различные URL-адреса Instagram будут возвращать ответ HTTP 500 в тех случаях, когда при посещении данного URL-адреса в браузере будет получен ответ HTTP 200, сопровождаемый ожидаемым ресурсом.
Это происходит при запросе обычных URL-адресов Instagram, как если бы вы были пользователем браузера, а не при использовании 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, однако я не могу найти документацию по этому поводу.
Будет ли Instagram официально возвращать ответ HTTP 500, как указано выше, из-за отказа в доступе к данному IP-адресу?