wget: 맞춤 URL 속성을 따릅니다.

wget: 맞춤 URL 속성을 따릅니다.

wget은 소규모 사이트의 스냅샷을 빠르게 만들 수 있는 훌륭한 도구입니다. 내가 아는 한(정말로 에서 찾을 수 없기를 바랍니다 ) wget은 다음 wget --help과 같은 잘 알려진 HTML URL 속성만 존중할 수 있습니다 . 그러나 때로는 특정 사이트에서 비표준 속성을 사용하여 wget의 URL과 다른 실제 URL을 나타낼 수 있습니다. 예를 들어, 웹사이트에 크기가 조정된 이미지가 포함된 "정적" 갤러리가 있는 경우 특정 이미지 페이지에는 다음 콘텐츠가 포함될 수 있습니다.<a href=...<img src=...

<div zoomed_img="/gallery/image.jpg">
    <img src="/gallery/image_small.jpg"/>
</div>

zoomed_img따라서 wget은 /gallery/image.jpg. 내 wget 명령은 다음과 같습니다

wget --recursive \
    --domains domain \
    --no-parent \
    --page-requisites \
    --no-clobber \
    --html-extension \
    --convert-links \
    http://domain/gallery

wget이 사용자 정의 URL HTML 속성을 존중하도록 할 수 있습니까?

답변1

wget(1.16.3 이상)에서는 사용자가 사용자 정의 속성을 지정하는 것을 허용하지 않습니다. 이미 하나가 있습니다제안--follow-tags유사한 구문을 사용하여 확장된 옵션을 사용했지만 --follow-tags=a/href아무도 후속 조치를 취하지 않았습니다.

시나리오를 지원하기 위해 wget을 빠르게 수정해도 괜찮다면 다음을 참조하세요.이번에 제출하세요사용자 정의 태그 또는 속성을 추가하는 데 필요한 작업의 경우.

또는 직접 후처리기를 작성할 수도 있습니다.

답변2

~처럼얻다팔로우가 허용되지 않음데이터 소스내 솔루션은 프록시를 사용하여 모든 항목을 대체하는 것이었습니다."src"에 의한 "데이터-src"비행 중.

사용https://mitmproxy.org/예를 들어 다음 스크립트를 사용합니다.

"""
Fix the lazy loader SRC.
"""
from mitmproxy import http

def response(flow: http.HTTPFlow) -> None:
    if flow.response and flow.response.content:
        flow.response.content = flow.response.content.replace(
            b"data-src", b"src"
        )

에이전트를 실행합니다.

mitmdump -s src.py --ssl-insecure

프록시를 사용하도록 wget에 지시합니다.

wget -e use_proxy=yes -e http_proxy=localhost:8080 -e https_proxy=localhost:8080 --mirror --convert-links --adjust-extension --page-requisites --no-parent --progress=dot --recursive --level=6 --reject-regex "(.*)\?(.*)" --no-check-certificate https://website.com/

결과적으로 wget은 HTML을 읽기 전에 HTML을 동적으로 편집하는 로컬 프록시를 통해 전체 웹사이트를 미러링합니다. 이런 방식으로 이미지 URL이 검색됩니다.

관련 정보