2017-02-11 157 views
1

我送與HTTParty紅寶石寶石用下面的代碼HTTP請求: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中:

的Mozilla/5.0(Macintosh上,英特爾的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})