问题

今天需要下载一个文件,通过浏览器下载下载到一般报网络异常,多次尝试仍不可行;使用百度云离线下载和迅雷下载均不可完成下载;因为是国外网站,想着就使用了vps通过命令行进行下载,然后通过vps转移过来,但是下载时遇到了些麻烦。

下载文件地址如下:

https://www.flashmagictool.com/download.html&d=13.10/FlashMagic.exe

明显可以观察到该地址不是直接的资源地址,附带有参数,直接下载,下载下来的会是download.html文件。

解决办法

curl -G -d 'd=13.10/FlashMagic.exe' -o FlashMagic.exe https://www.flashmagictool.com/download.html

观察http网址可知,该请求中包含参数字段,因此需要使用-d指明数据域来通知参数;但是浏览器访问时默认请求方式是GET,而curl附带-d字段默认请求方式是POST,因此需要使用-G指明GET请求方式;-o用以指明将得到的数据保存到的文件名;

或者

curl -v -L "https://www.flashmagictool.com/download.html&d=13.10/FlashMagic.exe" -o FlashMagic.exe

-v打印显示http交互的信息,便于理解交互过程;
-L含义

参考网址

  1. Why is curl truncating this query string?
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