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})