sockets http-headers lua luasocket

sockets - Encabezados personalizados Luasocket, 404 vueltas a 301



http-headers (2)

Creo que esta línea debe ser cambiada:

header = { host= "youtube.com" }

A:

header = { host= "www.youtube.com" }

Después de eso, funciona para mí.

Mi pregunta anterior era acerca de obtener el título de la página en lua usando el módulo socket.http . La pregunta está aquí . Anteriormente, las páginas de youtube me llevaron a una página de error 404 . Basado en la ayuda de MattJ , puse un encabezado HOST personalizado para la solicitud. Esto es lo que hice y cuál fue el resultado:

Código

header = { host= "youtube.com" } local result,b,c,h = http.request{ url = "http://www.youtube.com/watch?v=_eT40eV7OiI", headers = header } print ( result, b, c, h ) for k,v in pairs(c) do print(k,v) end

Resultado

1 301 table: 0047D430 HTTP/1.1 301 Moved Permanently x-content-type-options nosniff content-length 0 expires Tue, 27 Apr 1971 19:44:06 EST cache-control no-cache connection close location http://www.youtube.com/watch?v=_eT40eV7OiI content-type text/html; charset=utf-8 date Sat, 28 Apr 2012 04:26:21 GMT server wiseguy/0.6.11

Por lo que pude entender a partir de esto, el error se debe básicamente a X-Content-Type-Options nosniff . Al leer su documentación , llegué a saber que el único valor definido, "nosniff", evita que Internet Explorer MIME detecte una respuesta lejos del tipo de contenido declarado .

Ayúdeme para poder usar el proxy personalizado y obtener el título de youtube (y algunos otros sitios, como se menciona en la pregunta anterior) de su cuerpo. Aquí está el archivo LUA completo que tengo actualmente:

local http = require "socket.http" http.PROXY="http://<proxy address here>:8080" header = { host= "youtube.com" } local result,b,c,h = http.request{ url = "http://www.youtube.com/watch?v=_eT40eV7OiI", headers = header } print ( result, b, c, h ) for k,v in pairs(c) do print(k,v) end


La solución es instalar luasec y usar el módulo ssl.https para hacer la solicitud.

¡Respondido aquí por Paul Kulchenko !

Ejemplo:

-- luasec version 0.4.2 require("ssl") require("https") -- ssl.https.request(...)