컬 wget을 사용하여 대화형 http 사이트에서 Linux 셸의 파일을 다운로드합니다.

컬 wget을 사용하여 대화형 http 사이트에서 Linux 셸의 파일을 다운로드합니다.

wget 및 컬을 사용하여 Linux 셸에서 HTTP 웹 사이트의 파일을 다운로드하려고 합니다.

이를 수행하기 위한 수동 GUI 프로세스는 다음과 같습니다.

  1. 일단 클릭하면링크 A, 다른 URL을 가진 다른 웹페이지로 리디렉션됩니다.(우리는 이를 Link-B라고 부릅니다) . 웹페이지 아래에는 항목 목록이 있는 텍스트 상자가 있습니다.

  2. 그런 다음 텍스트 상자에 문자열을 입력하여 그 아래의 이름 목록을 필터링하고 아래의 항목 하나만으로 범위를 좁힌 다음 해당 항목을 클릭하면 다른 URL이 있는 다른 웹페이지로 리디렉션됩니다.(우리는 이를 Link-C라고 부릅니다)

  3. 이 웹페이지에서 내 사용자 이름과 비밀번호를 입력하고 "제출"을 클릭하면 다음 페이지로 돌아갑니다.링크 A하지만 이제는 파일을 다운로드할 수 있는 다운로드 가능한 파일 목록이 있습니다.

컬이나 wget과 같은 도구를 사용하여 GUI 대신 명령줄을 사용하여 파일을 다운로드하려고 합니다. --user 및 --ask-pass와 함께 wget을 사용해 보았지만 LinkB의 웹 페이지만 다운로드하고 파일 자체에 액세스할 수 없었습니다. 누구든지 해결책을 제안할 수 있습니다. 미리 감사드립니다.

답변1

나는 다음과 같은 방법으로 이 작업을 수행할 수 있었는데, 이는 내 경우에 특정한 것이며 각 시나리오마다 다를 수 있습니다.

먼저 인증 토큰을 요청하세요.

uri_token="https://xxx.yy/TokenURI"
body="grant_type=password&username=user1&password=password1"  
curl -s -X POST -d $body -H "Content-Type: Text" $uri_token

그런 다음 헤더에 있는 토큰을 사용하여 파일 ID 목록을 얻었습니다.

uri_get_list="https://xxx.yy/FileSearchParameter
headers="Authorization: Bearer $token"
curl -s -X GET -H "$headers" $uri_get_list

그런 다음 FILE ID를 사용하여 파일 다운로드를 위한 작업 ID를 요청합니다.

uri_request=https://xxx.yy/requestapi
body=$(echo \"$FILE_ID\")
headers="Authorization: Bearer $token"
JobID=$(curl -s $uri_request -X POST -H "$headers" -H "Content-Type: application/json" -d [$body]

그런 다음 이전 단계에서 얻은 작업 ID를 사용하여 파일을 다운로드합니다.

uri_download="https://xxx.yy/jobid/"$JobID"
headers="Authorization: Bearer $token"
curl $uri_download -X GET -H "$headers" -o /file/path/to/downloaded

관련 정보