需要在 Ruby ala Python 的 'requests' 库 Session() 对象中保留 cookie

need to persist cookies in Ruby ala Python's 'requests' library Session() object

所以我有一个 Python 脚本可以成功地调用一系列带有 get 和 post 请求的 URL,最终生成一个我可以用于进一步工作的身份验证令牌。 Python 脚本使用 requests 库,并从 Session 对象开始,如下所示:

session = requests.Session()
initial_auth = session.request('GET', login_url)
step_2_url = do_stuff_to_initial_auth()
intermediate_token = session.request('POST', step_2_url)
step_3_url = do_stuff_to_intermediate_token()
final_auth = session.request('GET', step_3_url)

我正在尝试将脚本移植到 Ruby,但脚本在最后一步失败了 -- 远程服务 returns 一些 'Page Expired' html 而不是比 Python 脚本收到的成功页面。深入挖掘,我发现有相当数量的 cookie 状态一步一步传递,并且 Python requests.Session 对象在幕后自动处理 cookie 状态。

我正在查看 httpartyrest-client 的等效魔术功能。我看到了对 cookiejar 和资源的引用,但到目前为止使用 cookiejar 设置 cookie 对我不起作用。

Ruby 生态系统中是否有一种方法可以像 Python 的 requests.Session 一样自动处理多个请求的 cookie?

谢谢~~

尝试mechanize。例如:

mechanize  = Mechanize.new
page       = mechanize.get(url)
other_page = mechanize.get(other_url)

这会跨请求保留 cookie。