Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.No soy un usuario de VB, pero parece que debería funcionar en JMP usando 3 newHttpRequests.
Las tres secciones del código de VB terminan con ".send".
La primera sección va a una página de inicio de sesión. No estoy seguro de por qué eso podría ser necesario ... no le da la cookie, pero es posible que deba visitarlo primero.
La segunda sección envía post_data a una URL que le dará una cookie que significa que ha iniciado sesión.
La httprequest de JMP puede conservar esos datos por usted. O es posible que deba decirle a httprequest que lo escriba en un archivo y luego lo extraiga del archivo.
El (2) obtiene el valor de la cookie de algún tipo de estructura VB.
La tercera sección utiliza la URL para obtener algunos datos y proporciona la cookie como su credencial. JMP puede hacer eso por usted.
// get a cookie
try(deletefile("$temp/cookie.txt"));
s = New HTTP Request(
URL( "http://httpbin.org/cookies/set/aaa/bbb" ),
Method( "GET" ),
Headers( {"Accept: application/json", "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"} ),
cookiefile("$temp/cookie.txt")
);
data = s << Send;
show(loadtextfile("$temp/cookie.txt"));
// send a cookie
s = New HTTP Request(
URL( "http://httpbin.org/cookies" ),
Method( "GET" ),
Headers( {
"Accept: application/json",
"Cookie: PHPSESSID=298zf09hf012fh2; csrftoken=u32t4o3tb3gg43; _gat=1",
"User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:99.0) Gecko/20100101 Firefox/99.0"
} )
);
data = s << Send;
Show( data ); // note the aaa cookie was persisted
Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.
Lo he intentado muchas veces, pero no hay forma de iniciar sesión directamente y descargar los datos completos.
Encontré un código de Python en Internet, pero aún así no funcionó.

Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.class AllcontentSpider(scrapy.Spider):
name = 'allcontent'
headers = {
'Host': 'www.jisilu.cn', 'Connection': 'keep-alive', 'Pragma': 'no-cache',
'Cache-Control': 'no-cache', 'Accept': 'application/json,text/javascript,*/*;q=0.01',
'Origin': 'https://www.jisilu.cn', 'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/67.0.3396.99Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8',
'Referer': 'https://www.jisilu.cn/login/',
'Accept-Encoding': 'gzip,deflate,br',
'Accept-Language': 'zh,en;q=0.9,en-US;q=0.8'
}
def start_requests(self):
login_url = 'https://www.jisilu.cn/login/'
headers = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip,deflate,br', 'Accept-Language': 'zh,en;q=0.9,en-US;q=0.8',
'Cache-Control': 'no-cache', 'Connection': 'keep-alive',
'Host': 'www.jisilu.cn', 'Pragma': 'no-cache', 'Referer': 'https://www.jisilu.cn/',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/67.0.3396.99Safari/537.36'}
yield Request(url=login_url, headers=headers, callback=self.login,dont_filter=True)
def login(self, response):
url = 'https://www.jisilu.cn/account/ajax/login_process/'
data = {
'return_url': 'https://www.jisilu.cn/',
'user_name': config.username,
'password': config.password,
'net_auto_login': '1',
'_post_type': 'ajax',
}
yield FormRequest(
url=url,
headers=self.headers,
formdata=data,
callback=self.parse,
dont_filter=True
)
def parse(self, response):
for i in range(1,3726):
focus_url = 'https://www.jisilu.cn/home/explore/sort_type-new__day-0__page-{}'.format(i)
yield Request(url=focus_url, headers=self.headers, callback=self.parse_page,dont_filter=True)
def parse_page(self, response):
nodes = response.xpath('//div[@class="aw-question-list"]/div')
for node in nodes:
each_url=node.xpath('.//h4/a/@href').extract_first()
yield Request(url=each_url,headers=self.headers,callback=self.parse_item,dont_filter=True)
def parse_item(self,response):
item = JslItem()
title = response.xpath('//div[@class="aw-mod-head"]/h1/text()').extract_first()
s = response.xpath('//div[@class="aw-question-detail-txt markitup-box"]').xpath('string(.)').extract_first()
ret = re.findall('(.*?)\.donate_user_avatar', s, re.S)Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.Esto está más allá del alcance de este foro. Quizás el sitio proporcione una API para lo que desea hacer.
Creo que el sitio usa javascript para ayudar a verificar que haya iniciado sesión correctamente.JMP no ejecuta javascript.
El captcha puede ser parte del problema y puede requerir interacción humana.
Si el nombre de usuario o la contraseña contienen caracteres especiales, necesitará algún tipo de codificación.
El código de error 413 podría significar que algo más está mal.
Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.Por favor, perdone mi insistencia.
Sigo tratando este tema.
Se encuentra que este método puede iniciar sesión a través de un script, y no hay aviso de falla de inicio de sesión.
Pero todavía no voy a analizar lo que hay en él.
¡Gracias!

Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.
Char To Blob( "~1F~8B~08~00~00~00~00~00~00~03~ABVJ~CEOIU~B2214~D6Q~CA-NW~B2Rz~BEg~D7~D3~0D~13~9FOY~F1~ACc~FB~D3~09~BD~CF:~A6=~ED_~FCd~F7~12%~1D~A5~94~C4~92D%~ABj~A5~E4~C4~82~92~E4~0C 3~AF4'~A7~B6~16~00x&~D1~03E~00~00~00", "ascii~hex" )
Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.
kbz_newcookie=1; kbzw__user_login=7Obd08_P1ebax9aXwZKsmLCuprCTpYKvpuXK7N_u0ejF1dSeq8WhwtappqDaotqYq8TYqNStwtSapKusy6rNp8euxa-YrqXW2cXS1qCasZypl6iZmLKgzaLOvp_G5OPi2OPDpZalp5OguNnP2Ojs3Jm6y4Ksj6iyk8-wx5eoopWq6dzjx83G2cLc7JCllKunqJ-ZlMKqyq7Do5PkytvGlMDazOTboIK5yenm4N2Qp5miqaOcspyrkKeRr5fG2cfR092oqpywmqqY; kbzw__Session=mnijj070u2h083ms7ouuah9b22; Hm_lvt_164fe01b1433a19b507595a43bf58262=1652962728,1652966374,1653359409,1653375276; Hm_lpvt_164fe01b1433a19b507595a43bf58262=1653375282
Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.Sí, creo que el sitio web depende de JavaScript para parte de su seguridad. Creo que querrá ver la otra publicación de blog sobre el uso de Selenium. De esa manera, puede crear un script en un navegador existente que funcione desde jmp.Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.Gracias Craig!
Ya veo. Eso es todo.
Desafortunadamente, no tengo Python instalado en mi computadora y no he instalado Python desde que USO JMP.
Solo con este ejemplo, parece que VBA es más fácil que Python para obtener cookies para páginas web que necesitan iniciar sesión.

Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.Y, si aún desea verlo, 1F8B es la firma gzip (porque Accept-Encoding dijo gzip, entre otros). Podría usar
blob=Char To Blob( "~1F~8B~08~00~00~00~00~00~00~03~ABVJ~CEOIU~B2214~D6Q~CA-NW~B2Rz~BEg~D7~D3~0D~13~9FOY~F1~ACc~FB~D3~09~BD~CF:~A6=~ED_~FCd~F7~12%~1D~A5~94~C4~92D%~ABj~A5~E4~C4~82~92~E4~0C 3~AF4'~A7~B6~16~00x&~D1~03E~00~00~00", "ascii~hex" );
write(blobtochar(Gzip Uncompress(blob)))
{"code":413,"msg":"缺少用户名或口令","data":{"captcha":null}}
Google Translate: " Falta nombre de usuario o contraseña "
Pero realmente creo que usar Selenium podría ser una mejor respuesta. Secuencias de comandos del navegador con Python Selenium muestra cómo realizar un script de inicio de sesión y página a través de algunos datos, cargándolos en una tabla de datos.
Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.No funciona:
<BR />s = New HTTP Request( URL( "https://www.jisilu.cn/login" ), Method( "get" ) );
data = s << Send;
username = "lala";
password = "jmp";
jj = "return_url=http://www.jisilu.cn/&user_name=" || username || "&password=" || password || "&net_auto_login=1&_post_type=ajax";
h = [=> ];
h["Content-Type"] = "application/json";
h["User-Agent"] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36";
h["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8";
s = New HTTP Request( URL( "https://www.jisilu.cn/webapi/account/login_process/" ), Method( "POST" ), JSON( jj ), Headers( h ) );
data1 = s << Send;
Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.¿Qué hizo? ¿Algo en la ventana de registro?
Mostrar (datos);
Show(s<
Show(s<
Show(s<
Show(s<
Si tiene un código de Python que funciona, ¿por qué no usarlo?
Utilice el código de Python para crear un archivo .csv e importarlo a JMP.
Puede llamarlo desde JMP, ya sea con la interfaz de Python o con RunProgram.
Lo mismo con un programa de VB para hacer un archivo .csv e importarlo.
Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.
Re: Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.Secuencias de comandos del navegador con Python Selenium
No será fácil, pero es posible. Hasta que te sale un captcha que hay que solucionar.
Qué URL necesita para iniciar sesión y cómo puede obtener cookies y descargar datos a través del inicio de sesión de JSL.¡Hola a todos!
Este sitio requiere cookies para descargar los datos completos. ¿Cómo obtengo cookies y descargo datos a través del inicio de sesión de JSL?
¡Gracias!
VBA
Sub Post()
Dim User_agent, Response_Text, username, password, cookie, json
username = [d1]: password = [f1]
User_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.66 Safari/537.36"
Post_data = "return_url=https%3A%2F%2Fwww.jisilu.cn%2Fdata%2Fcbnew%2F&user_name=" & jslencode(username) & "&password=" & jslencode(password) & "&aes=1&auto_login=0"
With CreateObject("WinHttp.WinHttpRequest.5.1")
.Open "get", "https://www.jisilu.cn/login/", False
.setrequestheader "User-Agent", User_agent
.send
.Open "post", "https://www.jisilu.cn/webapi/account/login_process/", False
.setrequestheader "User-Agent", User_agent
.setrequestheader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
.send (Post_data)
cookie = Split(.getallresponseheaders, "Set-Cookie: ")(2)
.Open "get", "https://www.jisilu.cn/data/cbnew/detail_hist/" & ([b1] & ""), False
.setrequestheader "User-Agent", User_agent
.setrequestheader "cookie", cookie
.send "fprice=&tprice=&curr_iss_amt=&volume=&svolume=&premium_rt=&ytm_rt=&rating_cd=&is_search=N&market_cd%5B%5D=shmb&market_cd%5B%5D=shkc&market_cd%5B%5D=szmb&market_cd%5B%5D=szcy&btype=&listed=Y&qflag=N&sw_cd=&bond_ids=&rp=50&page=1"
Response_Text = .responsetext
Set json = JsonConverter.ParseJson(Response_Text)
End With
End SubAutomatización y secuencias de comandosIngeniería de Calidad y Procesosventanas