wget / curl을 사용하여 로그인 한 사이트에서 다운로드하려면 어떻게합니까?


46

wikipedia의 일부 부분은 로그인 할 때 다르게 나타납니다. 사용자 페이지를 가져 와서 마치 마치 마치 로그인 한 것처럼 보입니다.

이런 사용자 페이지를 얻을 수있는 방법이 있습니까

http://en.wikipedia.org/wiki/User:A

이것은 로그인 페이지입니다.

http://en.wikipedia.org/w/index.php?title=Special:UserLogin&returnto=Login&campaign=ACP3


Chrome + cURL을 사용하는 쉬운 솔루션에 대해서는 stackoverflow.com/a/21919431/1136018 을 참조하십시오
pterojacktyl

답변:


50

쉬운 방법 : 브라우저로 로그인하여 쿠키를 wget하십시오

가장 쉬운 방법 : 일반적으로 로그인 한 것처럼 페이지를 가져 오려면 특정 웹 사이트에서 (로그인 된) 쿠키를 wget 또는 curl 로 제공해야합니다 .

Firefox를 사용하는 경우 Export Cookies 애드온을 통해 쉽게 수행 할 수 있습니다. 애드온을 설치하고 다음을 수행하십시오.

  1. 도구 ... 쿠키 내보내기로 이동 하여 cookies.txt파일을 저장하십시오 ( 파일 이름 / 대상을 변경할 수 있음).
  2. 터미널을 열고 옵션 wget과 함께 사용 하십시오 --load-cookies=FILENAME. 예 :

    wget --load-cookies=cookies.txt http://en.wikipedia.org/wiki/User:A
    • 들어 , 그건curl --cookie cookies.txt ...

(Chrome / Chromium 사용자를 위해이 답변을 업데이트하려고합니다)

어려운 방법 : curl (바람직하게는)을 사용하거나 전체 세션을 관리하기 위해 wget 을 사용하십시오.

  • 자세한 사용 방법이 답변의 범위를 넘어,하지만 당신은 사용 컬을 으로 --cookie-jar또는 wget을--save-cookies --keep-session-cookies그들을 사용 후 로그인 쿠키 저장, 사이트에 로그인하기 위해 HTTP / S PUT 방식과 함께, 옵션, 브라우저를 시뮬레이션하십시오.
  • 말할 필요도없이, 이것은 로그인 페이지를위한 HTML 소스를 거쳐야하고 (입력 필드 이름 등을 얻는 등), 간단한 로그인 / 암호 인증 이외의 것을 사용하여 사이트에서 작업하기가 어려운 경우가 많습니다.
  • 팁 : 이 경로를 사용하는 경우 최소한 인증 단계에서 웹 사이트 의 모바일 버전 (사용 가능한 경우) 을 처리하는 것이 훨씬 더 간단합니다 .

1
좋은 팁. 모바일 사이트의 코드는 종종 깔끔합니다.
CousinCocaine

4
그러한 cookies.txt는 어떻게 생겼습니까?
Frederick Nord

이 "쿠키 내보내기"부가 기능은 Firefox에서 액세스 한 모든 단일 사이트에 대한 쿠키가 포함 된 쿠키 파일을 생성했습니다. 따라서이 답변을 따르면 귀하가 방문하는 모든 사이트에 모든 쿠키를 제공하게됩니다. 나는 이것이이 답변의 보안 결함이라고 생각합니다. 다음을 사용하여이 문제를 쉽게 해결할 수 있습니다. grep mydomain cookies.txt > mydomain-cookies.txt
erik.weathers 2016 년


Firefox에서 쿠키 관리자 애드온을 사용 하여 선택한 쿠키 만 내보낼 수 있습니다.
한스 진젤

7

추가 사항을 설치하지 않고 나를 위해 일한 또 다른 쉬운 솔루션 :

  • "웹 개발자" 도구 의 "네트워크"탭을여십시오 : Ctrl-Shift-E
  • 저장하려는 페이지를 방문하십시오 (예 : 로그인 뒤의 사진)
  • 요청을 마우스 오른쪽 버튼으로 클릭하고 '복사'-> 'URL로 복사'를 선택하십시오.

이를 통해 쉘에 직접 붙여 넣을 수있는 명령을 제공합니다.

curl 'https://mysite.test/my-secure-dir/picture1.jpg' \ 
-H 'User-Agent: Mozilla/5.0 ...' \
-H 'Cookie: SESSIONID=abcdef1234567890'

그런 다음 명령에서 URL을 수정하여 원하는 것을 가져올 수 있습니다.


4

cURL을 사용하면 두 가지 방법으로 쿠키를 처리하기가 정말 쉽습니다.

curl www.target-url.com -c cookie.txt그런 다음 cookie.txt라는 파일을 저장합니다. 그러나 로그인해야하므로 다음과 같은 인수와 함께 --data를 사용해야 curl -X --data "var1=1&var2=2" www.target-url.com/login.php -c cookie.txt합니다. loggued 쿠키를 받으면 다음과 같이 보낼 수 있습니다. curl www.target-url.com/?user-page.php -b cookie.txt

