배경

배경

웹사이트의 로컬 미러를 생성하기 위해 wget을 사용하려고 합니다. 그러나 모든 연결 페이지를 얻지 못하는 것으로 나타났습니다.

여기 웹사이트가 있습니다

http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/

로 시작하는 모든 페이지를 원하지는 않지만 web.archive.org로 시작하는 모든 페이지를 원합니다 http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/.

을 사용할 때 wget -r내 파일 구조에서 다음을 찾습니다.

web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/index.html,

하지만 이 데이터베이스의 일부인 모든 파일이 없습니다. 예:

web.archive.org/web/20110808041151/http://cst-www.nrl.navy.mil/lattice/struk/d0c.html.

아마도 httrack이 더 나을 수도 있지만 지금은 너무 많은 것을 잡아먹고 있습니다.

따라서 어떤 방법을 통해 보관된 웹사이트의 로컬 복사본을 가져오는 것이 가능합니까?인터넷 아카이브 Wayback Machine?

답변1

사전 답변은 도움이 되기는 하지만 근본적인 질문을 간결하고 안정적이며 반복적으로 해결하지 못합니다. 이 게시물에서는 각각의 어려움을 간략하게 설명하고 적당한 수준 httrack의 솔루션을 제공합니다.

배경

하지만 이에 도달하기 전에 다음 내용을 숙독해 보세요.mpy님의 답변이 잘 작성되었습니다. 그[is|er]는 슬프게도 방치된 게시물에서,mpyWayback Machine의 모호한(그리고 솔직히 모호한) 보관 계획을 엄격하게 문서화합니다.

당연히 예쁘지 않습니다.The Wayback Machine은 사이트를 단일 디렉토리에 제대로 보관하는 대신 숫자로 식별되는 두 개 이상의 형제 디렉토리에 단일 사이트를 일시적으로 분산시킵니다. 이것이 미러링을 복잡하게 한다고 말하는 것은 상당히 절제된 표현일 것입니다.

이 계획이 제시하는 끔찍한 함정을 이해하는 것은 이전 솔루션의 부적절함을 이해하는 데 핵심입니다. 계속 진행해 볼까요?

이전 해결 방법 1: wget

관련 StackOverflow 질문"waybackmachine에서 오래된 웹사이트를 복구하세요"아마도 이 점에서 최악의 범죄자일 것입니다. wgetWayback 미러링을 권장합니다. 당연히 그 권고는 근본적으로 건전하지 않습니다.

복잡한 외부 URL 재작성이 없는 경우(예: Privoxy),wgetWayback 보관 사이트를 안정적으로 미러링하는 데 사용할 수 없습니다.처럼mpy"문제 2 + 해결 방법"에 대한 자세한 내용은 선택한 미러링 도구에 관계없이 비전이적으로 다운로드할 수 있어야 합니다.오직대상 사이트에 속하는 URL입니다. 기본적으로 대부분의 미러링 도구는 전이적으로 다운로드됩니다.모두대상 사이트와 해당 사이트에서 링크된 사이트 모두에 속하는 URL - 최악의 경우 "전체 인터넷"을 의미합니다.

