2017-02-11 6 views
1

Я посылаю запрос HTTP с драгоценным камнем HTTParty рубинового со следующим кодом:запрос HTTParty возвращает 404 код

require 'httparty' 
require 'pry' 

page = HTTParty.get('http://www.cubuffs.com/') 

binding.pry 

Вы можете убедиться в том, что URL является действительным. При изучении результатов с Поддеть, я получаю следующее:

[1] pry(main)> page 
=> nil 
[2] pry(main)> page.code 
=> 404 
[3] pry(main)> page.response 
=> #<Net::HTTPNotFound 404 Not Found readbody=true> 

Я уверен, что ничего не случилось с моим кодом, потому что я могу заменить другие URL-адреса, и они работают, как ожидалось. По какой-то причине URL-адреса из этого домена возвращают код 404. Какие-нибудь идеи, что здесь не так и как это исправить?

ответ

2

Владелец этого сайта проверяет User-Agent из браузера и не любит тот, который использует HTTPARTy. Вы можете получить эту страницу, включая заголовок агента пользователя из браузера, вот один из Chrome:

/5,0 Mozilla (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537,36 (KHTML, как Gecko) Chrome /56.0.2924.87 Safari/537,36

Измените код следующим образом:

require 'httparty' 
user_agent = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36' 

page = HTTParty.get('http://www.cubuffs.com/', headers: {"User-Agent": user_agent}) 
Смежные вопросы