#!/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()