2013-09-19 4 views
0

Через мой код я получить печенье с помощью запроса GET:Рубин HTTP/прибудете печенье верстку

http = Net::HTTP.new('kdfgdfgdfglat.gsdfsdo', 443) 
http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
path = '/gfgdfgdfgfdgdfg' 
resp, data = http.get(path, {'User-Agent' => 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0', "Cookie" => "dfgdfgdfg=17"}) 

cookie = resp.response['set-cookie'] 

Cookie таковы:

ASP.NET_SessionId=mnxjnm140qvvt4wvlfielud3; domain=.e-dfgdfgdfg.godfgdfgv.pl; path=/; secure; HttpOnly, TSe20548=a4ad9705817edcebbdf2e0c3f869b10843e5bb63617303a3523b64a0; Path=/, TS7848cb=98330ff418e3c9a3b2afb5f10398363043e5bb63617303a3523b64a036af3f5e7cfaddf8; path=/; domain=.e-dfgfdgdfgf.godfgdfggv.pdfgdfl, TSe20548_31=88ba62b4efd7e40ff9fa891b1764eb6e43e5bb63617303a3000000000000000000e1d4e1bdb727a5ac9c00848b7c7c770a3b491a57; Path=/ 

Но как вы можете видеть, у меня есть ASP.NET_SessionId, TSe20548_31 и т. д. (также 20548 является динамическим, а номера могут быть другими).

Мой вопрос заключается в том, чтобы очистить и формат печенья, к такому мнению:

ASP.NET_SessionId=mnxjnm140qvvt4wvlfielud3;TSe20548=a4ad9705817edcebbdf2e0c3f869b10843e5bb63617303a3523b64a0; TS7848cb=98330ff418e3c9a3b2afb5f10398363043e5bb63617303a3523b64a036af3f5e7cfaddf8; TSe20548_31=88ba62b4efd7e40ff9fa891b1764eb6e43e5bb63617303a3000000000000000000e1d4e1bdb727a5ac9c00848b7c7c770a3b491a57;

Как вы можете видеть, я должен получить только печенье и это значение, без пути, и другие дополнительные сведения. Как я могу это сделать? И это реально? Как удалить некоторые данные из файла cookie? Поэтому мне нужно оставить ASP.NET_SessionId и его значение, а TS *** и эти значения. Как я могу это сделать?

+0

Зачем вам это нужно? –

+0

@SergioTulentsev Мне нужно это, потому что мне нужно) секретная информация ahah) просто нужно для отправки заголовков ... И нужно, чтобы описать ниже –

+0

@SergioTulentsev, так как я мог это сделать? –

ответ

1

Это действительно не так сложно. Просто разделите точку с запятой и фильтруйте. Или сканируйте строку для интересующих вас пар. Что-то вроде этого:

s1 = "ASP.NET_SessionId=mnxjnm140qvvt4wvlfielud3; domain=.e-konsulat.gov.pl; path=/; secure; HttpOnly, TSe20548=a4ad9705817edcebbdf2e0c3f869b10843e5bb63617303a3523b64a0; Path=/, TS7848cb=98330ff418e3c9a3b2afb5f10398363043e5bb63617303a3523b64a036af3f5e7cfaddf8; path=/; domain=.e-konsulat.gov.pl, TSe20548_31=88ba62b4efd7e40ff9fa891b1764eb6e43e5bb63617303a3000000000000000000e1d4e1bdb727a5ac9c00848b7c7c770a3b491a57; Path=/ " 

regex = /(?<key>(ASP\.NET_SessionId|TS\w+)=[^;]+)/ 

a1 = s1.scan(regex).flatten # => ["ASP.NET_SessionId=mnxjnm140qvvt4wvlfielud3", "TSe20548=a4ad9705817edcebbdf2e0c3f869b10843e5bb63617303a3523b64a0", "TS7848cb=98330ff418e3c9a3b2afb5f10398363043e5bb63617303a3523b64a036af3f5e7cfaddf8", "TSe20548_31=88ba62b4efd7e40ff9fa891b1764eb6e43e5bb63617303a3000000000000000000e1d4e1bdb727a5ac9c00848b7c7c770a3b491a57"] 
a2 = a1.map{|s| s.split('=')} # => [["ASP.NET_SessionId", "mnxjnm140qvvt4wvlfielud3"], ["TSe20548", "a4ad9705817edcebbdf2e0c3f869b10843e5bb63617303a3523b64a0"], ["TS7848cb", "98330ff418e3c9a3b2afb5f10398363043e5bb63617303a3523b64a036af3f5e7cfaddf8"], ["TSe20548_31", "88ba62b4efd7e40ff9fa891b1764eb6e43e5bb63617303a3000000000000000000e1d4e1bdb727a5ac9c00848b7c7c770a3b491a57"]] 
h1 = Hash[a2] # => {"ASP.NET_SessionId"=>"mnxjnm140qvvt4wvlfielud3", "TSe20548"=>"a4ad9705817edcebbdf2e0c3f869b10843e5bb63617303a3523b64a0", "TS7848cb"=>"98330ff418e3c9a3b2afb5f10398363043e5bb63617303a3523b64a036af3f5e7cfaddf8", "TSe20548_31"=>"88ba62b4efd7e40ff9fa891b1764eb6e43e5bb63617303a3000000000000000000e1d4e1bdb727a5ac9c00848b7c7c770a3b491a57"} 
+0

ОК, спасибо :) –

Смежные вопросы