구체적인 예가 나와 있습니다. 예제 도메인을 미러링할 때 kearescue.com미러링 도구~ 해야 하다:

  • 일치하는 모든 URL을 포함합니다 https://web.archive.org/web/*/http://kearescue.com. 이는 대상 사이트(예: https://web.archive.org/web/20140521010450js_/http_/kearescue.com/media/system/js/core.js)에서 제공하는 자산입니다.
  • 다른 모든 URL을 제외하세요. 이는 대상 사이트(예: https://web.archive.org/web/20140517180436js_/https_/connect.facebook.net/en_US/all.js)에서 링크만 연결된 다른 사이트에서 제공하는 자산입니다.

이러한 URL을 제외하지 못하면 일반적으로 사이트 보관 당시 보관된 인터넷의 전부 또는 대부분을 가져옵니다. 특히 외부에서 호스팅되는 자산(예: YouTube 비디오)이 포함된 사이트의 경우 더욱 그렇습니다.

그것은 나쁜 것입니다.하는 동안wget 하다--exclude-directories제외할 URL과 일치하는 하나 이상의 패턴을 허용하는 명령줄 옵션을 제공합니다 .~ 아니다범용 정규식; *구문이 0개 이상의 문자와 일치하는 단순한 글로브입니다....을 제외한/. 제외할 URL에는 임의로 많은 /문자가 포함되어 있으므로,wget 할 수 없다이러한 URL을 제외하는 데 사용되므로할 수 없다Wayback 보관 사이트를 미러링하는 데 사용됩니다.기간.안타까운 이야기를 마치겠습니다.

이 문제는 계속되었습니다공개 기록적어도 2009년부터. 아직 해결되지 않았습니다.다음!

이전 솔루션 2: 스크랩북

프린츠Firefox 플러그인을 권장합니다 ScrapBook.파이어폭스 플러그인.

그것이 아마도 당신이 알아야 할 전부였을 것입니다. 반면 ScrapBookFilter by String...기능은하다앞서 언급한 "문제 2 + 해결 방법"을 해결합니다.~ 아니다후속 "문제 3 + 솔루션", 즉 외부 중복 문제를 해결합니다.

ScrapBook전자의 문제를 적절하게 해결하는 지도 의문이다 . 처럼mpy인정하다:

스크랩북은 지금까지 사이트를 완전히 확보하는 데 실패했지만...

신뢰할 수 없고 지나치게 단순한 솔루션은 솔루션이 아닙니다. 다음!

이전 해결 방법 3: wget + Privoxy

mpywget그런 다음 및 를 모두 활용하는 강력한 솔루션을 제공합니다 Privoxy. 하는 동안wget ~이다합리적으로 구성이 간단하다는 Privoxy것은 결코 합리적이지 않습니다. 아니면 간단합니다.

을(를) 적절하게 설치, 구성 및 사용하는 데는 헤아릴 수 없는 기술적 장애물로 인해 Privoxy아직 확인하지 못했습니다.mpy님의 솔루션입니다. 그것~해야 한다확장 가능하고 강력한 방식으로 작업합니다. 진입 장벽을 고려하면 이 솔루션은 중소 규모 사이트를 복구하려는 일반 웹마스터보다 대규모 자동화에 더 적합할 것입니다.

wget+ Privoxy볼만한 가치 가 있나요 ?전적으로.그러나 대부분의 수퍼유저는 더 간단하고 쉽게 적용할 수 있는 솔루션을 통해 더 나은 서비스를 받을 수 있습니다.

새로운 솔루션: httrack

의 미러링 기능 httrack의 상위 집합을 구현하는 명령줄 유틸리티인 을 입력하세요 . 패턴 기반 URL 제외를 모두 지원합니다.wgethttrack그리고단순한 사이트 재구성. 전자가 해결한다mpy의 "문제 2 + 해결 방법"; 후자는 "문제 3 + 해결책"입니다.

아래의 추상 예에서 다음을 바꾸십시오.

  • ${wayback_url}대상 사이트 전체를 보관하는 최상위 디렉토리의 URL(예: 'https://web.archive.org/web/20140517175612/http://kearescue.com')
  • ${domain_name}${wayback_url}접두사를 제외 하고 동일한 도메인 이름으로 표시됩니다 http://(예: 'kearescue.com').

여기 있습니다.를 설치하고 사이트를 다운로드할 로컬 디렉터리에 httrack터미널 창을 열고 다음 명령을 실행합니다.cd

httrack\
    ${wayback_url}\
    '-*'\
    '+*/${domain_name}/*'\
    -N1005\
    --advanced-progressinfo\
    --can-go-up-and-down\
    --display\
    --keep-alive\
    --mirror\
    --robots=0\
    --user-agent='Mozilla/5.0 (X11;U; Linux i686; en-GB; rv:1.9.1) Gecko/20090624 Ubuntu/9.04 (jaunty) Firefox/3.5'\
    --verbose

완료되면 현재 디렉터리에는 해당 URL에서 미러링된 각 파일 형식에 대한 하위 디렉터리가 하나씩 포함되어야 합니다. 여기에는 일반적으로 최소한 다음이 포함됩니다.

  • css, 미러링된 모든 CSS 스타일시트가 포함되어 있습니다.
  • html, 미러링된 모든 HTML 페이지가 포함되어 있습니다.
  • js, 미러링된 모든 JavaScript가 포함되어 있습니다.
  • ico, 하나의 미러링된 파비콘을 포함합니다.

이 구조를 반영하기 위해 다운로드한 모든 콘텐츠를 내부적으로 다시 작성 하므로 httrack이제 수정 없이 사이트를 탐색할 수 있습니다. 위 명령을 중간에 중단하고 계속 다운로드하려면 --continue동일한 명령에 옵션을 추가하고 다시 시도하세요.

그게 다야.외부 왜곡, 오류가 발생하기 쉬운 URL 재작성 또는 규칙 기반 프록시 서버가 필요하지 않습니다.

슈퍼유저 여러분, 즐겨주세요.

답변2

불행하게도 그 어떤 답변도 (모든 파일을 수십 번 복제하지 않고) 보관된 웹사이트에서 완전한 미러를 만드는 문제를 해결할 수 없었습니다. 그래서 저는 또 다른 접근 방식을 생각해 냈습니다.해킹됨내 솔루션은 일반적인 솔루션도 아니고 매우 간단한(읽기: 복사 및 붙여넣기) 솔루션도 아니기 때문에 중요한 단어입니다. 나는Privoxy 프록시 서버파일을 다시 쓰려면즉석에서wget으로 미러링하는 동안.

하지만 먼저 미러링이 그렇게 어려운가요?웨이백 머신?

문제 1 + 해결책

Wayback 도구 모음은 대화형 사용에 편리하지만 wget을 방해할 수 있습니다. 따라서 privoxy 필터 규칙을 사용하여 제거하세요.

FILTER: removewaybacktoolbar remove Wayback toolbar
s|BEGIN WAYBACK TOOLBAR INSERT.*END WAYBACK TOOLBAR INSERT|Wayback Toolbar removed|s

문제 2 + 해결 방법

전체 사이트를 캡처하고 싶었기 때문에 너무 작지 않은 재귀 깊이가 필요했습니다. 하지만 나는 wget이 전체 서버를 크롤링하는 것을 원하지 않습니다. 일반적으로 다음을 사용합니다.부모가 없는-np해당 목적을 위한 wget 옵션입니다 . 하지만 여기서는 작동하지 않습니다.

http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/struk/hcp.html

뿐만 아니라

http://web.archive.org/web/20110801041529/http://cst-www.nrl.navy.mil/lattice/struk/a_f.html

(경로에서 변경된 타임스탬프를 확인하세요). 생략하면 -npwget이 까지 크롤링되고 (...)http://cst-www.nrl.navy.mil최종적으로 전체 navi.mil사이트를 검색하게 됩니다. 나는 확실히 그것을 원하지 않습니다! 따라서 이 필터는 -npWayback 시스템의 동작을 에뮬레이션하려고 시도합니다 .

FILTER: blocknonparentpages emulate wget -np option
s|/web/([0-9].*)/http://cst-www.nrl.navy.mil/lattice/|THIS_IS_A_GOOD_$1_ADDRESS|gU
s|/web/(.*)/http(.*)([" ])|http://some.local.server/404$3|gU
s|THIS_IS_A_GOOD_(.*)_ADDRESS|/web/$1/http://cst-www.nrl.navy.mil/lattice/|gU

구문을 파헤쳐보기 위한 연습으로 남겨두겠습니다. 이 필터의 기능은 다음과 같습니다. 모든 Wayback URL을 다음과 같이 대체 합니다 http://web.archive.org/web/20110801041529/http://www.nrl.navy.mil/.http://some.local.server/404~ 아니다포함하다 http://cst-www.nrl.navy.mil/lattice/.

조정해야 합니다 http://some.local.server/404. 이는 wget에 404 오류를 보내는 것입니다. 아마도 privoxy가 더 우아하게 이를 수행할 수 있을 것입니다. 그러나 나에게 가장 쉬운 방법은 로컬 http 서버에 존재하지 않는 페이지에 대한 링크를 다시 작성하는 것이므로 이 방법을 고수했습니다.

그리고 조정도 필요합니다.두 사건 모두http://cst-www.nrl.navy.mil/lattice/미러링하려는 사이트를 반영합니다 .

문제 3 + 해결 방법

마지막으로 페이지의 일부 보관된 버전이 다른 스냅샷의 페이지에 링크될 수 있습니다. 그리고 그것은 또 다른 것입니다. 등등... 그리고 같은 페이지의 많은 스냅샷을 갖게 될 것입니다. 그리고 wget은 가져오기 전까지는 결코 완료하지 못할 것입니다.모두스냅샷. 나도 정말 그런 걸 원하지 않아요! 여기에서는 Wayback 기계가 매우 똑똑하다는 점이 많은 도움이 됩니다. 파일을 요청할 수 있습니다

http://web.archive.org/web/20110801041529/http://cst-www.nrl.navy.mil/lattice/struk/a_f.html

스냅샷 에 포함되지 않더라도 말이죠 20110801041529. 그것자동으로올바른 것으로 리디렉션합니다.

http://web.archive.org/web/20110731225728/http://cst-www.nrl.navy.mil/lattice/struk/a_f.html

따라서 모든 스냅샷을 가장 최근 스냅샷으로 다시 작성하는 또 다른 개인정보 필터

FILTER: rewritewaybackstamp rewrite Wayback snapshot date
s|/([0-9]{14})(.{0,3})/|/20120713212803$2/|g

에 포함된 모든 14자리 숫자는 효과적으로 /.../대체됩니다 20120713212803(원하는 사이트의 가장 최근 스냅샷으로 조정). Wayback 시스템에서 발생하지 않는 사이트 구조에 이러한 숫자가 있는 경우 이는 문제가 될 수 있습니다. 완벽하지는 않지만 용도로는 괜찮습니다.구조대지.

좋은 점은 wget이 리디렉션되는 새 위치를 무시하고 위의 예에서 파일을 web.archive.org/web/20110801041529/http://cst-www.nrl.navy.mil/lattice/struk/a_f.html.

wget을 사용하여 보관된 사이트 미러링

따라서 마지막으로 다음 을 user.filter통해 활성화된 이러한 개인정보 필터( 에 정의됨) 를 사용합니다.user.action

{ +filter{removewaybacktoolbar} +filter{blocknonparentpages} +filter{rewritewaybackstamp} }
web.archive.org

평소처럼 wget을 사용할 수 있습니다. wget에게 프록시를 사용하라고 지시하는 것을 잊지 마세요:

export http_proxy="localhost:8118"
wget -r -p -k -e robots=off http://web.archive.org/web/20120713212803/http://cst-www.nrl.navy.mil/lattice/index.html

이 옵션을 사용했지만 -m작동할 것입니다. 당신은 폴더로 끝날 것입니다

20120713212803
20120713212803cs_
20120713212803im_
20120713212803js_

Wayback 머신은 이미지( im_), 스타일 시트( cs_) 등을 분리합니다. 모든 것을 병합하고 일부 sed 매직을 사용하여 ../../../../20120713212803js_/http:/cst-www.nrl.navy.mil/lattice그에 따라 보기 흉한 상대 링크( )를 대체했습니다. 그러나 이것은 실제로 필요한 것은 아닙니다.

답변3

wget

--page-requisites
이 옵션을 사용하면 Wget이 특정 HTML 페이지를 올바르게 표시하는 데 필요한 모든 파일을 다운로드하게 됩니다. 여기에는 인라인 이미지, 사운드, 참조된 스타일시트 등이 포함됩니다.

일반적으로 단일 HTML 페이지를 다운로드할 때 이를 올바르게 표시하는 데 필요할 수 있는 필수 문서는 다운로드되지 않습니다. -r을 -l과 함께 사용하면 도움이 될 수 있지만 Wget은 일반적으로 외부 문서와 인라인 문서를 구별하지 않기 때문에 일반적으로 필수 요소가 누락된 "리프 문서"가 남습니다.

예를 들어 문서 1.html에 1.gif를 참조하는 "" 태그와 외부 문서 2.html을 가리키는 "" 태그가 포함되어 있다고 가정해 보겠습니다. 2.html이 비슷하지만 이미지가 2.gif이고 3.html에 연결되어 있다고 가정해 보겠습니다. 이것이 임의로 높은 숫자까지 계속된다고 가정해 보겠습니다.

-m
--mirror

미러링에 적합한 옵션을 켭니다. 이 옵션은 재귀 및 타임스탬프를 활성화하고 무한 재귀 깊이를 설정하며 FTP 디렉터리 목록을 유지합니다. 현재는 -r -N -l inf --no-remove-listing과 동일합니다.

Wget은 -r이 지정된 것처럼 작동하지만 해당 단일 페이지와 해당 필수 항목만 다운로드됩니다. 해당 페이지에서 외부 문서로의 링크는 따라가지 않습니다. 실제로 단일 페이지와 모든 필수 구성 요소(별도의 웹 사이트에 존재하는 경우에도)를 다운로드하고 해당 로트가 로컬에서 제대로 표시되는지 확인하기 위해 이 작성자는 -p 외에 몇 가지 옵션을 사용하는 것을 좋아합니다.

wget -E -H -k -K -p http://<site>/<document>

SO가 wget -E -H -k -K -p http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice 당신에게 가장 적합한 옷이 될 것입니다. 하지만 다른 도구인 firefox확장 프로그램을 추천합니다.scrapbook

스크랩북

ScrapBook은 웹 페이지를 저장하고 컬렉션을 쉽게 관리하는 데 도움이 되는 Firefox 확장입니다. 주요 특징은 가벼움, 속도, 정확성 및 다국어 지원입니다. 주요 기능은 다음과 같습니다.
* 웹 페이지 저장
* 웹 페이지 일부 저장
* 웹 사이트 저장
* 북마크와 동일한 방식으로 컬렉션 구성
* 컬렉션의 전체 텍스트 검색 및 빠른 필터링 검색
* 수집된 웹 페이지 편집
* 텍스트/HTML Opera의 Notes와 유사한 편집 기능

사이트를 미러링하는 방법
설치하다스크랩북 그리고 파이어폭스를 다시 시작하세요

  1. 브라우저에 페이지 로드 [미러링할 웹페이지]
  2. 페이지 우클릭 -> 다른 이름으로 페이지 저장...
  3. 레벨을 선택하세요심층적으로 저장 그리고 저장을 누르세요 여기에 이미지 설명을 입력하세요
  4. Restrict to Drirectory/ Domain에서 선택하다필터
    여기에 이미지 설명을 입력하세요

미러링이 완료될 때까지 기다립니다. 미러링 후 메뉴에서 오프라인으로 웹사이트에 접속할 수 있습니다 ScrapBook.

답변4

인터넷 아카이브의 URL 형식에는 사이트가 아카이브된 날짜와 시간이 포함됩니다. 변경되지 않은 공간 자산을 저장하기 위해 사이트의 이전 버전에 다시 연결됩니다.

예를 들어 이 URL에서http://web.archive.org/web/20000229123340/http://www.yahoo.com/사이트가 크롤링된 날짜는 2000년 2월 29일 12시 33분 40초였습니다.

따라서 모든 것을 얻으려면 http://web.archive.org/web/20110722080716/http://cst-www.nrl.navy.mil/lattice/그것부터 시작해야 하지만 에서 연결된 모든 자산도 가져와야 합니다 http://web.archive.org/web/*/http://cst-www.nrl.navy.mil/lattice/.

관련 정보