通过遵循过多的重定向来下载文件

通过遵循过多的重定向来下载文件

我需要从这个网页下载一个apk,

https://www.apkmirror.com/apk/google-inc/youtube-music/youtube-music-5-46-52-release/youtube-music-5-46-52-2-android-apk-download/

这将重定向到另一个页面,然后开始下载。我想wget关注它并下载该特定文件。也尝试了有关堆栈溢出的旧解决方案,例如

curl -L -J -O 

wget --content-disposition and max redirect = 20

都试过了,没有下载该文件

我只想用它来做wget

答案1

像这样,到目前为止你添加的标签:

如果您没有真正的浏览器,服务器似乎会拒绝提供文件。只要绕过不太困难,这是一种更像浏览器那样实现下载的方法:

curl -A Mozilla/5.0 -k -L -b ~/.cache/mycurl.cookiejar \
-c ~/.cache/mycurl.cookiejar -s \
'https://www.apkmirror.com/wp-content/themes/APKMirror/download.php?id=4494773&key=9f9ed89d76339d3a888e036627a9f1c80fd64c35&forcebaseapk=true' \
-C - > 'com.google.android.apps.youtube.music_5.46.52-54652240_minAPI21(arm64-v8a)(nodpi)_apkmirror.com.apk'

说明

  • -A:模仿用户代理firefox
  • -b -c: 处理cookies
  • -L: 遵循重定向
  • -s: 静音模式
  • -C:如果下载中断则继续
  • -k:不安全模式(接受所有证书,甚至自动签名)

这是一个必须有的片段工具箱

这是我自己的 Curl 包装器:

#!/bin/bash

curl -A "Mozilla/5.0" -k -L -b ~/.cache/mycurl.cookiejar \
    -c ~/.cache/mycurl.cookiejar -s "$@" -C - && exit 0

retval=$?

