gpt4 book ai didi

ruby - 如何在 Mechanize 中获取重定向日志?

转载 作者:行者123 更新时间:2023-12-04 16:20:12 25 4
gpt4 key购买 nike

在 ruby​​ 中,如果您在 301/302 重定向后使用 Mechanize ,如下所示

require 'mechanize'

m = WWW::Mechanize.new
m.get('http://google.com')

如何获取 Mechanize 页面的列表被重定向通过? (比如 http://google.com => http://www.google.com => http://google.com.ua)

OK,这里是 mechanize 中负责重定向的代码
 elsif res_klass <= Net::HTTPRedirection
return page unless follow_redirect?
log.info("follow redirect to: #{ response['Location'] }") if log
from_uri = page.uri
raise RedirectLimitReachedError.new(page, redirects) if redirects + 1 > redirection_limit
redirect_verb = options[:verb] == :head ? :head : :get
page = fetch_page( :uri => response['Location'].to_s,
:referer => page,
:params => [],
:verb => redirect_verb,
:redirects => redirects + 1
)
@history.push(page, from_uri)
return page

但试图 m.history.map {|p| puts p.uri} 显示最后一页 uri 的 3 倍。

最佳答案

这里的关键是利用 Mechanize 中内置的日志记录。这是使用内置 Rails 日志记录工具的完整代码示例。

require 'mechanize'

require 'logger'

mechanize_logger = Logger.new('log/mechanize.log')

mechanize_logger.level = Logger::INFO

url = 'http://google.com'

agent = Mechanize.new

agent.log = mechanize_logger

agent.get(url)



然后检查日志目录中 log/mechanize.log 的输出,您将看到整个 Mechanize 过程,包括中间 url。

关于ruby - 如何在 Mechanize 中获取重定向日志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1352178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com