Come si può effettuare il download?I dati originali acquisiti nel browser 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^"
codice python modificato dall'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")
Automazione e scriptingDomanda: Come si può completare il download?jsl non funziona
Grazie Esperti!
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));
);
);
Domanda: Come si può completare il download?Cosa si aspetta JMP per l'argomento di Headers(...)? Credo che dovrebbe essere un array associativo, non un elenco.
JSL e Python hanno un uso quasi opposto di [] e {}; sono sicuro che l'intelligenza artificiale sarà sempre confusa.
Domanda: Come si può completare il download?Grazie Esperti!
Non ci sono riuscito quando ho usato il JSL che ero abituato a scrivere.Penso che ci sia un problema con l'elaborazione dei cookie.
Ma non so come affrontarla.Un esperto potrebbe darmi qualche consiglio?
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>
Domanda: Come si può completare il download?È difficile dirlo con certezza, ma non è consigliabile codificare il token in modo rigido.
In genere, quando si accede a un sito web che utilizza quel token csrf, se ne ottiene uno nuovo con ogni pagina web che contiene un modulo da compilare. A seconda della tecnologia del sito web, il token potrebbe essere parte delle intestazioni della richiesta o potrebbe essere incorporato nei dati del modulo inviati come post. Sembra che si stia eseguendo un get piuttosto che un post, quindi inserirlo nelle intestazioni ha senso. Se non lo si è aggiornato, probabilmente ne si sta utilizzando uno. È vecchio di circa un giorno ed è scaduto da tempo.Domanda: Come si può completare il download?Grazie Craig!
Quindi lo gestirò ancora chiamando il codice python con JSL
La libreria ChromiumPage in Python è in grado di ottenere automaticamente dati completi di acquisizione dei pacchetti e di scaricare senza problemi il contenuto delle pagine web.
Domanda: Come si può completare il download?Le intestazioni possono essere entrambe.
Se è un array associativo, esegue la seguente operazione:
chiave: valore
per te.
Ma poiché le chiavi non devono essere univoche in un argomento di intestazione, è anche possibile utilizzare un elenco con l'
chiave: valore
come elemento nell'elenco.
Domanda: Come si può completare il download?In genere non si utilizzano cookie lato client. I cookie vengono forniti dal server.
Domanda: Come si può completare il download?request = New HTTP Request(
URL( "https://cn.govopendata.com/xinwenlianbo/20250422/" ),
Method( "GET" )
);
html = request << download("$TEMP/govopendata.html");
Web(html);
Questo scaricherà e aprirà la pagina web
Domanda: Come si può completare il download?Grazie Esperti!
GET https://cn.govopendata.com/xinwenlianbo/20250422/
schannel: next InitializeSecurityContext failed: CRYPT_E_REVOCATION_OFFLINE (0x80092013)
Domanda: Come si può completare il download?Ma questo indirizzo web può essere aperto in un browser
Domanda: Come si può completare il download?Sembra che tu abbia problemi con i certificati. I certificati dovrebbero essere gestiti da un server e non da un client, anche se alcune aziende _installano_ certificati locali.
Per questo errore puoi fare:
request = New HTTP Request(
URL( "https://cn.govopendata.com/xinwenlianbo/20250422/" ),
Method( "GET" ),
Verify SSL( "false" )
);
html = request << download("$TEMP/govopendata.html");
Web(html);
Questo è l'equivalente dell'opzione --ssl-no-revoke di curl