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

Wenn Sie diese URL in Ihrem Browser besuchen, sollte sie eine .ttf-Datei herunterladen. Jedoch war ich nicht in der Lage, eine Möglichkeit zu finden, diese Datei mit Ruby herunterzuladen oder auf die darin enthaltenen Informationen zuzugreifen.Herunterladen einer TTF-Datei in Ruby

Dinge, die ich habe versucht:

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 
} 

Ich habe auch die meisten der oben genannten mit Nokogiris parse versucht.

Jede Hilfe wird geschätzt, danke!

Antwort

2

Gemäß einem lokalen Test müssen Sie ein Kopffeld Cookie: X-VALID=TRUE angeben, um die Serverprüfung zu bestehen.

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

Ich habe meine Haare seit Stunden über meine Haare gezogen. Vielen Dank! Übrigens, wie konnten Sie herausfinden, dass Sie das 'Cookie: X-VALID = TRUE' einfügen müssen? –

+1

Öffnen Sie das Fenster "Entwicklerwerkzeuge -> Netzwerk" in Chrome, besuchen Sie diese URL, klicken Sie im Netzwerkfenster mit der rechten Maustaste auf den URL-Eintrag -> "Als cURL kopieren". Jetzt haben Sie einen cURL-Befehl, um das Verhalten des Browsers nachzuahmen. Und Sie können versuchen, die Header-Parameter zu reduzieren, um zu sehen, welcher Satz benötigt wird. –

Verwandte Themen