HTTParty请求返回404代码

问题描述:

我送与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代码。任何想法这里有什么错,以及如何解决它?

该网站的所有者正在浏览器中检查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})