2

私の以前の質問は、モジュールを使用して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-Optionsvaluedによるものnosniffです。そのドキュメントを読んで、定義された唯一の値「nosniff」が、Internet Explorer が宣言された content-type から離れた応答を MIME スニッフィングするのを防ぐことを知りました。


カスタムプロキシを使用して、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
4

2 に答える 2

3

この行を変更する必要があると思います:

 header = { host= "youtube.com" }

に:

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

その後、私のために働きます。

于 2012-04-28T19:49:06.443 に答える
1

解決策は、luasec をインストールし、ssl.https モジュールを使用してリクエストを実行することです。

ポール・クルチェンコがここで答えました!

例:

-- luasec version 0.4.2
require("ssl")
require("https")
-- ssl.https.request(...)
于 2016-06-01T18:58:33.983 に答える