Wget 을 사용 하여 페이지를 다운로드 하려고하는데 로그인 화면을 통과 할 수 없습니다.
로그인 페이지의 게시물 데이터를 사용하여 사용자 이름 / 암호를 보낸 다음 인증 된 사용자로 실제 페이지를 다운로드하려면 어떻게합니까?
Wget 을 사용 하여 페이지를 다운로드 하려고하는데 로그인 화면을 통과 할 수 없습니다.
로그인 페이지의 게시물 데이터를 사용하여 사용자 이름 / 암호를 보낸 다음 인증 된 사용자로 실제 페이지를 다운로드하려면 어떻게합니까?
답변:
매뉴얼 페이지를 기반으로 :
# Log in to the server. This only needs to be done once.
wget --save-cookies cookies.txt \
--keep-session-cookies \
--post-data 'user=foo&password=bar' \
--delete-after \
http://server.com/auth.php
# Now grab the page or pages we care about.
wget --load-cookies cookies.txt \
http://server.com/interesting/article.php
있는지 확인 --post-data
매개 변수가 제대로입니다 퍼센트 인코딩 (특히 앰퍼샌드!) 또는 요청이 아마 실패 할 것이다. 또한 있는지 확인 user
하고 password
올바른 열쇠입니다; 로그인 페이지의 HTML을 찾아 올바른 키를 찾을 수 있습니다 (브라우저의 "검사 요소"기능 name
을보고 사용자 이름 및 비밀번호 필드 에서 속성을 찾으십시오 ).
-p
( --page-requisites
)이 필요하지 않습니다 .
--delete-after
첫 번째 검색에 추가 할 가치가 있으므로 로그인하여 결과 페이지를 저장하지 않아도됩니다.
WGET64: missing URL
전체 wget 명령을 한 줄에 넣고`\`를 제거했습니다.
한 번만 사용하려면 브라우저를 통해 로그인 한 후 필요한 헤더를 복사하십시오.
개발자 도구의 네트워크 탭에서 사용 "컬로 복사"(개봉 후 페이지를 다시로드)와 컬의 헤더 플래그 교체 -H
및 --data
wget과의와 --header
와 --post-data
.
wget
올바른 쿠키로는 그렇지 않았지만 이것은 나를 위해 일했습니다 . 웹 서비스가 "User-Agent"또는 "Cache-Control"과 같이 중요하지 않은 것으로 보이는 여러 다른 GET 헤더를 검사한다고 생각합니다.
wget
데이터가 잘못된 방식으로 제공 되었다고 의심 됩니다.
--no-cookies 및 Cookie HTTP 요청 헤더로 wget하기 위해 기존 연결 쿠키를 직접 제공했습니다. 필자의 경우 로그인 티켓으로 여러 요청을 사용하여 로그인이 더 복잡해 보이는 Moodle University 로그인이었습니다. POST 요청이므로 --post-data를 추가했습니다. 예를 들어, 모든 무들 사용자 목록을 가져옵니다.
wget --no-cookies --header "Cookie: <name>=<value>" --post-data 'tab=search&name=+&personsubmit=Rechercher&keywords=&keywordsoption=allmine' https://moodle.unistra.fr/message/index.php
나는 같은 문제가 있었다. 내 솔루션은 Chrome을 통해 로그인하고 쿠키 데이터를 텍스트 파일에 저장하는 것이 었습니다. Chrome 확장 프로그램 인 Chrome cookie.txt 내보내기 확장 프로그램을 사용하면 쉽게 수행 할 수 있습니다 .
쿠키 데이터를 얻을 때 wget과 함께 쿠키를 사용하는 방법에 대한 예도 있습니다. 간단한 복사-붙여 넣기 명령 줄이 제공됩니다.
나는 파일을 다운로드하지 않은 한 줄짜리를 원했습니다. 다음은 쿠키 출력을 다음 요청으로 파이핑하는 예입니다. 젠투에서만 다음을 테스트했지만 대부분의 * nix 환경에서 작동합니다.
wget -q -O /dev/null --save-cookies /dev/stdout --post-data 'u=user&p=pass' 'http://example.com/login' | wget -q -O - --load-cookies /dev/stdin 'http://example.com/private/page'
(이것은 한 줄이지 만 브라우저에서 줄 바꿈됩니다)
출력을 파일로 저장하려면 다음으로 변경하십시오 -O -
.-O /some/file/name
기본 인증을 사용하는 경우 :
wget http://username:password@www.domain.com/page.html
POST 양식 데이터를 사용하는 경우 cURL 과 같은 것을 사용해야 합니다.
참고 : Lynx는 --enable-persistent-cookies 플래그를 사용하여 컴파일 해야합니다.
wget을 사용하여 로그인이 필요한 사이트에서 일부 파일을 다운로드하려면 쿠키 파일 만 있으면됩니다. 쿠키 파일을 생성하기 위해 lynx를 선택합니다. lynx는 텍스트 웹 브라우저입니다. 먼저 쿠키를 저장하려면 lynx에 대한 구성 파일이 필요합니다. lynx.cfg 파일을 작성하십시오. 이 구성을 파일에 작성하십시오.
SET_COOKIES:TRUE
ACCEPT_ALL_COOKIES:TRUE
PERSISTENT_COOKIES:TRUE
COOKIE_FILE:cookie.file
그런 다음이 명령으로 lynx를 시작하십시오.
lynx -cfg=lynx.cfg http://the.site.com/login
사용자 이름과 비밀번호를 입력 한 후 '이 PC에 유지'또는 이와 유사한 것을 선택하십시오. 로그인에 성공하면 사이트의 아름다운 텍스트 웹 페이지가 나타납니다. 그리고 당신은 로그 아웃합니다. 현재 디렉토리에는 cookie.file이라는 쿠키 파일이 있습니다. 이것이 우리가 wget에 필요한 것입니다.
그런 다음 wget은이 명령으로 사이트에서 파일을 다운로드 할 수 있습니다.
wget --load-cookies ./cookie.file http://the.site.com/download/we-can-make-this-world-better.tar.gz
브라우저에서 얻을 수있는 큰 파일 링크를 서버에서 wget 으로 다운로드하는 예제 .
예를 들어 Chrome을 사용합니다.
필요한 곳에 로그인하고 다운로드를 누릅니다. 링크를 다운로드하여 복사하십시오.
그런 다음 로그인 페이지에서 DevTools 를 열고 콘솔 로 이동 하여 쿠키를 입력하십시오.document.cookie
이제 서버로 이동하여 파일을 다운로드하십시오. wget --header "Cookie: <YOUR_COOKIE_OUTPUT_FROM_CONSOLE>" <YOUR_DOWNLOAD_LINK>