验证后下载带有curl的文件

时间:2019-11-20 10:18:04

标签: shell curl web-scraping

目标

  1. 我正在尝试使用cURL来验证我的用户凭据到站点的身份,创建一个cookie罐来存储我的会话cookie。
  2. 然后使用该cookie尝试进行身份验证的第二阶段,即从下拉列表中选择一个帐户
  3. 我通过身份验证后便打算下载文件 基于以下示例中存在的扩展URL-要求我提供最新创建的cookie,因为为每个身份验证都创建了新的cookie。

工作手册代码

curl -s -S -O -J -L 'https://url/report/ajax-by-tag2?platform_id\[\]=7&id1=All&id2=&id3=&id4=All&id5=&id11=&id12=&id13=&date=2019-11-17&date_start=&date_end=&website=&zfTablePage=1&zfTableColumn=&zfTableOrder=desc&zfTableQuickSearch=&zfTableItemPerPage=100&zfTableDataTablesMaxRows=31&zfDetails=false&by_viewability=imps_givt&device_id\[\]=all&tag_type_id\[\]=all&support_id\[\]=all&zfTableItemPerPage=10000&zfTableExport=xlsx' -H 'Cookie: PHPSESSID=6m1d8327ucft8052f2gjv6nfdsg6'

手动下载文件时,会从网络面板收集以上内容。通过上面的curl,我可以从shell下载文件。这是通过在输入的末尾硬性说明cookie来实现的。


错误脚本

    #!bash/sh

    -eu

curl -u usr:pwd -c ./cookiejar 'https://url/auth'
curl 'https://url/auth/adminaccounts' -d account=729&Submit=Submit
curl -s -S -O -J -L -b ./cookiejar 'https://url/report/ajax-by-tag2?platform_id\[\]=7&id1=All&id2=&id3=&id4=All&id5=&id11=&id12=&id13=&date=2019-11-17&date_start=&date_end=&website=&zfTablePage=1&zfTableColumn=&zfTableOrder=desc&zfTableQuickSearch=&zfTableItemPerPage=100&zfTableDataTablesMaxRows=31&zfDetails=false&by_viewability=imps_givt&device_id\[\]=all&tag_type_id\[\]=all&support_id\[\]=all&zfTableItemPerPage=10000&zfTableExport=xlsx'

问题

  • 当我运行“手动代码”时,只要我的“ cookie”是我将其硬编码在URL末尾的“ -H”之后的最新会话中,便可以将文件下载到当前目录中。

  • 当我运行“错误脚本”时,似乎可以通过身份验证正常运行,选择帐户并转到下载部分的最后一行。但是,在运行下载网址时,它会弹出以下错误curl: (23) Failed writing body (0 != 11895)

已经查看了在线论坛,似乎表明磁盘空间不足,这在这里不应该是这样,因为它是一个小的excel文件。

任何反馈都非常感谢。

1 个答案:

答案 0 :(得分:1)

#!/bin/sh

set -eu

rm -f cookiejar ##deletes cookiejar file at the start, so no cookies are saved

curl -o /dev/null -s -S -L -f -c cookiejar 'https://url/auth/authenticate' -d name=usr-d passwd='pwd' ##supplies user creds

curl -o /dev/null -s -S -L -f -b cookiejar -c cookiejar 'https://url/auth/adminaccounts' -d account=23225 ##selects account

curl -s -S -L -O -J -f -b cookiejar -c cookiejar 'https://url/report/ajax-by-tag2?platform_id\[\]=7&id1=All&id2=&id3=&id4=All&id5=&id11=&id12=&id13=&date=2019-11-17&d$' ##downloads file