난 이해가 안 돼요...
실제 다운로드 링크는 http 링크가 아닌, 일부 Javascript 작업인 것 같습니다.
javascript:SendFileDownloadCall('PRODIMAGES.CIF.zip','PRODIMAGES.CIF.zip');
그래서 수동으로 다운로드한 후 브라우저의 다운로드 내역에 가서 직접 링크를 복사했습니다. https://au.ingrammicro.com/_layouts/CommerceServer/IM/FileDownload.aspx?DisplayName=STD_FULL_FILEFEED.TXT&FileName=STDPRICE_FULL.TXT.zip
내 웹사이트 자격 증명과 함께 URL을 wget에 입력했습니다.
wget -q --user=XXXX --password=XXXX "https://au.ingrammicro.com/_layouts/CommerceServer/IM/FileDownload.aspx?DisplayName=STD_FULL_FILEFEED.TXT&FileName=STDPRICE_FULL.TXT.zip" -o STDPRICE.zip
나중에 --user 및 --password를 추가해도 아무런 차이가 없다는 것을 알았으므로 생략했습니다.
[root@server datafiles]# wget "https://au.ingrammicro.com/_layouts/CommerceServer/IM/FileDownload.aspx?DisplayName=STD_FULL_FILEFEED.TXT&FileName=STDPRICE_FULL" -O STDPRICE.zip
--2019-09-15 19:53:29-- https://au.ingrammicro.com/_layouts/CommerceServer/IM/FileDownload.aspx?DisplayName=STD_FULL_FILEFEED.TXT&FileName=STDPRICE_FULL
Resolving au.ingrammicro.com (au.ingrammicro.com)... 104.98.45.15
Connecting to au.ingrammicro.com (au.ingrammicro.com)|104.98.45.15|:443... connected.
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: /_layouts/CommerceServer/IM/Login.aspx?ReturnUrl=%2f_layouts%2fCommerceServer%2fIM%2fFileDownload.aspx%3fDisplayName%3dSTD_FULL_FILEFEED.TXT%26FileName%3dSTDPRICE_FULL [following]
--2019-09-15 19:53:29-- https://au.ingrammicro.com/_layouts/CommerceServer/IM/Login.aspx?ReturnUrl=%2f_layouts%2fCommerceServer%2fIM%2fFileDownload.aspx%3fDisplayName%3dSTD_FULL_FILEFEED.TXT%26FileName%3dSTDPRICE_FULL
Reusing existing connection to au.ingrammicro.com:443.
HTTP request sent, awaiting response... 200 OK
Length: 85341 (83K) [text/html]
Saving to: ‘STDPRICE.zip’
100%[===================================================================================================================================================================================================>] 85,341 405KB/s in 0.2s
2019-09-15 19:53:30 (405 KB/s) - ‘STDPRICE.zip’ saved [85341/85341]
어쨌든 웹 사이트에서 수동으로 클릭하고 다운로드하여 얻을 수 있는 것과 동등한 것을 얻는 대신 믿을 수 없을 만큼 작은 파일을 얻습니다.
내 두려움을 확인하면서 압축을 풀려고 하면 다음과 같은 결과가 나타납니다.
$ [root@server datafiles]# unzip STDPRICE.zip
Archive: STDPRICE.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of STDPRICE.zip or
STDPRICE.zip.zip, and cannot find STDPRICE.zip.ZIP, period.
파일 확인:
$ [root@server datafiles]# file STDPRICE.zip
STDPRICE.zip: HTML document, UTF-8 Unicode text, with very long lines, with CRLF line terminators
그러면 wget은 실제로 파일로 표시된 HTML 파일을 다운로드합니까 .txt.zip
? 누군가 나를 깨달을 수 있습니까?
답변1
웹사이트가 로그인 페이지로 리디렉션됩니다:
HTTP request sent, awaiting response... 302 Moved Temporarily
Location: /_layouts/CommerceServer/IM/Login.aspx?ReturnUrl=%2f_layouts%2fCommerceServer%2fIM%2fFileDownload.aspx%3fDisplayName%3dSTD_FULL_FILEFEED.TXT%26FileName%3dSTDPRICE_FULL [following]
--2019-09-15 19:53:29-- https://au.ingrammicro.com/_layouts/CommerceServer/IM/Login.aspx?ReturnUrl=%2f_layouts%2fCommerceServer%2fIM%2fFileDownload.aspx%3fDisplayName%3dSTD_FULL_FILEFEED.TXT%26FileName%3dSTDPRICE_FULL
기본 인증(wget이 보내는 인증)으로 제공한 자격 증명을 수락하지 않고 대신 세션 쿠키를 사용할 수 있습니다. 로그인한 경우 브라우저에서 쿠키를 추출하고 --load-cookies
wget()을 사용하여 보낼 수 있습니다. 또한 수정하려고 시도할 수 있는 요청의 다른 측면(예: 사용자 에이전트)에 중점을 둘 수도 있습니다.
대신 컬을 사용할 수 있는 경우 검사기( Ctrl+Shift+I
)를 열고 네트워크 탭으로 이동하여 파일을 다운로드하고 요청 목록에서 다운로드 항목을 마우스 오른쪽 버튼으로 클릭한 다음 "복사" 위에 마우스를 놓고 "cURL로 복사"를 선택합니다. 명령은 다음과 같습니다. 이제 클립보드에 쿠키가 포함됩니다.