case $retval in
    1)  echo >&2 "Unsupported protocol. This build of curl has no support for this protocol." ;;
    2)  echo >&2 "Failed to initialize." ;;
    3)  echo >&2 "URL malformed. The syntax was not correct." ;;
    4)  echo >&2 "A feature or option that was needed to perform the desired request was not enabled or was explicitly disabled at build-time. \
            To make curl able to do this, you  probably  need  another build of libcurl!" ;;
    5)  echo >&2 "Couldn't resolve proxy. The given proxy host could not be resolved." ;;
    6)  echo >&2 "Couldn't resolve host. The given remote host was not resolved." ;;
    7)  echo >&2 "Failed to connect to host." ;;
    8)  echo >&2 "FTP weird server reply. The server sent data curl couldn't parse." ;;
    9)  echo >&2 "FTP  access  denied.  The  server denied login or denied access to the particular resource or directory you wanted to reach. \
        Most often you tried to change to a directory that doesn't exist on the server." ;;
    11) echo >&2 "FTP weird PASS reply. Curl couldn't parse the reply sent to the PASS request." ;;
    13) echo >&2 "FTP weird PASV reply, Curl couldn't parse the reply sent to the PASV request." ;;
    14) echo >&2 "FTP weird 227 format. Curl couldn't parse the 227-line the server sent." ;;
    15) echo >&2 "FTP can't get host. Couldn't resolve the host IP we got in the 227-line." ;;
    17) echo >&2 "FTP couldn't set binary. Couldn't change transfer method to binary." ;;
    18) echo >&2 "Partial file. Only a part of the file was transferred." ;;
    19) echo >&2 "FTP couldn't download/access the given file, the RETR (or similar) command failed." ;;
    21) echo >&2 "FTP quote error. A quote command returned error from the server." ;;
    22) echo >&2 "HTTP page not retrieved. The requested url was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if -f, --fail is used." ;;
    23) echo >&2 "Write error. Curl couldn't write data to a local filesystem or similar." ;;
    25) echo >&2 "FTP couldn't STOR file. The server denied the STOR operation, used for FTP uploading." ;;
    26) echo >&2 "Read error. Various reading problems." ;;
    27) echo >&2 "Out of memory. A memory allocation request failed." ;;
    28) echo >&2 "Operation timeout. The specified time-out period was reached according to the conditions." ;;
    30) echo >&2 "FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command, try doing a transfer using PASV instead!" ;;
    31) echo >&2 "FTP couldn't use REST. The REST command failed. This command is used for resumed FTP transfers." ;;
    33) echo >&2 "HTTP range error. The range \"command\" didn't work." ;;
    34) echo >&2 "HTTP post error. Internal post-request generation error." ;;
    35) echo >&2 "SSL connect error. The SSL handshaking failed." ;;
    36) echo >&2 "FTP bad download resume. Couldn't continue an earlier aborted download." ;;
    37) echo >&2 "FILE couldn't read file. Failed to open the file. Permissions?" ;;
    38) echo >&2 "LDAP cannot bind. LDAP bind operation failed." ;;
    39) echo >&2 "LDAP search failed." ;;
    41) echo >&2 "Function not found. A required LDAP function was not found." ;;
    42) echo >&2 "Aborted by callback. An application told curl to abort the operation." ;;
    43) echo >&2 "Internal error. A function was called with a bad parameter." ;;
    45) echo >&2 "Interface error. A specified outgoing interface could not be used." ;;
    47) echo >&2 "Too many redirects. When following redirects, curl hit the maximum amount." ;;
    48) echo >&2 "Unknown option specified to libcurl. This indicates that you passed a weird option to curl that was passed on to libcurl and rejected. Read up in the manual!" ;;
    49) echo >&2 "Malformed telnet option." ;;
    51) echo >&2 "The peer's SSL certificate or SSH MD5 fingerprint was not OK." ;;
    52) echo >&2 "The server didn't reply anything, which here is considered an error." ;;
    53) echo >&2 "SSL crypto engine not found." ;;
    54) echo >&2 "Cannot set SSL crypto engine as default." ;;
    55) echo >&2 "Failed sending network data." ;;
    56) echo >&2 "Failure in receiving network data." ;;
    58) echo >&2 "Problem with the local certificate." ;;
    59) echo >&2 "Couldn't use specified SSL cipher." ;;
    60) echo >&2 "Peer certificate cannot be authenticated with known CA certificates." ;;
    61) echo >&2 "Unrecognized transfer encoding." ;;
    62) echo >&2 "Invalid LDAP URL." ;;
    63) echo >&2 "Maximum file size exceeded." ;;
    64) echo >&2 "Requested FTP SSL level failed." ;;
    65) echo >&2 "Sending the data requires a rewind that failed." ;;
    66) echo >&2 "Failed to initialise SSL Engine." ;;
    67) echo >&2 "The user name, password, or similar was not accepted and curl failed to log in." ;;
    68) echo >&2 "File not found on TFTP server." ;;
    69) echo >&2 "Permission problem on TFTP server." ;;
    70) echo >&2 "Out of disk space on TFTP server." ;;
    71) echo >&2 "Illegal TFTP operation." ;;
    72) echo >&2 "Unknown TFTP transfer ID." ;;
    73) echo >&2 "File already exists (TFTP)." ;;
    74) echo >&2 "No such user (TFTP)." ;;
    75) echo >&2 "Character conversion failed." ;;
    76) echo >&2 "Character conversion functions required." ;;
    77) echo >&2 "Problem with reading the SSL CA cert (path? access rights?)." ;;
    78) echo >&2 "The resource referenced in the URL does not exist." ;;
    79) echo >&2 "An unspecified error occurred during the SSH session." ;;
    80) echo >&2 "Failed to shut down the SSL connection." ;;
    82) echo >&2 "Could not load CRL file, missing or wrong format (added in 7.19.0)." ;;
    83) echo >&2 "Issuer check failed (added in 7.19.0)." ;;
    84) echo >&2 "The FTP PRET command failed" ;;
    85) echo >&2 "RTSP: mismatch of CSeq numbers" ;;
    86) echo >&2 "RTSP: mismatch of Session Identifiers" ;;
    87) echo >&2 "unable to parse FTP file list" ;;
    88) echo >&2 "FTP chunk callback reported error" ;;
     *) echo >&2 "Undocumented error" ;; 
esac

exit $retval

用法

Curl https://unexistantdomain.io
Couldn't resolve host. The given remote host was not resolved.

或者

Curl https://ifconfig.me/all.json | jq -r '.ip_addr'
1.1.1.1

相关内容