如何使用wget或curl在表单提交和302重定向后下载文件

如何使用wget或curl在表单提交和302重定向后下载文件,curl,wget,Curl,Wget,我正在尝试从命令行下载CSV文件。在表单字段中输入一张股票票据,单击下载,文件即被下载。以下是流程: 有问题的网站是 流程如下所示: 浏览至http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx 在表单字段中输入ticker,然后单击下载 将行动帖子发送至http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx 响应为302,位置标题设置为http://www.cboe.com/De

我正在尝试从命令行下载CSV文件。在表单字段中输入一张股票票据,单击下载,文件即被下载。以下是流程:

有问题的网站是

流程如下所示:

  • 浏览至
    http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx
  • 在表单字段中输入ticker,然后单击下载
  • 将行动帖子发送至
    http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx
  • 响应为302,位置标题设置为
    http://www.cboe.com/DelayedQuote/QuoteData.dat
  • 浏览器遵循重定向并获取
    http://www.cboe.com/DelayedQuote/QuoteData.dat
  • 浏览器下载
    QuoteData.dat
    这是我想要的CSV
  • 显示请求/响应的图片:

    Chrome的RestClient也显示了流程

    Wget遵循最初的302到QuoteData.dat URL,但在再次重定向之前不下载该文件

    我已经复制了标题和cookies,用于wget和curl,但没有成功。我从Chrome Inspector“复制为Curl”,但没有成功。我也曾尝试过casperjs,但我在curl和wget方面做得更进一步

    我现在有点痴迷于弄明白这一点:)任何帮助都将不胜感激

    更新:以下是我正在使用的wget命令:

    wget --post-file=cboe_form_data.txt -L http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx
    

    cboe\u form\u data.txt
    是从chrome inspector获取的post数据:
    http://sandalsoft.com/cboe_form_data.txt

    当您执行
    wget…/quottabledownload.aspx
    时,它将下载此aspx文件,对于../Quitedata.dat,wget将其视为外来文件(它们不在..../quottabledownload.aspx中),所以您需要--span主机开关。转到…./QuoteData.dat,此选项可能会有所帮助。:)

    该站点似乎需要
    引用者
    标题:

    wget --post-file=cboe_form_data.txt \
    --header='Referer: http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx' \
    http://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx
    
    使用此命令,“QuoteData.dat”
    GET
    请求将具有
    Referer
    标题。该请求的响应代码为
    200
    ,包含CSV


    Referer
    标题不存在时,“QuoteData.dat”
    GET
    请求返回code
    302
    和“对象移动”HTML页面。在这种情况下,客户端被发送回“QuoteTableDownload.aspx”。

    将重定向结果保存到某个文件中,然后对该文件调用curl-0?当然,这是假设重定向为您提供了文件的路径。如果不是,如果它沿着重定向执行文件,那么您需要在调用curl之前从头文件中获取它。无论哪种方式,我都会尝试将此作为两步问题。1) 获取文件路径2)下载它。我试过类似的方法。我已经运行了上面的wget命令,之后是指向重定向位置的wget。它不下载文件,只下载.asp页面。Wget不保存重定向的文件,它遵循302,然后是后续的302。没有下载.CSV。我尝试使用这些命令,但没有成功:
    wget--post file=cboe\u form\u data.txt-Lhttp://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx -v--保留会话cookies--保存cookies=cookies.txt--跨主机--用户代理=“Mozilla/4.0”
    wget--post file=cboe\u form\u data.txt-Lhttp://www.cboe.com/DelayedQuote/QuoteTableDownload.aspx -v--保留会话cookies--保存cookies=cookies.txt--跨主机--用户代理=“Mozilla/4.0”;wget--load cookies=cookies.txt--user agent=“Mozilla/4.0”http://www.cboe.com//DelayedQuote/QuoteData.dat --span hosts
    我正在使用表单数据(我想)就是这样,我不敢相信我错过了。非常感谢。