Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

473
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!