Есть ли обновление для open-uri, которое меняет способ вызова User-Agent? - PullRequest
0 голосов
/ 05 февраля 2020

В книге "Instant Nokogiri" и на странице Packt Hub Nokogiri имеется приложение User-Agent для подмены браузера при сканировании веб-сайта New York Times на предмет главной новости.

Я работаю над этой книгой, но код немного устарел, но я обновил его.

Моя версия код :

require 'open-uri'
require 'nokogiri'
require 'sinatra'

browser = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4)
AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1'

doc = Nokogiri::HTML(open ('http://nytimes.com', browser))

nyt_headline = doc.at_css('h2 span').content

nyt_url = "http://nytimes.com" + doc.at_css('.css-16ugw5f a')[:href]


html = "<h1>Nokogiri News Service</h1>"
html += "<h2>Top Story: <a href=\"#{nyt_url}\">#{nyt_headline}</a></h2>"

get '/' do
    html
end

Я выполняю это через сеанс терминала в ОС Ma c и получаю эту ошибку:

invalid access mode Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) (ArgumentError)
AppleWebKit/536.30.1 (KHTML, like Gecko) Version/6.0.5 Safari/536.30.1 (URI::HTTP resource is read only.)

Я не верю, что пытаюсь «написать». Не уверен, почему ошибка «только для чтения» блокирует его запуск. Он работал до того, как я добавил информацию об агенте пользователя.

1 Ответ

1 голос
/ 05 февраля 2020

См. Документацию OpenURI open:

URI.open("http://www.ruby-lang.org/en/",
  "User-Agent" => "Ruby/#{RUBY_VERSION}",
  "From" => "foo@bar.invalid",
  "Referer" => "http://www.ruby-lang.org/") {|f|
  # ...
}

Варианты: Ha sh. Вы передаете строку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...