我在设置user-agent
时遇到了困难。如您所见,我的自定义user_agent_alias
未被退回。有人可以解释为什么这不起作用以及如何解决这个问题?
require 'rubygems'
require 'mechanize'
require 'nokogiri'
m = Mechanize.new
m.user_agent_alias = 'My Custom User Agent'
page = m.get("http://whatsmyuseragent.com/")
html = Nokogiri::HTML(page.body)
puts html.xpath('//*[(@id = "body_lbUserAgent")]').map(&:content)
以下是"用户代理"被退回(不是我设定的):
Mechanize / 2.7.3 Ruby / 2.0.0p353(http://github.com/sparklemotion/mechanize/)
答案 0 :(得分:5)
原来问题是user_agent_alias
需要特定类型。所有可接受的类型如下:
工作代码:
require 'rubygems'
require 'mechanize'
m = Mechanize.new
m.user_agent_alias = 'Mac Safari 4'
page = m.get("http://whatsmyuseragent.com/")
html = Nokogiri::HTML(page.body)
puts html.xpath('//*[(@id = "body_lbUserAgent")]').map(&:content)
答案 1 :(得分:3)
实际上可以设置任何用户代理字符串:您必须使用方法Mechanize::Agent#user_agent=
而不是Mechanize::Agent#user_agent_alias=
。
因此,如果您将示例更改为:
m = Mechanize.new
m.user_agent = 'My Custom User Agent'
page = m.get("http://whatsmyuseragent.com/")
然后它有效。