¿Cómo se puede completar la descarga de esto?Los datos originales capturados en el navegador F12
curl ^"https://cn.govopendata.com/xinwenlianbo/20250422/^" ^
-H ^"accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7^" ^
-H ^"accept-language: zh-CN,zh;q=0.9^" ^
-H ^"cache-control: max-age=0^" ^
-b ^"csrftoken=pNwjIMIrOOrnBe4GHTApOViIeNRBWwtI; _ga=GA1.1.239242113.1753140858; FCNEC=^%^5B^%^5B^%^22AKsRol_7sr_jz8BXh0YeUEUR5mSy1qL4wfsfs9XfmUOOzlIdLMJvsfgol4pcXisr7VbaTJZwRTrVSw8GGMEaAamWDh9LSXIxXj9O5k3V0EkilBGqe15w6DSZ4BceMdE4r1jUJZWTKbEm3STkdLujOfq755fcOqJP5A^%^3D^%^3D^%^22^%^5D^%^5D; _clck=1wdxmr4^%^7C2^%^7Cfxt^%^7C0^%^7C2029; _ga_7NESVRSV0K=GS2.1.s1753185097^$o3^$g1^$t1753186048^$j60^$l0^$h0; _clsk=nb3rgu^%^7C1753186048890^%^7C5^%^7C1^%^7Cv.clarity.ms^%^2Fcollect; __gads=ID=335a8fb772d726f1:T=1753140847:RT=1753186047:S=ALNI_MYKyblOPT3WE9PIgjHdPtYlQdN2wQ; __gpi=UID=0000116b9b56a5c8:T=1753140847:RT=1753186047:S=ALNI_Mb_sdW8WlGVmWp2SQ0U3v9G7fppFg; __eoi=ID=f8abc10bf0356803:T=1753140847:RT=1753186047:S=AA-Afjazt5ToEHQpkDn9PtsRpGnn^" ^
-H ^"priority: u=0, i^" ^
-H ^"referer: https://cn.govopendata.com/xinwenlianbo/?page=13^" ^
-H ^"sec-ch-ua: ^\^"Not)A;Brand^\^";v=^\^"8^\^", ^\^"Chromium^\^";v=^\^"138^\^", ^\^"Google Chrome^\^";v=^\^"138^\^"^" ^
-H ^"sec-ch-ua-mobile: ?0^" ^
-H ^"sec-ch-ua-platform: ^\^"Windows^\^"^" ^
-H ^"sec-fetch-dest: document^" ^
-H ^"sec-fetch-mode: navigate^" ^
-H ^"sec-fetch-site: same-origin^" ^
-H ^"sec-fetch-user: ?1^" ^
-H ^"upgrade-insecure-requests: 1^" ^
-H ^"user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36^"
Código de Python modificado por IA:
import requests
from pathlib import Path
url = "https://cn.govopendata.com/xinwenlianbo/20250721/"
headers = {
"sec-ch-ua": '"Not A;Brand";v="8", "Chromium";v="138", "Google Chrome";v="138"',
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-language": "zh-CN,zh;q=0.9",
"cache-control": "max-age=0",
"referer": "https://cn.govopendata.com/xinwenlianbo/20250721/",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "same-origin",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"
}
cookies = {
"csrftoken": "pNwjIMIrOOrnBe4GHTApOViIeNRBWwtI",
"__gads": "ID=335a8fb772d726f1:T=1753140847:RT=1753140847:S=ALNI_MYKyblOPT3WE9PIgjHdPtYlQdN2wQ",
"__gpi": "UID=0000116b9b56a5c8:T=1753140847:RT=1753140847:S=ALNI_Mb_sdW8WlGVmWp2SQ0U3v9G7fppFg",
"__eoi": "ID=f8abc10bf0356803:T=1753140847:RT=1753140847:S=AA-Afjazt5ToEHQpkDn9PtsRpGnn",
"_ga": "GA1.1.239242113.1753140858",
"FCNEC": '[[\"AKsRol_lyJVKvuPII10tMMWp3m_gh6UZiJ9Iej1Qg7VnR8bSTCnrLKTYNiQpPvEtsQkWDDlJCXxFJLurwTgZhoOiDfPe8XWxbQiQxlkfi3r7qGSPUlSTQyiBCTOpkIxy1RVLbQtVFHCYXz9FGzaWXlOp1l-wGib7Gg==\"]]',
"_ga_7NESVRSV0K": "GS2.1.s1753140857$o1$g1$t1753140966$j39$l0$h0"
}
with requests.Session() as s:
resp = s.get(url, headers=headers, cookies=cookies, timeout=10)
resp.raise_for_status()
resp.encoding = resp.apparent_encoding
Path("xinwenlianbo_20250721.html").write_text(resp.text, encoding="utf-8")
Automatización y scriptingPregunta: ¿Cómo se puede completar la descarga de esto?jsl no funciona
¡Gracias expertos!
u = "https://cn.govopendata.com/xinwenlianbo/20250721/";
cookie_str = "csrftoken=pNwjIMIrOOrnBe4GHTApOViIeNRBWwtI; __gads=ID=335a8fb772d726f1:T=1753140847:RT=1753140847:S=ALNI_MYKyblOPT3WE9PIgjHdPtYlQdN2wQ; __gpi=UID=0000116b9b56a5c8:T=1753140847:RT=1753140847:S=ALNI_Mb_sdW8WlGVmWp2SQ0U3v9G7fppFg; __eoi=ID=f8abc10bf0356803:T=1753140847:RT=1753140847:S=AA-Afjazt5ToEHQpkDn9PtsRpGnn; _ga=GA1.1.239242113.1753140858; FCNEC=[[\!"AKsRol_lyJVKvuPII10tMMWp3m_gh6UZiJ9Iej1Qg7VnR8bSTCnrLKTYNiQpPvEtsQkWDDlJCXxFJLurwTgZhoOiDfPe8XWxbQiQxlkfi3r7qGSPUlSTQyiBCTOpkIxy1RVLbQtVFHCYXz9FGzaWXlOp1l-wGib7Gg==\!" ]]; _ga_7NESVRSV0K=GS2.1.s1753140857$o1$g1$t1753140966$j39$l0$h0";
headers = {
"Cookie: " || cookie_str,
"sec-ch-ua: \!"Not A;Brand\!" ;v=\!"8\!" , \!"Chromium\!" ;v=\!"138\!" , \!"Google Chrome\!" ;v=\!"138\!"",
"accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-language: zh-CN,zh;q=0.9",
"cache-control: max-age=0",
"referer: https://cn.govopendata.com/xinwenlianbo/20250721/",
"sec-ch-ua-mobile: ?0",
"sec-ch-ua-platform: \!"Windows\!"",
"sec-fetch-dest: document",
"sec-fetch-mode: navigate",
"sec-fetch-site: same-origin",
"sec-fetch-user: ?1",
"upgrade-insecure-requests: 1",
"user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36"
};
try(
rs = New HTTP Request(URL(u), Method("GET"), Headers(headers));
rr = rs << Send();
status = rr << GetStatusCode();
If(status == 200,
body = rr << GetBody();
txt = Blob To Char(body, "UTF-8");
Write File("xinwenlianbo_20250721.html", txt);
,
Show("Error: Status Code = " || Char(status));
);
);
Pregunta: ¿Cómo se puede completar la descarga de esto?¿Qué espera JMP para el argumento de Headers(...)? Creo que debería ser una matriz asociativa, no una lista.
JSL y Python tienen un uso casi opuesto de [] y {}; estoy seguro de que la IA siempre estará confundida.
Pregunta: ¿Cómo se puede completar la descarga de esto?¡Gracias expertos!
No tuve éxito cuando usé el JSL con el que estaba acostumbrado a escribir.Creo que es un problema con el procesamiento de las cookies.
Pero no sé cómo lidiar con eso.¿Podría algún experto ofrecerme orientación?
h=[=>]; u="https://cn.govopendata.com/xinwenlianbo/20250422/";
h["accept"]="text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
h["accept-language"]="zh-CN,zh;q=0.9";
h["cache-control"]="max-age=0";
h["cookies"]="csrftoken=pNwjIMIrOOrnBe4GHTApOViIeNRBWwtI; _ga=GA1.1.239242113.1753140858; FCNEC=%5B%5B%22AKsRol_7sr_jz8BXh0YeUEUR5mSy1qL4wfsfs9XfmUOOzlIdLMJvsfgol4pcXisr7VbaTJZwRTrVSw8GGMEaAamWDh9LSXIxXj9O5k3V0EkilBGqe15w6DSZ4BceMdE4r1jUJZWTKbEm3STkdLujOfq755fcOqJP5A%3D%3D%22%5D%5D; _clck=1wdxmr4%7C2%7Cfxt%7C0%7C2029; _ga_7NESVRSV0K=GS2.1.s1753185097$o3$g1$t1753186048$j60$l0$h0; _clsk=nb3rgu%7C1753186048890%7C5%7C1%7Cv.clarity.ms%2Fcollect; __gads=ID=335a8fb772d726f1:T=1753140847:RT=1753186047:S=ALNI_MYKyblOPT3WE9PIgjHdPtYlQdN2wQ; __gpi=UID=0000116b9b56a5c8:T=1753140847:RT=1753186047:S=ALNI_Mb_sdW8WlGVmWp2SQ0U3v9G7fppFg; __eoi=ID=f8abc10bf0356803:T=1753140847:RT=1753186047:S=AA-Afjazt5ToEHQpkDn9PtsRpGnn";
h["priority"]="u=0, i";
h["referer"]="https://cn.govopendata.com/xinwenlianbo/?page=13";
h["sec-ch-ua"]="\!"Not)A;Brand\!";v=\!"8\!", \!"Chromium\!";v=\!"138\!", \!"Google Chrome\!";v=\!"138\!"";
h["sec-ch-ua-mobile"]="?0";
h["sec-ch-ua-platform"]="\!"Windows\!"";
h["sec-fetch-dest"]="document";
h["sec-fetch-mode"]="navigate";
h["sec-fetch-site"]="same-origin";
h["sec-fetch-user"]="?1";
h["upgrade-insecure-requests"]="1";
h["user-agent"]="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36";
try(rs=New HTTP Request(URL(u),Method("GET"),Headers(h)));try(rr=rs<
<SEND></SEND>
<P class="_tgt transPara grammarSection"> </P>
Pregunta: ¿Cómo se puede completar la descarga de esto?Es difícil decirlo con certeza, pero no conviene codificar el token.
Generalmente, al iniciar sesión en un sitio web que usa ese token CSRF, se obtiene uno nuevo con cada página que contiene un formulario que se puede completar. Dependiendo de la tecnología del sitio web, el token puede formar parte de los encabezados de la solicitud o estar incrustado en los datos del formulario enviado como publicación. Parece que se está realizando una obtención en lugar de una publicación, por lo que es lógico incluirlo en los encabezados. Si no lo has actualizado, probablemente estés usando uno. Tiene aproximadamente un día de antigüedad y está caducado.Pregunta: ¿Cómo se puede completar la descarga de esto?¡Gracias Craig!
Luego seguiré manejándolo llamando al código de Python con JSL
La biblioteca ChromiumPage en Python puede obtener automáticamente datos completos de captura de paquetes y descargar sin problemas el contenido de las páginas web.
Pregunta: ¿Cómo se puede completar la descarga de esto?Los encabezados pueden ser cualquiera de los dos.
Si es una matriz asociativa, hace lo siguiente:
clave: valor
para ti.
Pero como las claves no tienen que ser únicas en un argumento de encabezado, también puedes usar una lista con la
clave: valor
como un elemento de la lista.
Pregunta: ¿Cómo se puede completar la descarga de esto?Generalmente tampoco se utilizan cookies del lado del cliente. Las cookies las proporciona el servidor.
Pregunta: ¿Cómo se puede completar la descarga de esto?request = New HTTP Request(
URL( "https://cn.govopendata.com/xinwenlianbo/20250422/" ),
Method( "GET" )
);
html = request << download("$TEMP/govopendata.html");
Web(html);
Esto descargará y abrirá la página web.
Pregunta: ¿Cómo se puede completar la descarga de esto?¡Gracias expertos!
GET https://cn.govopendata.com/xinwenlianbo/20250422/
schannel: next InitializeSecurityContext failed: CRYPT_E_REVOCATION_OFFLINE (0x80092013)
Pregunta: ¿Cómo se puede completar la descarga de esto?Pero esta dirección web se puede abrir en un navegador.
Pregunta: ¿Cómo se puede completar la descarga de esto?Parece que tienes problemas con los certificados. Se supone que los certificados deben ser manejados por un servidor y no por un cliente, aunque algunas empresas _sí_ instalan certificados locales.
Para ese error puedes hacer:
request = New HTTP Request(
URL( "https://cn.govopendata.com/xinwenlianbo/20250422/" ),
Method( "GET" ),
Verify SSL( "false" )
);
html = request << download("$TEMP/govopendata.html");
Web(html);
Este es el equivalente de la opción --ssl-no-revoke de curl