저장하고 보내려면 -c (-cookie) 또는 -b (-cookie-jar)를 사용하십시오.

참고 1 : cURL CLI를 사용하는 것은 PHP보다 훨씬 쉽고 빠릅니다.)

최종 내용을 저장하려면 > filename.htmlcURL 명령에 쉽게 추가 한 다음 전체 HTML 코드를 저장할 수 있습니다 .

"full"에 대한 참고 2 : cURL을 사용하여 자바 스크립트를 렌더링 할 수 없으며 소스 코드 만 가져 오십시오.


1
-X매개 변수는 "do post"를 나타내지 만 사용 --data=xxx -X은 암시 적이므로 반드시 제거 할 수 있습니다.
erm3nda

-b입니다read cookie
티모

3

이 질문에 여전히 관심이있는 사람들에게는 CurlWGet 이라는 매우 유용한 Chrome 확장 프로그램 이 있습니다.이 확장 프로그램은 한 번의 클릭으로 인증 수단 등으로 wget/ curl요청 을 생성 할 수 있습니다 . 이 확장을 설치하려면 아래 단계를 수행하십시오.

  1. Chrome 웹 스토어 에서 확장 프로그램을 설치하십시오 .
  2. 다운로드하려는 웹 페이지로 이동하십시오.
  3. 다운로드를 시작하십시오.
  4. 확장 프로그램이 링크를 생성합니다.

즐겨!


2

Firefox 쿠키가있는 Wget 블로그 는 Firefox가 쿠키를 저장하는 sqlite 데이터 파일에 액세스하는 방법을 보여줍니다. 그렇게하면 wget과 함께 사용하기 위해 쿠키를 수동으로 내보낼 필요가 없습니다. 의견에 따르면 세션 쿠키에서는 작동하지 않지만 시도한 사이트에서는 제대로 작동합니다.


2

Firefox의 cliget 을 살펴보십시오 .

다운로드하려고하면 최종 다운로드 대화 상자에서 다운로드를 curl 명령 줄로 클립 보드에 복사하는 옵션이 제공됩니다.


1

이것을 시도 했습니까?

wget --user=username --password=password http://en.wikipedia.org/wiki/User:A

예-불행히도 작동하지 않습니다 = (
user784637

6
참고 :이 구문은 웹 페이지 기반 인증이 아닌 기본 HTTP 인증 (브라우저가 특수한 사용자 이름 / 암호 대화 상자를 표시하는 경우)에만 작동합니다.
ish

기본 HTTP 인증 URL 형식은 admin : admin@www.url.com이지만 @izx가 말했듯이 기본 HTTP는 PHP 프로그래밍이나 코드가 아닌 브라우저 기능입니다. 언젠가 htaccess로 보호 된 URL에 액세스해야하는 경우 해당 모드를 사용할 수 있습니다. D
erm3nda

나는 공감하지 않았지만 이것은 인증하는 좋은 방법이 아닙니다. 우연히 그러한 스크립트를 공개하면 사람들이 귀하의 비밀번호를 사용할 수 있습니다.
Willem Van Onsem

1
downvotes와 함께 무엇입니까? 모든 대답을 잡을 수는 없지만 여전히 답이 될 수 있습니다.
오버 코딩

1

다음과 같은 것을 시도하십시오 :

wget --keep-session-cookies --save-cookies cookies.txt --post-data 'user=goyamy&passwrd=mypassword' http://forum.ubuntu-it.org/

이 링크도 참조하십시오 :

이 웹 페이지를 wget으로 다운로드하는 방법은 무엇입니까?


모든 출력과 같습니다. 사용하여 > filename.html현재 디렉토리에 출력을 저장하거나 전체 파일 경로를 넣어. 이것은 Linux 및 Windows 시스템 모두에 적용됩니다.
erm3nda

따라서 wget에는 cURL과 같은 많은 기능이 있으며 그 반대도 마찬가지입니다. POST를 수행 할 수 있으므로 웹 사이트에 로그인 할 수 있습니다. 흥미 롭군
erm3nda

1

보다 복잡한 웹 사이트 기반 로그인 의 경우 또는 대신 http://wwwsearch.sourceforge.net/mechanize/ 와 같이 브라우저를 모방하는 Python 스크립트 및 일부 모듈을 사용해야합니다 .curlwget

이렇게하면 세션 쿠키가 자동으로 처리되고 링크를 따라 가고 로그인 양식을 채울 수 있으므로 웹 브라우저를 사용하는 것처럼 로그인 프로세스를 통해 "스크립트"를 작성할 수 있습니다.


예, 기계화를 사용하면 정말 좋습니다. 또한 (그리고 원래) Perl에서 구할 수 있습니다.
andol
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.