我之前的问题是关于使用模块在lua中获取页面标题。socket.http
问题就在这里。以前,youtube 页面将我带到404 错误页面。根据MattJ 的帮助,我HOST
为请求设置了自定义标头。这就是我所做的,结果是什么:
代码
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
结果
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
据我所知,该错误基本上是因为X-Content-Type-Options
value nosniff
。阅读它的文档后,我了解到唯一定义的值“nosniff”会阻止 Internet Explorer MIME 嗅探远离声明的 content-type 的响应。
请帮助我,以便我可以使用自定义代理并从他们的正文中获取 youtube(以及其他一些网站,如上一个问题中所述)标题。这是我目前拥有的完整 LUA 文件:
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