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

167
Views
¿Cómo puedo devolver solo lo que hay dentro de mi etiqueta <pre> si alguien hace una solicitud cURL o wget a mi enlace?

Tengo un simple script de python "hola mundo" aquí

imprimir("Hola mundo")

Lo subí a mi sitio (similar a Pastebin o GitHub gist)

https://www.bunlongheng.com/raw/YWFjOGMxYTktM2Y5Mi00ZDdlLWI1NWQtOTg0Y2EwYjVlMDM5

Cuando compartí el enlace, puedo ver el ícono y el campo de título como el texto real, es agradable. Probado en iPhone a continuación

ingrese la descripción de la imagen aquí

Cuando enrollé el enlace, obtuve las etiquetas <title> y <link> así:

 <title>print(&quot;Hello World&quot;)</title><link rel="shortcut icon" href="https://i.imgur.com/yRk5mqb.png" /><pre>print(&quot;Hello World&quot;)</pre>

Lo que, por supuesto, se romperá si ejecuto remotamente mis códigos como este

 curl https://www.bunlongheng.com/raw/YWFjOGMxYTktM2Y5Mi00ZDdlLWI1NWQtOTg0Y2EwYjVlMDM5 | python % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 153 0 153 0 0 354 0 --:--:-- --:--:-- --:--:-- 353 File "<stdin>", line 1 <title>print(&quot;Hello World&quot;)</title><link rel="shortcut icon" href="https://i.imgur.com/yRk5mqb.png" /><pre>print(&quot;Hello World&quot;)</pre> ^ SyntaxError: invalid syntax

¿Cómo puedo devolver solo lo que está dentro de mi etiqueta <pre> si alguien hace un cURL o wget a mi enlace?

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Puede intentar olfatear el encabezado User-Agent pero no es una buena manera de determinar qué tipo de contenido proporcionar a un cliente.

Un mejor enfoque (utilizando las funciones integradas en HTTP que están diseñadas para manejar diferentes representaciones del mismo contenido) podría ser usar el encabezado Accept .


En Python , puede usar el módulo accept-types para esto.

 return_type = get_best_match(request.META.get('HTTP_ACCEPT'), ['text/html', 'application/python']) if return_type == 'application/python': return render_python() else: return render_html()

Consulte esta pregunta para manejarlo en PHP .


Entonces el cliente podría pedir el código de Python si lo quisiera:

 curl -H "Accept: application/python" http://example.com/foo | python
about 4 years ago · Juan Pablo Isaza Report

0

similar a Quentin, verificaría si el encabezado de aceptación contiene la cadena "html" y serviría el html si lo hace. pero si no menciona explícitamente html, sirva el python directamente. porque todos los navegadores web dicen alguna versión de Accept: ...html... (como Chrome dice 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.9 )

mientras que wget/curl/libcurl solo dice Accept: */*

about 4 years ago · Juan Pablo Isaza Report

0

para PHP

terminé haciendo esto

$usuarioAgente = $_SERVIDOR['HTTP_USER_AGENT']; if (stripos($userAgent, 'curl') !== false || stripos($userAgent, 'wget') !== false ){ return $paste->raw; }

 public function raw($uuid) { $paste = Paste::where('uuid', base64_decode($uuid))->first(); $userAgent = $_SERVER['HTTP_USER_AGENT']; if (stripos($userAgent, 'curl') !== false || stripos($userAgent, 'wget') !== false ){ return $paste->raw; } if($paste->type == 'json'){ return response()->json($paste->data); } else { $result = htmlentities($paste->raw); return '<title>'.$result.'</title><link rel="shortcut icon" href="https://i.imgur.com/WWWynu9.png" /><pre>'.$result.'</pre>'; } }

Ahora puedo ejecutar bash o python de forma remota desde cURL sin una etiqueta HTML adicional. La mejor parte es que no tengo que comprometer el ícono y el título para el navegador y el navegador móvil.

about 4 years ago · Juan Pablo Isaza 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!