인증 유형

인증 유형
anisha@linux-dopx:~> wget -c --no-check-certificate --user abc --password xyz https://www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf

--2011-08-29 15:11:53--  https://www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
Resolving www.smart-developer.com... 80.237.227.161
Connecting to www.smart-developer.com|80.237.227.161|:443... connected.
WARNING: cannot verify www.smart-developer.com's certificate, issued by `/C=US/O=Thawte, Inc./OU=Domain Validated SSL/CN=Thawte DV SSL CA':
  Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `SD_02.pdf'
    [   <=>                                                                   ] 19,286      10.4K/s   in 1.8s    
2011-08-29 15:12:00 (10.4 KB/s) - `SD_02.pdf' saved [19286]

다운로드한 책은 KB(실제 크기 20MB) 단위이며 열 때 오류가 표시되지만 Firefox를 통해 직접 다운로드하는 데에는 문제가 없습니다.

편집 1: 쉘이 사용자 이름에 @를 허용할 수 없는 것 같습니다!

또한 따옴표의 위치를 ​​살펴보세요.

오른쪽으로 스크롤하세요.

anisha@linux-dopx:~> wget -c https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf: Bad port number.

anisha@linux-dopx:~> wget -c https://'[email protected]':[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf: Bad port number.

anisha@linux-dopx:~> wget -c https://'[email protected]:abc'@www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
https://[email protected]:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf: Bad port number.

anisha@linux-dopx:~> wget -c https://x.y.z:[email protected]/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
--2011-08-29 16:01:38--  https://x.y.z:*password*@www.smart-developer.com/lnmshop/download/SmartDeveloperUS/203/SD_02.pdf
Resolving www.smart-developer.com... 80.237.227.161
Connecting to www.smart-developer.com|80.237.227.161|:443... connected.
ERROR: cannot verify www.smart-developer.com's certificate, issued by `/C=US/O=Thawte, Inc./OU=Domain Validated SSL/CN=Thawte DV SSL CA':
  Unable to locally verify the issuer's authority.
To connect to www.smart-developer.com insecurely, use `--no-check-certificate'.
Unable to establish SSL connection.
anisha@linux-dopx:~/Desktop>

답변1

인증 유형

HTTP는 기본적으로 사용자가 사용하는 인증을 지원합니다. 그러나 기본 HTTP 인증은 거의 사용되지 않습니다. 또한 HTTP를 사용하면 양식 데이터를 서버로 보낼 수 있습니다. 대부분의 웹사이트(사용하려는 웹사이트 포함)는 사용자 친화적이고 사용자 정의가 가능하기 때문에 HTTP 인증 대신 이 양식 기반 인증을 사용합니다.

양식 인증 작동 방식

HTTP 클라이언트가 HTTP 서버로부터 리소스를 요청하면 많은 양의 데이터가 HTTP 헤더로 전송됩니다. 양식 기반 인증의 중요한 부분은 쿠키입니다. 쿠키는 키=값 쌍 세트의 이름일 뿐입니다. HTTP 요청으로 여러 쿠키를 보낼 수 있습니다.

제한된 리소스에 대한 요청이 오면 서버는 세션 쿠키에서 특정 인증 토큰을 찾습니다. 존재하지 않는 경우 클라이언트가 아직 로그인하지 않았음을 의미하므로 요청한 리소스 대신 로그인 양식이 반환됩니다. 토큰이 존재하고 유효한 경우 클라이언트가 로그인되었으며 서버는 요청한 리소스를 반환합니다.

그렇다면 이 특별한 인증 토큰을 어떻게 얻고 어떻게 보낼 수 있을까요? 유효한 데이터가 포함된 로그인 양식을 제출하면 정보를 얻을 수 있습니다. 서버가 클라이언트를 인증하면 HTTP 헤더에 쿠키를 다시 보냅니다. 이 쿠키를 저장하고 향후 모든 요청에 ​​전달해야 합니다.

황동 못

메시지 수집

로그인 페이지의 소스 코드를 확인하세요. wget을 사용하여 다운로드했습니다. 텍스트 편집기에서 열면 됩니다. <form...>소스코드에서 찾아보세요. 일반적으로 여러 가지가 있을 수 있으며 로그인 데이터를 제출하는 데 어떤 것이 사용되는지 파악해야 할 수도 있습니다. 지금 사용하고 있는 양식에는 양식이 하나만 있습니다. 다음으로 모든 <input...>태그를 찾으십시오. 이 데이터는 양식 데이터의 일부로 제출됩니다. 특히 관심을 끄는 부분은 바로 이 name=...부분이다. 이것은열쇠키=값 쌍의 일부인 경우 입력하는 내용은 다음과 같습니다.부분.

작업 중인 페이지에는 Login, Password, 및 필드 AdminSiteaccessURI가 있습니다 . 이것이 테이블의 끝입니다. 더 이상 볼 필요가 없습니다. 이러한 모든 키를 적절한 값과 함께 제출해야 합니다. 일부 값은 사용자가 입력하며 , 다른 값은 해당 필드에 이미 존재하는 값을 사용할 수 있습니다. 을 살펴보면 처음에 요청한 실제 리소스의 URI에 서버가 채운 속성이 있음을 알 수 있습니다 .LoginButtonRedirectURI</form>LoginPasswordRedirectURIvalue=

또 하나의 핵심 정보: 데이터를 어디에 어떻게 제출합니까? 이는 <form...>태그에서 확인할 수 있습니다. 방법과 행동이 있을 것입니다. 작업에는 전체 URL이 없습니다. 기본에 상대적인 URL이 있지만 전체 URL이 필요하므로 기본을 상대 URL에 추가하세요. 작업은 제출할 URL이며, 작업을 통해 POST 요청인지 GET 요청인지 알 수 있습니다. 사용 중인 페이지에는 POST 메서드를 통해 제출된 데이터가 필요합니다.

로그인 데이터 제출

이제 무엇을 커밋할지 알았으니 실제로 수행해야 합니다. 우리는 이것을 사용할 수 있습니다 wget. 매뉴얼 페이지를 보면 --post-data=string포맷 방법을 보여주는 옵션이 있습니다 key1=value1&key2=value2.... 로 연결된 각 쌍의 키=값일 뿐입니다 &. 이것이 우리에게 필요한 유일한 옵션은 아닙니다.

인증 토큰을 기억하시나요? 서버는 이를 응답의 일부로 다시 보내므로 이를 저장해야 합니다. "쿠키"에 대한 매뉴얼 페이지를 다시 보면 몇 가지 중요한 옵션이 표시됩니다. --save-cookies file그리고 --keep-session-cookies.

이러한 옵션을 사용하여 명령줄을 작성하고 실행하세요. 제출하는 URL은 원래 가져오려고 했던 리소스가 아니라는 점을 기억하세요. 속성이 가리키는 URL에 제출해야 합니다 <form action=...>. 세션 쿠키를 파일에 저장해야 하며, 가능하면 (wget이 성공적으로 HTTP 리디렉션을 따르는 경우) PDF 파일을 출력으로 저장해야 합니다. PDF 파일을 얻지 못하면 다른 요청을 제출하면 됩니다(이번에는 아무 것도 없이 --post-data). 이번에는 "--load-cookies file"을 사용하기 전에 저장한 쿠키를 포함합니다.

그것은 이루어져야합니다!

관련 정보