2011-08-03 1 views
0

약 4300 개의 URL 목록이 있습니다. 모두 매우 유사합니다. 그들 중 일부는 제거되었고 어떤 것들이 더 이상 유효하지 않은지 식별하고 싶습니다. 나는 현재 유효한 콘텐츠 (http 200)를 반환하거나 존재하지 않는 (http 404) 경우에만 실제 세계에서 사용되는 경우에만 (현재 시점에서) 콘텐츠에 관심이 없습니다. 기본적으로 URL 핑 서비스를 찾고 있습니다. 이것은 일회성 훈련입니다.큰 목록의 URL을 반복하여 어떻게 유효한지 (404가 아닌) 확인할 수 있습니까?

이 목적을위한 특정 도구가 없다면 Java가 매우 편하며 내 솔루션을 코딩 할 수 있습니다. 그러나 나는 바퀴를 재발 명하고 싶지 않고 DoS (서비스 거부) 공격과 같이 보이지 않으면이 작업을 수행하는 것이 최선인지 모르겠습니다. 순서대로 각 URL을 순서대로 지정할 수 있습니까 (동시 요청이 없으므로)? 나는 대상 서버에 과도한 부담을주지 않는 것에 대해 매우 잘 알고 있습니다.

아이디어 나 제안에 감사드립니다.

답변

1

wget 편리하게 200 0 반환하고 404에 0이 아닌 리턴 값은 따라서 다음이 작동합니다 :

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

또는 일부 가까운 변형.

고려 :

  • 는 말, 자고, listOfUrls.txt을 무작위 화 요청
  • 사이에 1 초 사용, 시간이 지남에 따라 동일한 서버에 여러 요청을 확산, sort -R
0

이 문제는 100 % 해결 방법이 없습니다. 예를 들어, PHP 쪽에서 응답 상태가 결정되면 대개 보내는 요청 헤더의 상태와 함께 내용을 제공합니다.

"범위"요청 헤더를 사용하여 콘텐츠의 첫 번째 바이트를 요청할 수도 있지만 여전히 서버 백엔드에서 지원해야합니다.

관련 문제