I'm working in Ruby, but my question is valid for other languages as well.
I have a Mechanize-driven application. The server I'm talking to sets a cookie using JavaScript (rather than standard set-cookie), so Mechanize doesn't catch the cookie. I need to pass that cookie back on the next GET request.
The good news is that I already know the value of the cookie, but I don't know how to tell Mechanize to include it in my next GET request.
I figured it out by extrapolation (and reading sources):
agent = Mechanize.new ... cookie = Mechanize::Cookie.new(key, value) cookie.domain = ".oddity.com" cookie.path = "/" agent.cookie_jar.add(cookie) ... page = agent.get("https://www.oddity.com/etc")
Seems to do the job just fine.
As @Benjamin Manns points out, Mechanize now wants a URL in the add
method. Here's the amended recipe, making the assumption that you've done a GET using the agent, and that the last page visited is the domain for the cookie (saves a URI.parse()
):
agent = Mechanize.new ... cookie = Mechanize::Cookie.new(key, value) cookie.domain = ".oddity.com" cookie.path = "/" agent.cookie_jar.add(agent.history.last.uri, cookie)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With