【问题标题】:Downloading a ttf file in Ruby在 Ruby 中下载 ttf 文件
【发布时间】:2017-06-22 02:43:17
【问题描述】:
link = 'http://protext.hackerrank.com/static/gen/font_a_21fb3d1d1a91a7e80dff456205f3380b.ttf'

如果您在浏览器中访问此 URL,它应该会下载一个 .ttf 文件。但是,我无法找到使用 Ruby 下载所述文件的方法,甚至无法访问其中的信息。

我尝试过的事情:

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 尝试了上述大部分方法。

感谢您的帮助,谢谢!

【问题讨论】:

    标签: ruby http truetype open-uri


    【解决方案1】:

    根据一些本地测试,需要指定一个头域Cookie: X-VALID=TRUE才能通过服务器检查。

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

    【讨论】:

    • 我已经为此烦恼了好几个小时。谢谢!顺便说一句,您是如何发现必须包含 Cookie: X-VALID=TRUE 的?
    • 在 Chrome 中打开“开发者工具 -> 网络”面板,访问该 URL,从网络面板,右键单击 URL 条目 ->“复制为 cURL”。现在你有了一个 cURL 命令来模拟浏览器的行为。并且可以尝试减少header参数,看看需要哪一组。
    猜你喜欢
    • 1970-01-01
    • 2011-10-27
    • 2013-05-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-10
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多