2011-05-15 4 views
7

자바를 사용하여 웹 페이지의 모든 깨진 링크를 찾으려고합니다. 코드는 다음과 같습니다.끊어진 링크 확인

코드 http://nscraps.com/Java/146-program-code-broken-link-checker.htm에서 참조하십시오.

이 코드는 깨진 ​​웹 페이지를 포함하여 모든 웹 페이지에 대해 HTTP 200 상태를 제공합니다.

{널 (null) = [HTTP/1.1 200 OK, 날짜 = [2011년 (일) 5월 15일 그리니치 표준시 18시 51분 29초, 전송 인코딩 =, 유지 [청크 분할] : 예를 들어 http://www.somefakesite.net/는 다음 헤더 필드를 제공합니다 -Alive = [timeout = 4, max = 100], Connection = [Keep-Alive], Content-Type = [text/html], 서버 = [Apache/2.2.15 (Win32) PHP/5.2.12], X -Powered-By = [PHP/5.2.9-1]}

그런 사이트가 없어도 깨진 링크로 분류하는 방법은 무엇입니까?

+0

당신은 어떤 사이트를 테스트하고 있는지 100 % 확실합니까? 해당 메소드 상단에'System.out.println (link); '을 추가하십시오. – Mat

+0

@Mat : 예, print 문을 추가하고 주 – user754740

답변

4

아마도 현재 많은 웹 서버 및 DNS 공급자가 "끊어진"링크를 감지하고 "찾을 수 없음"페이지로 리디렉션하는 것이 문제 일 수 있습니다.

404 코드를 보내는 URL에 대해 테스트하십시오 (브라우저 원래 메시지가 표시됨). (이 코멘트에 맞게 너무 깁니다으로)


편집은 저자 코멘트에 대답 : 나는 당신의 문제에 대한 쉬운 대답을 볼 수 없지만, 실패의 여러 가지 종류가 있습니다 :

  • 리디렉션되는 DNS 오류 (DNS에서 찾을 수없는 URL이며 다른 페이지로 리디렉션 됨)의 경우 모든 리다이렉션 (리디렉션 된 경우)이 동일한 페이지 (ISP/DNS 제공 업체가 제공)로 이동하는 경우 해당 리디렉션을 확인할 수 있습니다. 물론, 다른 ISP/DNS 제공 업체와 시도 할 경우 페이지가 다를 수 있습니다. 리디렉션되지 않으면 연결 오류가 발생합니다.
  • 유효한 DNS가 있지만 작동하지 않는 서버 (예 : google.com)가 다운되면 연결 오류가 발생합니다.
  • 서버에 리소스 ("페이지")가 누락되어 있으면 더 어렵습니다. 404는 깨 졌음을 의미하지만 서버가 보내지 않으면 조금 더 할 수 있습니다. 리디렉션은 링크를 의심스러운 것으로 표시하는 데 유용 할 수 있지만 누락 된 링크를 캡처하는 데 사용되므로 나중에 수동으로 확인해야합니다 (예 : www.google.com에서 www.google.es로 리디렉션).
+2

에서 전달 된 올바른 링크를 테스트하고 있습니다. 그렇지 않은 경우 "somefakesite.com"은 404 오류가 아닌 연결 오류를 반환합니다 (작동중인 서버의 누락 된 리소스가 누락 된 서버와 동일하지 않기 때문에). – SJuan76

+0

2 개의 깨진 링크로 테스트를했고 두 가지 모두 다른 상태를 표시했습니다. 1. http://legacy.ncsu.edu/ECE566 {널 = 1.1 (404)가 발견되지 HTTP /] 상태 - 404 2 http://somefakewebsite.net {널 = HTTP/1.1 200 OK] status - 200 이제 리디렉션 된 깨진 링크의 도메인 헤더를 확인해야합니까? 당신의 도움을 주셔서 감사합니다. – user754740

+0

@ user754740 내 게시물을 수정하여 답변을 시도했습니다. 불행히도 나는 쉬운 해결책을 안다. – SJuan76

관련 문제