You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过脚本完成Web服务器认证并下载指定CSV文件?

需求与问题描述

需要实现无需打开浏览器,通过脚本完成Web服务器认证并下载指定文件,测试信息如下:

  • 登录地址:https://www.finanzen.net/anmelden
  • 用户名:jensleuscher@xmail.de(虚拟账号)
  • 密码:999Test%

浏览器操作流程:点击右上角用户图标选择'Musterdepots',找到'Musterdepot'对应的下载链接:https://www.finanzen.net/depot/depot_export_csv.asp?pkdepnr=19405034&intDepotTypId=1,复制到新标签页即可下载Finanzen.net-Musterdepot.csv。

尝试以下两种脚本均返回登录页面,未获取到目标CSV:

失败的cURL脚本

curl -X GET "https://www.finanzen.net/depot/depot_export_csv.asp?pkdepnr=19405034&intDepotTypId=1" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" -H "Accept-Language: de-DE,de;q=0.9" -H "Connection: keep-alive" -H "Upgrade-Insecure-Requests: 1" -H "DNT: 1" -H "Referer: https://www.finanzen.net/" -H "Cache-Control: max-age=0"

失败的PowerShell脚本

$username = "jensleuscher@xmail.de"
$password = "999Test%"
$URL="https://www.finanzen.net/depot/depot_export_csv.asp?pkdepnr=19405034&intDepotTypId=1"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(":$($password)"))
$response = Invoke-WebRequest -Method Get -uri $URL -Headers @{'Accept'='text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8';'Authorization'=("Basic {0}" -f $base64AuthInfo)}
$response.content > test.html

问题核心:未正确完成认证会话,网站通过Cookie维护登录状态,而非Basic认证,需先模拟登录获取有效会话Cookie,再请求下载链接。


解决方案

1. cURL实现方式

步骤说明

  • 先发送POST请求完成登录,将会话Cookie保存到本地文件
  • 使用保存的Cookie请求下载链接,保存CSV文件

完整脚本

# 第一步:登录并保存Cookie到cookie.txt
curl -c cookie.txt -X POST "https://www.finanzen.net/anmelden" \
  -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "email=jensleuscher@xmail.de&passwort=999Test%25&submit=Anmelden"

# 第二步:使用Cookie下载CSV文件
curl -b cookie.txt -o "Finanzen.net-Musterdepot.csv" "https://www.finanzen.net/depot/depot_export_csv.asp?pkdepnr=19405034&intDepotTypId=1"

注意:密码中的%需要URL编码为%25,否则会被curl解析为特殊字符。

2. PowerShell实现方式

步骤说明

  • 创建Invoke-WebRequest的会话对象,保持登录状态
  • 先发送登录请求,获取会话Cookie
  • 使用会话对象请求下载链接,保存CSV文件

完整脚本

$username = "jensleuscher@xmail.de"
$password = "999Test%"
$loginUrl = "https://www.finanzen.net/anmelden"
$downloadUrl = "https://www.finanzen.net/depot/depot_export_csv.asp?pkdepnr=19405034&intDepotTypId=1"
$outputFile = "Finanzen.net-Musterdepot.csv"

# 创建会话对象,用于保持Cookie
$session = New-Object Microsoft.PowerShell.Commands.WebRequestSession

# 发送登录请求,提交表单数据
$formData = @{
    email    = $username
    passwort = $password
    submit   = "Anmelden"
}
Invoke-WebRequest -Uri $loginUrl -Method Post -Body $formData -WebSession $session | Out-Null

# 使用会话对象下载CSV文件
Invoke-WebRequest -Uri $downloadUrl -WebSession $session -OutFile $outputFile

注意:PowerShell会自动处理URL编码,无需手动转义%。


内容的提问来源于stack exchange,提问作者jamacoe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:30:17