如何使用 Ruby 获取网站 (url) cookie 列表
How to get a list of website (url) cookies with Ruby
我想知道是否有一种干净的方法来获取网站 (URL) 使用的 cookie 列表?
场景: 用户写下 URL 他的网站,Ruby 在 Rails 应用程序上检查网站使用的所有 cookie 和returns 他们。现在,我们假设只有一个 URL.
我已经尝试使用下面的这些代码片段,但我只取回一个或没有取回 cookie:
url = 'http://www.google.com'
r = HTTParty.get(url)
puts r.request.options[:headers].inspect
puts r.code
或
uri = URI('https://www.google.com')
res = Net::HTTP.get_response(uri)
puts "cookies: " + res.get_fields("set-cookie").inspect
puts res.request.options[:headers]["Cookie"].inspect
或使用 Mechanize gem:
agent = Mechanize.new
page = agent.get("http://www.google.com")
agent.cookies.each do |cooky| puts cooky.to_s end
它不必是严格的 Ruby 代码,我可以在 Rails 应用程序上添加到 Ruby 中而不会有太多麻烦。
使用 HTTParty 你可以这样做:
puts HTTParty.get(url).headers["set-cookie"]
将它们作为数组获取:
puts HTTParty.get(url).headers["set-cookie"].split("; ")
您应该使用 Selenium-webdriver:
您将能够检索给定网站的所有 cookie:
require "selenium-webdriver"
@driver = Selenium::WebDriver.for :firefox #assuming you're using firefox
@driver.get("https://www.google.com/search?q=ruby+get+cookies+from+website&ie=utf-8&oe=utf-8&client=firefox-b-ab")
@driver.manage.all_cookies.each do |cookie|
puts cookie[:name]
end
#cookie handling functions
def add_cookie(name, value)
@driver.manage.add_cookie(name: name, value: value)
end
def get_cookie(cookie_name)
@driver.manage.cookie_named(cookie_name)
end
def get_all_cookies
@driver.manage.all_cookies
end
def delete_cookie(cookie_name)
@driver.manage.delete_cookie(cookie_name)
end
def delete_all_cookies
@driver.manage.delete_all_cookies
end
我想知道是否有一种干净的方法来获取网站 (URL) 使用的 cookie 列表?
场景: 用户写下 URL 他的网站,Ruby 在 Rails 应用程序上检查网站使用的所有 cookie 和returns 他们。现在,我们假设只有一个 URL.
我已经尝试使用下面的这些代码片段,但我只取回一个或没有取回 cookie:
url = 'http://www.google.com'
r = HTTParty.get(url)
puts r.request.options[:headers].inspect
puts r.code
或
uri = URI('https://www.google.com')
res = Net::HTTP.get_response(uri)
puts "cookies: " + res.get_fields("set-cookie").inspect
puts res.request.options[:headers]["Cookie"].inspect
或使用 Mechanize gem:
agent = Mechanize.new
page = agent.get("http://www.google.com")
agent.cookies.each do |cooky| puts cooky.to_s end
它不必是严格的 Ruby 代码,我可以在 Rails 应用程序上添加到 Ruby 中而不会有太多麻烦。
使用 HTTParty 你可以这样做:
puts HTTParty.get(url).headers["set-cookie"]
将它们作为数组获取:
puts HTTParty.get(url).headers["set-cookie"].split("; ")
您应该使用 Selenium-webdriver:
您将能够检索给定网站的所有 cookie:
require "selenium-webdriver"
@driver = Selenium::WebDriver.for :firefox #assuming you're using firefox
@driver.get("https://www.google.com/search?q=ruby+get+cookies+from+website&ie=utf-8&oe=utf-8&client=firefox-b-ab")
@driver.manage.all_cookies.each do |cookie|
puts cookie[:name]
end
#cookie handling functions
def add_cookie(name, value)
@driver.manage.add_cookie(name: name, value: value)
end
def get_cookie(cookie_name)
@driver.manage.cookie_named(cookie_name)
end
def get_all_cookies
@driver.manage.all_cookies
end
def delete_cookie(cookie_name)
@driver.manage.delete_cookie(cookie_name)
end
def delete_all_cookies
@driver.manage.delete_all_cookies
end