저는 정적 사본을 생성하고 보관할 수 있도록 제가 소유한 오래된 Reviewboard 서버를 크롤링하려고 합니다. 그리고 서버를 크롤링하고 다운로드하는 권장 방법을 사용하여 몇몇 사람들의 권장 사항에 따라 wget을 사용하여 이 작업을 수행하고 있습니다. :
wget --recursive --no-clobber --page-requisites --html-extension --convert-links --domains $DOMAIN --http-user $USERNAME --ask-password $THE_SERVER
그러나 서버에는 LDAP 인증 로그인이 필요하므로 내가 얻는 것은 로그인 페이지와 일부 관련 파일뿐입니다. . --user
대신 그냥 수행하는 경우에도 동일한 문제가 발생합니다 --http-user
.
제 질문은 wget을 사용하여 LDAP 인증을 수행할 수 있습니까? 그렇다면 어떻게 해야 합니까?
나는 다음과 같은 의견이 나올 것이라고 확신합니다.
- 이미 rb-tools를 사용하여 JSON 아카이브를 만들었지만 정적 웹 복사본을 훨씬 더 선호합니다.
- 저는 서버의 관리자이기 때문에 익명의 읽기 전용 액세스를 허용하는 옵션이 있지만 가능하다면 이를 피하고 싶습니다.
답변1
LDAP는 인증이 아닙니다.기구– 단순한 계정일 뿐입니다저장백엔드; 이는 본질적으로 MySQL 등에 계정을 저장하는 것과 동일합니다. 따라서 HTTP 클라이언트에 관한 한 "LDAP 인증"과 같은 것은 없습니다.
실제 메커니즘 HTTP가지다비밀번호 기반 로그인의 경우 "기본" 또는 "다이제스트"이고, Kerberos 기반 로그인의 경우 "협상"입니다. --http-user
귀하의 웹사이트가 그 중 하나를 사용했다면 이 옵션이 작동할 것입니다.
그러나 귀하의 웹사이트는 양식/쿠키 기반 로그인 페이지를 사용할 가능성이 높습니다. 이는 HTTP 클라이언트에게 일반 웹페이지로의 일반 리디렉션과 완전히 구별할 수 없습니다. Wget~하지 않을 것이다해당 양식을 자동으로 인식하고 채울 수 있습니다.
그렇다면 당신은 어쩌겠어요.~할 수 있었다일반 웹 브라우저를 통해 로그인한 다음 필요한 세션 쿠키를 wget의 "cookie jar" 파일에 복사합니다(또는 를 사용하여 직접 전달할 수도 있음 --header
). 그러면 웹사이트는 귀하가 로그인되어 있는 것으로 인식할 것입니다.
Chrome 또는 Firefox에서 "개발자 도구" → "네트워크"를 열면 각 네트워크 요청에 전체 curl
명령줄을 제공하는 "cURL로 복사" 옵션이 있습니다. --header …
세션 쿠키를 보내는 특정 옵션을 찾아 wget에 제공하십시오.