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

如果您在瀏覽器中訪問此URL,它應該下載一個.ttf文件。但是,我一直無法找到使用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條目 - >「Copy as cURL」。現在你有一個cURL命令來模擬瀏覽器行爲。您可以嘗試減少標題參數以查看哪些設置是必需的。 –