Как я могу просмотреть большой список URL-адресов и определить, являются ли они действительными (ответ не 404)? - PullRequest
0 голосов
/ 03 августа 2011

У меня есть список примерно 4300 URL, все очень похоже.Вполне вероятно, что некоторые из них были удалены, и я хочу определить, какие из них больше не действительны.Я не заинтересован в контенте (на данный момент), только если он используется в реальном мире, если он в настоящее время возвращает действительный контент (http 200) или не существует (http 404).По сути, я ищу службу проверки связи URL.Это одноразовое упражнение.

Если не существует каких-либо инструментов, специально предназначенных для этой цели, я очень хорошо разбираюсь в Java и могу написать собственное решение.Тем не менее, я не хочу изобретать велосипед, и я не уверен, как лучше это сделать, чтобы он не выглядел как атака отказа в обслуживании.Будет ли приемлемо попадать по каждому URL по очереди, один за другим (чтобы не было одновременных запросов)?Я осознаю, что не буду чрезмерно напрягать целевой сервер.

Большое спасибо за любые идеи или предложения.

Ответы [ 2 ]

1 голос
/ 03 августа 2011

wget удобно возвращает 0 для 200 и ненулевое возвращаемое значение для 404, поэтому будет работать следующее:

for i in $(cat listOfUrls.txt); do
    wget --quiet $i && echo $i >> goodUrls.txt || echo $i >> badUrls.txt;
done

или какой-то близкий вариант.

Рассмотрим:

  • спит, скажем, 1 с между запросами
  • рандомизирует listOfUrls.txt, используя, скажем, sort -R, чтобы распределить несколько запросов к одному и тому же серверу во времени
0 голосов
/ 03 августа 2011

Нет 100% решения этой проблемы.Например, если статус ответа определяется на стороне PHP, он обычно дает вам содержимое вместе со статусом независимо от того, какие заголовки запроса вы отправляете.

Тем не менее, вы можете поиграть с заголовками запроса «range», чтобы запросить первыйбайтов содержимого, однако это должно поддерживаться серверной частью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...