목표: 명령줄을 통해 공식 Win10_1909 iso를 Linux에 직접 다운로드합니다.
원천:https://www.microsoft.com/en-in/software-download/windows10ISO
에디션과 언어를 선택하면 다음과 같은 64비트 링크가 제공되며, 24시간 동안 유효합니다.
이것은 어떤 GUI 브라우저나 플랫폼에서도 잘 작동하지만 Linux 상자에는 필요합니다.
- Linux 서버는 당연히 GUI가 적습니다(GUI를 설치할 의도는 없습니다).
- wget/curl로 인해 HTML 파일 다운로드가 금지됩니다.
- wget/curl에서 사용자 에이전트를 Firefox로 변경하거나 사용자 정의 페이로드를 컬 -d '{"t": 77e897e2-a32c-419c-8f18-54770dbb5a15,"e": 1583942596,"h": 595f691df8f7e4088d24b6cc37077d1a}'로 추가하고 . iso 파일이 금지된 페이지를 반환합니다.
- aria 및 axel과 같은 Linux 기반 다운로드 관리자를 사용해도 실패합니다. 금지됨
명령줄을 통해서만 이를 수행하는 방법은 무엇입니까?
답변1
쉘에 의해 해석되는 URL에 특수 문자가 있기 때문에 금지됩니다. 예를 들어 '?'가 있습니다. 그리고 '&'. 이제 예시 URL을 살펴보세요.
컬 --location --remote-name https://software-download.microsoft.com/pr/Win10_1909_English_x64.iso?t=77395428-650e-4e5c-8bcc-97abca347eaa&e=1583937294&h=2b05fad63d3a6e2a0c4a20cb49f34e7c
이는 다음을 수행합니다.
- 실제로 다음을 수행하는 서브셸을 시작합니다.
컬 --location --remote-name https://software-download.microsoft.com/pr/Win10_1909_English_x64.iso?t=77395428-650e-4e5c-8bcc-97abca347eaa
- 변수 'e'에 값 '1583937294'가 할당된 하위 쉘을 시작합니다.
- 현재 쉘 환경에는 '2b05fad63d3a6e2a0c4a20cb49f34e7c' 값이 할당된 변수 'h'가 있습니다.
어떻게 고치나요? - 간단합니다. URL 주위에 작은따옴표를 추가하면 됩니다.
curl ---location ---lemote-name 'https://software-download.microsoft.com/pr/win10_1909_english_x64.iso?t=77395428-650e-4e5c-8bcc-97abca347eaa=15837294&h=2BO4440A40A40 49F34E7C '
답변2
마침내 해결책을 찾았는데 Firefox에는 확장 기능이 필요하지 않습니다.
받은 URL을 얻은 후 Firefox에서 새 탭을 열고 개발자 도구(F12)를 엽니다. 네트워크 탭으로 전환하고 다운로드 URL을 입력하세요. 다운로드하라는 메시지가 나타나면 취소를 누르세요.
이제 네트워크 아래에 GET 요청이 있습니다. 마우스 오른쪽 버튼을 클릭하고 선택합니다 Copy > Copy as cURL
. 이 대용량 문자열을 터미널에 붙여넣고 -o [/path/filename]
파일을 STDOUT에 덤프하는 대신 실제로 어딘가에 저장하려면 추가하세요. 그게 다야!
Chromium 기반 브라우저에서 "32비트 다운로드" 및 "64비트 다운로드 버튼"을 생성한 후 Microsoft 다운로드 페이지에서. 개발자 도구를 연 다음 네트워크 탭으로 전환합니다(비어 있어야 함). 32비트 또는 64비트 다운로드 버튼을 클릭하세요. 다른 이름으로 저장 대화상자가 표시되면 취소하세요. 네트워크 탭에 나열된 새 URL을 마우스 오른쪽 버튼으로 클릭하고,복사->컬로 복사
그런 다음 터미널 창에 붙여넣고 -o [/path/filename]
값을 추가합니다. (예 -o Win10_20H2_v2_English.iso
) 그러면 다운로드가 시작됩니다.
답변3
저는 Mido라는 전체 프로세스를 자동화하는 도구를 만들었습니다.