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

PHP通过CURL请求外部ASP表单获取数据失败求助

用cURL获取该ASP表单数据的可行方案

嘿,我帮你梳理下搞定这个ASP表单的思路——这类ASP驱动的站点,表单提交依赖会话状态和一堆隐藏字段,直接瞎POST肯定失败,咱们一步步来解决:

第一步:先抓初始页面的会话Cookie和隐藏参数

ASP站点第一次访问会给你分配ASPSESSIONID这类会话Cookie,同时页面里的表单藏着__VIEWSTATE、__VIEWSTATEGENERATOR、__EVENTVALIDATION这些必填参数,没它们服务器根本不认你的请求。

先用cURL把初始页面拉下来,顺便存好Cookie:

# 把Cookie存在cookies.txt,页面内容存到page.html方便后续提取参数
curl -c cookies.txt -o page.html https://www.dovera.sk/overenia/dlznici/zoznam-dlznikov

然后从page.html里扒那几个隐藏字段的值,用grep/awk就能搞定:

# 提取__VIEWSTATE
VIEWSTATE=$(grep -o '__VIEWSTATE" value="[^"]*' page.html | cut -d '"' -f 4)
# 提取__VIEWSTATEGENERATOR
VIEWSTATEGENERATOR=$(grep -o '__VIEWSTATEGENERATOR" value="[^"]*' page.html | cut -d '"' -f 4)
# 提取__EVENTVALIDATION
EVENTVALIDATION=$(grep -o '__EVENTVALIDATION" value="[^"]*' page.html | cut -d '"' -f 4)

第二步:构造完整的POST请求提交数据

现在带着刚才存的Cookie,加上提取到的隐藏参数,再填上你要查的36471224,就能构造出合法的请求了。注意:输入框和提交按钮的name要和页面源码里的完全一致(我大概猜了一个,你最好自己去浏览器开发者工具里确认):

curl -b cookies.txt -c cookies.txt -X POST \
  -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" \
  -d "__VIEWSTATE=$VIEWSTATE" \
  -d "__VIEWSTATEGENERATOR=$VIEWSTATEGENERATOR" \
  -d "__EVENTVALIDATION=$EVENTVALIDATION" \
  -d "ctl00$ContentPlaceHolder1$txtICO=36471224" \
  -d "ctl00$ContentPlaceHolder1$btnHladat=Hľadať" \
  https://www.dovera.sk/overenia/dlznici/zoznam-dlznikov

关键细节提醒:

  • 一定要确认输入框的name:打开浏览器F12,找到输入36471224的那个框,看它的name属性是什么,替换上面的ctl00$ContentPlaceHolder1$txtICO。
  • 提交按钮的name和值也要对应:比如按钮上的文字是“Hľadať”,那参数里的值也要和它一致。
  • 加上-A模拟浏览器UA:有些站点会拦截非浏览器的请求,加这个能避免被挡。

偷懒的小技巧

如果你嫌手动提取参数麻烦,直接用浏览器开发者工具抓包:

  1. 手动在页面输入36471224并提交
  2. 打开Network标签,找到提交的POST请求
  3. 右键请求 → 复制 → 复制为cURL(bash)
  4. 把复制出来的命令直接在终端跑,肯定能拿到结果,之后再根据需要把参数改成变量就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:18:07