47 lines
1.9 KiB
Python
47 lines
1.9 KiB
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 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):
|
|
# <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>
|
|
|
|
# Respuesta obtenida (como si nunca se hubiera enviado el número serial):
|
|
# <span id="ctl00_certContents_lblErr" class="fieldErr"><font color="#C00000">Debe digitar el número de serie de su tarjeta</font></span>
|
|
|
|
main()
|