2017-04-12 57 views
1

在下面的腳本中,我訪問了一個網站,它有許多重定向,我需要知道上次重定向的URL /端口。如何解析HTTPClient中的Cookie?

cookie_file = Tempfile.new('cookie_jar.txt') 
client.set_cookie_store(cookie_file) 
client.set_auth(nil, user, pass) 
client.ssl_config.verify_mode = nil 

r = client.get(uri, :follow_redirect => true) 
r = client.get_content(uri, :follow_redirect => true) 

pp client.cookie_manager.jar 

看看cookie,我可以從第二個cookie看到這次是https://example.com:65003。如果我再試一次,那麼它將是一個不同的端口。

問題

我如何解析了HTTPClient餅乾嗎?

[#<HTTP::Cookie:name="ASPSESSIONIDQGDSCTSA", 
value="DBEHBGICIKNNIBBMNAMGIMFG", domain="example.com", 
for_domain=false, path="/", secure=true, httponly=false, expires=nil, 
max_age=nil, created_at=2017-04-12 20:09:58 +0200, 
accessed_at=2017-04-12 20:09:58 +0200 
origin=https://example.com/bwtem/?follow_redirect=true>, 

#<HTTP::Cookie:name="ASPSESSIONIDSGAQARRD", 
value="APJDHADDOHENHCCHOLLMAHNJ", domain="example.com", 
for_domain=false, path="/", secure=true, httponly=false, expires=nil, 
max_age=nil, created_at=2017-04-12 20:09:57 +0200, 
accessed_at=2017-04-12 20:09:58 +0200 
origin=https://example.com:9000/auth/?id=7C05C91D24C4A798230A29FD28C587F3&target=https://example.com:65003&>] 
+0

餅乾一般醃製/加密/簽名,除非你有祕密,你將無法對其進行解密。 – Anthony

+0

這是我正在尋找的純文本目標的值。所以問題是如何訪問它。 –

+0

你的意思是你想從'origin'的值得到'target'查詢參數? – Anthony

回答

1

您可以使用URI模塊做到這一點:

origin 
=> "https://example.com:9000/auth/?id=7C05C91D24C4A798230A29FD28C587F3&target=https://example.com:65003&" 
URI.decode_www_form(URI.parse(origin).query).to_h["target"] 
=> "https://example.com:65003"