HTTParty 请求 returns 404 代码
HTTParty request returns 404 code
我正在使用 HTTParty Ruby gem 发送 HTTP 请求,代码如下:
require 'httparty'
require 'pry'
page = HTTParty.get('http://www.cubuffs.com/')
binding.pry
您可以验证 URL 是否有效。使用 Pry 探索结果时,我得到以下信息:
[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 来自该域 return 的 404 代码。知道这里出了什么问题以及如何解决吗?
该站点的所有者正在通过浏览器检查 User-Agent,不喜欢 HTTParty 使用的那个。您可以通过从浏览器中包含用户代理 header 来获取页面,这是来自 Chrome:
的
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
修改您的代码如下:
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})
我正在使用 HTTParty Ruby gem 发送 HTTP 请求,代码如下:
require 'httparty'
require 'pry'
page = HTTParty.get('http://www.cubuffs.com/')
binding.pry
您可以验证 URL 是否有效。使用 Pry 探索结果时,我得到以下信息:
[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 来自该域 return 的 404 代码。知道这里出了什么问题以及如何解决吗?
该站点的所有者正在通过浏览器检查 User-Agent,不喜欢 HTTParty 使用的那个。您可以通过从浏览器中包含用户代理 header 来获取页面,这是来自 Chrome:
的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
修改您的代码如下:
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})