#!/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 request, parse response
html = HTMLParser(client.get(url).text)
# Store ASPX values
viewstategenerator = html.css_first("input#__VIEWSTATEGENERATOR").attributes['value']
eventvalidation = html.css_first("input#__EVENTVALIDATION").attributes['value']
viewstate = html.css_first("input#__VIEWSTATE").attributes['value']
# Fill form
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",
}
# Send form
response = client.post(url, data=formdata)
print(response.text)
# Respuesta esperada (suponiendo que se ingresa un número inválido):
# 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.
# Respuesta obtenida (como si nunca se hubiera enviado el número serial):
# Debe digitar el número de serie de su tarjeta
main()