2017-06-22 25 views
2
link = 'http://protext.hackerrank.com/static/gen/font_a_21fb3d1d1a91a7e80dff456205f3380b.ttf' 

ブラウザでこのURLにアクセスする場合は、.ttfファイルをダウンロードする必要があります。しかし、私はRubyを使ってこのファイルをダウンロードする方法を見つけることができず、またその中の情報にアクセスすることさえできませんでした。私が試したRubyでttfファイルをダウンロードする

もの:

require 'nokogiri' 
require 'open-uri' 
require 'net/http' 

-

File.open('font_0.ttf', 'wb') do |fo| 
    fo.write open(url).read 
end 

-

download = open(url) 
IO.copy_stream(download, '~/font_0.ttf') 

-

Net::HTTP.start("http://protext.hackerrank.com") { |http| 
    resp = http.get("/static/gen/font_a_21fb3d1d1a91a7e80dff456205f3380b.ttf") 

    p resp.body 
} 

私はまた、Nokogiriのparseで上記のほとんどを試しました。

ご協力いただきありがとうございます。

答えて

2

いくつかのローカルテストによれば、サーバチェックに合格するには、ヘッダフィールドCookie: X-VALID=TRUEを指定する必要があります。

require 'open-uri' 
data = open("http://protext.hackerrank.com/static/gen/font_a_21fb3d1d1a91a7e80dff456205f3380b.ttf", 
      "Cookie" => "X-VALID=TRUE").read 
+1

私はこれを数時間にわたって引き出しています。ありがとうございました!ちなみに、あなたは 'Cookie:X-VALID = TRUE'を含める必要があることをどのようにして知ることができましたか? –

+1

Chromeの「デベロッパーツール - >ネットワーク」パネルを開き、そのURLにアクセスし、ネットワークパネルからURLエントリ - >「cURLとしてコピー」を右クリックします。これでブラウザの動作を模倣するcURLコマンドが作成されました。そして、ヘッダーパラメーターを減らして、どのセットが必要かを調べることができます。 –

関連する問題