簡體   English   中英

如何使用 Ruby 獲取網站 (url) cookie 列表

[英]How to get a list of website (url) cookies with Ruby

我想知道是否有一種干凈的方法來獲取網站 (URL) 使用的 cookie 列表?

場景:用戶寫下他網站的 URL,Ruby on Rails 應用程序檢查網站使用的所有 cookie 並返回它們。 現在,讓我們認為這只是一個 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

或使用機械化寶石:

agent = Mechanize.new
page = agent.get("http://www.google.com")
agent.cookies.each do |cooky| puts cooky.to_s end

它不必是嚴格的 Ruby 代碼,只是我可以添加到 Ruby on Rails 應用程序中而不會太麻煩的東西。

您應該使用 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 

使用 HTTParty,您可以執行以下操作:

puts HTTParty.get(url).headers["set-cookie"]

將它們作為數組獲取:

puts HTTParty.get(url).headers["set-cookie"].split("; ")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM