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

Python下载ASP.NET表单后文件:提交表单时序列号未被识别

问题:ASP.NET表单提交时序列号未被后端识别

我尝试在Linux Shell中用常规curl提交ASP.NET表单,未能成功;用Python编写的代码也遇到了同样的问题。

我的操作步骤:

  • 发送GET请求获取目标页面
  • 解析页面HTML,提取__VIEWSTATE、__VIEWSTATEGENERATOR和__EVENTVALIDATION这三个ASP.NET隐藏变量
  • 携带上述变量及表单所需的其他值,发送POST请求提交表单

当前Python代码

#!/usr/bin/env python
import httpx
from selectolax.parser import HTMLParser

client = httpx.Client()
url = "https://soportefirmadigital.com/sfdj/dl.aspx"
file = "ClientesLinux_DEB64_Rev25.zip"
desc = "Usuarios Linux (DEB 64bits)"
code = 1234

def main():
    # GET请求获取页面并解析
    html = HTMLParser(client.get(url).text)

    # 提取ASP.NET隐藏变量值
    viewstategenerator  = html.css_first("input#__VIEWSTATEGENERATOR").attributes['value']
    eventvalidation     = html.css_first("input#__EVENTVALIDATION").attributes['value']
    viewstate           = html.css_first("input#__VIEWSTATE").attributes['value']

    # 构造表单数据
    formdata = {
            "__EVENTTARGET": "ctl00$certContents$LinkButton3",
            "__EVENTARGUMENT": "",
            "__LASTFOCUS": "",
            "__VIEWSTATE": viewstate,
            "__VIEWSTATEGENERATOR": viewstategenerator,
            "__EVENTVALIDATION": eventvalidation,
            "ctl00$certContents$hiddenISO": file,
            "ctl00$certContents$hidden_ISO_URL": "-",
            "ctl00$certContents$ddlInstaladores": desc,
            "ctl00$certContents$txtDescripcion": "",
            "ctl00$certContents$txtSerialNumber": code,
            "ctl00$certContents$hiddenABID": "",
            "ctl00$certContents$chkConfirmo": "on",
            }

    # 提交表单
    response = client.post(url, data=formdata)
    print(response.text)

main()

预期错误结果

因为使用的是测试序列号,预期会返回无效序列号的提示:

...
<span id="ctl00_certContents_lblErr" class="fieldErr" style="color:#C00000;">Su tarjeta tiene un número inválido, o bien, no está registrada para soporte.  En caso de duda contacte a su Institución Emisora.</span>
...

实际错误结果

但实际返回的是要求输入序列号的提示,说明提交的序列号未被后端识别:

...
<span id="ctl00_certContents_lblErr" class="fieldErr"><font color="#C00000">Debe digitar el número de serie de su tarjeta</font></span>
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 00:35:33