如何使用Invoke-WebRequest下载登录后的文件?

时间:2019-04-05 20:58:57

标签: curl invoke-webrequest

我想从供应商的网站上自动下载数据库,以便我们可以附加到PowerBi。

从历史上看,我没有做太多的脚本编写或编程工作,因此我在为使该脚本正确下载此zip文件而付出了一些努力。我已经尝试过多次编写代码,但是每次我得到的消息都是“身份验证失败”或“登录信息无效”,即使我可以使用完全相同的凭据并直接登录到该站点。

如前所述,我尝试了几种方法来实现下载此文件的目标。我可以在代码部分列出我尝试过的选项,这些选项似乎效果最好,但是可以接受任何建议,也可以根据需要进行重写,您是专家。

第一次尝试

敏感信息已被删除

Invoke-WebRequest -Uri "url_that_points_directly_to_download.zip" -OutFile "C:\Users\localuser\database" -Credential $Credentials

注释


通过这种尝试,我能够在PS命令外壳中下载没有错误的文件,这令人鼓舞,直到我打开下载的文件。只是HTML代码说“错误-未经授权”。在文档的更下方,有一个警报“您的会话已过期。请重新登录。”


第二次尝试

敏感信息已被修改或更改

$azr = Invoke-WebRequest -uri "url_that_points_to_login_page" -SessionVariable sbs
$azr
$sbs
$dbForm = $azr.Forms[0]
$dbform
$dbform.fields

$dbform.fields["UserName"]="user"
$dbform.fields["Password"]="pass"

$r = Invoke-WebRequest -uri ("url_that_points_to_login_page") -WebSession $sbv -Method Post -Body $dbForm.Fields

注释


此代码是通过YouTube上的教程找到的。我喜欢它一步一步显示出像我这样的菜鸟。在他的示例中,当运行命令时,他显示了“ Request_Verification_Token”,而我的却没有。我认为是因为它的网站不同。

我已经逐步完成了这一步。到达最后一行后,会弹出一个窗口,提示“指定的登录信息无效”。如果我按OK,一切正常。但是,如果我跑去查看该页面,则可以看到显示“ popUpMessage(“指定的登录信息无效。”)以及有关Cookie和表格格式的其他信息的HTML代码。我什至没有弄清楚下载内容此代码的一部分。


第三次尝试-这次使用curl命令

敏感信息已被修改或更改

curl -u user:pass url_that_points_to_download.zip -o "C:\Users\localuser\database"

注释


类似于尝试1我可以在PS命令外壳中下载没有错误的文件,这令人鼓舞,直到我打开下载的文件。只是HTML代码说“错误-未经授权”。在文档的更下方,有一个警报“您的会话已过期。请重新登录。”


最后,我希望能够使用已经开始的调整代码登录或下载zip文件,或者通过更好地了解所需内容重新开始。

0 个答案:

没有答案
相关问题