Мы используем curl HEAD-запрос в приложении PHP для проверки достоверности общих ссылок. Мы проверяем код состояния только для того, чтобы убедиться, что ссылка, введенная пользователем, действительна. Ссылки на все сайты преуспели, кроме LinkedIn.
Пока он работает локально (Mac), когда мы пытаемся выполнить запрос с любого из наших серверов Ubuntu, LinkedIn возвращает код состояния 999. Не API-запрос, просто простой завиток, как мы делаем для каждой другой ссылки. Мы пробовали на нескольких разных машинах и пытались изменить пользовательский агент, но не играли в кости. Как изменить наш завиток, чтобы рабочие ссылки возвращали 200?
Пример запроса HEAD:
curl -I --url https://www.linkedin.com/company/linkedin
Пример ответа на машину Ubuntu:
HTTP/1.1 999 Request denied
Date: Tue, 18 Nov 2014 23:20:48 GMT
Server: ATS
X-Li-Pop: prod-lva1
Content-Length: 956
Content-Type: text/html
Откликнуться на @alexandru-guzinschi немного лучше. Мы пробовали маскировать User Agents. Подводя итог нашим исследованиям:
- Mac машина + Mac UA = > работает
- Mac машина + Windows UA = > работает
- Удаленный компьютер Ubuntu + (без изменения UA) = > не работает
- Удаленный компьютер Ubuntu + Mac UA = > не работает
- Удаленный компьютер Ubuntu + Windows UA = > не работает
- Локальная виртуальная машина Ubuntu (на Mac) + (без изменения UA) = > не работает
- Локальная виртуальная машина Ubuntu (на Mac) + Windows UA = > работает
- Локальная виртуальная машина Ubuntu (на Mac) + Mac UA = > работает
Итак, теперь я думаю, что они блокируют любые запросы на завиток, которые не предоставляют альтернативный UA, а также блокируют хостинг-провайдеров?
Есть ли другой способ проверить, действительно ли ссылка на linkedin является действительной или приведет к их 404 странице, с компьютера Ubuntu с использованием PHP?