Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

475
Visualizações
Lectura del archivo de clase Java (?) De la url como texto sin formato en la terminal de ubuntu

No estoy seguro si el título tiene sentido. No tengo mucha experiencia en este tipo de cosas.

Esta es la situación:

Estoy ejecutando un servidor Linux con Ubuntu 20.04

Ejecuto un programa a través de secuencias de comandos .sh para extraer páginas web de diferentes URL.

Una URL devuelve un archivo que comienza así:

 {"javaClass":"java.util.ArrayList","list":[

No estoy seguro de si este es un archivo de clase Java o un archivo JSON, porque la URL no tiene extensión.

Puedo llamar a esta URL en mi navegador y se mostrará como texto. (Es por eso que puedo ver el código anterior).

Si lo llamo con curl en la terminal de Ubuntu, no hace nada.

¿Cómo puedo mostrar y leer esto como texto sin formato en Ubuntu Terminal para procesar los datos, como lo hago en mi navegador Chrome?

EDITAR: La URL en cuestión es esta: https://www.yes.co.il/o/yes/servletlinearsched/getscheduale?startdate=20211025&p_auth=w3wmBNc5

EDIT2: El token al final es cada vez diferente. Leí bien el token, así que ese no es el problema.

Descubrí que el sitio solicita cookies x-dtpc. Encontré esto sobre las cookies x-dtpc:

este encabezado lo establece el agente de JavaScript en los XHR y se usa para correlacionar las solicitudes de XHR con las acciones del usuario

Cuando abro la página y obtengo la URL de la consola del desarrollador, puedo abrir la URL en una nueva pestaña. Si obtengo la URL a través de mi secuencia de comandos, no puedo abrir la URL en el navegador.

Cargo cookies estándar, pero aparentemente eso no es suficiente.

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

En las herramientas de desarrollo de Chrome, puede hacer clic derecho en la solicitud específica y copiar la cURL correspondiente. Cuando abrí la página, se creó el siguiente comando:

 curl 'https://www.yes.co.il/o/yes/servletlinearsched/getscheduale' \ -H 'authority: www.yes.co.il' \ -H 'sec-ch-ua: "Google Chrome";v="95", "Chromium";v="95", ";Not A Brand";v="99"' \ -H 'dnt: 1' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.36' \ -H 'x-dtpc: 1$418482539_291h9vJHPPKPVFOURUFMBUBCNHWPOEEHUEJATA-0e5' \ -H 'accept: text/plain, */*; q=0.01' \ -H 'x-requested-with: XMLHttpRequest' \ -H 'content-type: application/x-www-form-urlencoded' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'origin: https://www.yes.co.il' \ -H 'sec-fetch-site: same-origin' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-dest: empty' \ -H 'referer: https://www.yes.co.il/content/tvguide' \ -H 'accept-language: en-US,en;q=0.9,de;q=0.8' \ -H 'cookie: TS01be6705=01ef05715da91cbd2bd3d3708b62fc37483302654019cffd2d42c61fe786389bea0697bdddc6cfaa989d8e83d7ecaf362d163c3ba4d4cc2cb2171d826bc2189e24b33b372f; COOKIE_SUPPORT=true; GUEST_LANGUAGE_ID=iw_IL; rxVisitor=1635415629464DQEQ6RQ2S8SQQ1QCFS5J66I2US8LK1NG; _gcl_au=1.1.2116753794.1635415632; _gid=GA1.3.1516801157.1635415633; dtSa=-; _ga=GA1.3.1003301072.1635415633; LFR_SESSION_STATE_33706=1635417685179; JSESSIONID=B399B241579DB87AF9FEC02AD72D62CF.worker_ip-10-0-3-108.eu-west-1.compute.internal; dtCookie==3=srv=1=sn=BF10E6A2EFEE80BE2CAD31F302CAF608=perc=100000=ol=0=mul=1=app:e6d1c681b48e20c9=0; _ga_H6Z9EGVSQX=GS1.1.1635418482.2.0.1635418482.0; dtLatC=14; AWSALB=1Ky1qIweYH/VBDu2pUv/DACVcWq5dmx3PPhlghfLR0g4oNTdMV78d7G08LreVX0l2Lvm0wdW5oRh+3j+THyZKDQmVldChB6XScu8+BVkqbSymgNrvMm4dOdT6TNL; AWSALBCORS=1Ky1qIweYH/VBDu2pUv/DACVcWq5dmx3PPhlghfLR0g4oNTdMV78d7G08LreVX0l2Lvm0wdW5oRh+3j+THyZKDQmVldChB6XScu8+BVkqbSymgNrvMm4dOdT6TNL; TS01542e32=01ef05715d1819fe7529d33b6e77731cfbb0015d8964ad5bb6c2e651cbb0a0a4b1882c8fa451246095770e14517339cd0a68861c971608fb5c8f0731d6c968c519acbcd35ea68d53e6fc4ceb067d99238c1dfce91a494ac4abf599a7d66a54b92c363e5c1b004d2d59e86f6198819dd2f1b43c0191; dtPC=1$418482539_291h9vJHPPKPVFOURUFMBUBCNHWPOEEHUEJATA-0e5; rxvt=1635420284821|1635415629471' \ --data-raw 'startdate=20211028&p_auth=c43Cdm7P' \ --compressed

La mayoría de los encabezados no parecen ser demasiado relevantes, por lo que pude reducirlo a

 curl --location --request POST 'https://www.yes.co.il/o/yes/servletlinearsched/getscheduale' \ --header 'content-type: application/x-www-form-urlencoded' \ --header 'cookie: JSESSIONID=B399B241579DB87AF9FEC02AD72D62CF.worker_ip-10-0-3-108.eu-west-1.compute.internal;' \ --data-urlencode 'startdate=20211028' \ --data-urlencode 'p_auth=c43Cdm7P'

Sin embargo, existe la cookie JSESSIONID que se establece mediante la solicitud inicial a la página y se actualiza potencialmente mediante solicitudes posteriores. Es por eso que una solicitud solo funciona por un tiempo limitado sin usar una nueva identificación de sesión. Su raspador tendrá que extraer una identificación de sesión de solicitudes anteriores y usar esta.

over 4 years ago · Santiago Trujillo Relatório

0

Ese es el resultado de una herramienta que 'serializa' (convierte objetos que viven en la memoria en una representación basada en bytes que se puede transportar a través de una red o almacenar en disco), específicamente, que serializó un ArrayList en un formato JSON.

La mejor manera de leer esto con código Java es averiguar qué herramienta se usó y usar la misma herramienta. No está integrado en Java en sí mismo; es una biblioteca de terceros como Jackson.

Todas esas herramientas que conozco tienen una excepción especial 'codificado' para cualquier cosa que amplíe java.util.List (como ArrayList), para tratarlo simplemente como una lista JSON simple. Entonces, estoy un poco desconcertado en cuanto a qué herramienta se ha utilizado aquí.

Pero, [A] encuentra la herramienta, o [B] aplica ingeniería inversa a la salida.

NB: normalmente, estas herramientas de serialización representarán en el JSON tanto el nombre de la clase como cada campo. Sin embargo, el campo relevante en ArrayList se llama elementData y no list . Esa es otra ceja más levantada: esto es simplemente extraño.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda