Запросы HTTPS в Ruby

Есть ли камень или библиотека для запросов HTTPS в Ruby? Как это называется, и можете ли вы предоставить пример использования?

То, что я пытаюсь сделать, это открыть страницу, проанализировать текст из нее и затем вывести ее.

Ответы

Ответ 1

Запрос SSL с стандартной библиотекой Ruby

require 'net/http'
require 'uri'
Net::HTTP.get URI('https://encrypted.google.com')

Net::HTTP в Ruby ( >= 2.0.0) выполняет проверку SSL по умолчанию, если вы передаете ему объект URI с URL-адресом https. См. https://github.com/ruby/ruby/blob/778bbac8ac2ae50f0987c4888f7158296ee5bbdd/lib/net/http.rb#L481

Вы можете проверить это, выполнив запрос получения на Excon

Excon - это чистая реализация Ruby HTTP.

require 'excon'
Excon.get 'https://encrypted.google.com'
  1. Curb

Curb - это HTTP-клиент, который использует libcurl под капотом.

require 'curl'
Curl.get 'https://encrypted.google.com'
  1. http.rb

HTTP или http.rb является чистой реализацией Ruby HTTP, но использует http_parser.rb для анализа HTTP-запросов и ответов. Поскольку http_parser.rb использует собственные расширения, он утверждает, что является одной из самых быстрых клиентских библиотек HTTP. Но, как всегда, принимайте контрольные отметки с солью.

require 'http'
HTTP.get 'https://encrypted.google.com'
  1. HTTPClient

HTTPClient - еще одна чистая реализация Ruby.

require 'httpclient'
HTTPClient.get 'https://encrypted.google.com'

Ниже перечислены библиотеки HTTP, а не HTTP-обертки. Оберточные драгоценные камни, такие как HTTParty и Faraday либо обернуть вокруг конкретной реализации HTTP или использования адаптеров для обеспечения унифицированного HTTP-интерфейса. Вы можете проверить эту матрицу сравнения возможностей Ruby HTTP client. Он сравнивает функции каждой клиентской библиотеки HTTP. Но обратите внимание, что информация не обновляется с 2012 года.

Ответ 2

Существует встроенная библиотека на языке Net::HTTP

Примером использования этого может быть:

uri = URI('https://example.com/some_path?query=string')
response = Net::HTTP.start(uri.host, uri.port) do |http|
  request = Net::HTTP::Get.new uri.request_uri
  http.request request # Net::HTTPResponse object
end
puts response.body

UPDATE: Вам нужно включить эту библиотеку следующим образом:

require 'net/https'