2016-04-02 26 views
-1

I Bu URL'leri vardır:URL kodlama geri gerçek URL'ye

http://www.jobbsafari.se/jobbsoekning?q=trainers.php%253Fid%253D'%2Band'' 
http://www.jobbsafari.se/jobbsoekning?q=trainers.php?id%253D%2Band' 
http://tay-sen.com.ua/trainers.php?id=12%26action=show_photos%26m_lang_id=9' 

geri gerçek URL'ye onlara kod gerekir. Şu anda kullanıyorum:

string = ARGV[0] 
string.gsub("%25", '%').gsub("%53", "S").gsub(etc..) 

.gsub.gsub.gsub yapmak zorunda kalmadan birden gsub ing yapmak için daha iyi bir yolu var mı?

+0

tekerleği yeniden icat etmeyin. – sawa

+0

@sawa Size katılıyorum ama eğer "tekerleği yeniden icat etmiyorsam", bu program her zaman başarısız olur. – 13aal

+0

Seni anlamıyorum. – sawa

cevap

5

Kullanım uri:

require 'uri' 
URI.decode(your_url) 

Bu URI kodlama tamamının yerini alacaktır.

+0

bana ihtiyacım var şimdi aptal hissediyorum ... – 13aal

+0

@ 13aal size yardım etmek için buradayız;) – Mark

+1

@ 13aal Eğer cevabı kabul ederseniz iyi olurdu. :) Teşekkür demek için bir yol. ;) –

1

Sorun şu ki, URL'leriniz birden çok kez kodlanmış sorguları içeriyor. Kodlama kez oluştuysa

iyisin ama çok katmanlı olduğunda bu dağınık alabilirsiniz:

require 'uri' 

uri = URI.parse("http://tay-sen.com.ua/trainers.php?id=12%26action=show_photos%26m_lang_id=9") 
query = URI.decode_www_form(uri.query).to_h 
query # => {"id"=>"12&action=show_photos&m_lang_id=9"} 

URI.decode_www_form(query['id']).to_h 
# => {"12"=>"", "action"=>"show_photos", "m_lang_id"=>"9"} 
+0

Tamam, ve onun cevabı sorumu nasıl? Eğer şifreli URL'nin bir hash'umu varsa, oradan onunla ne yapacağım ..? – 13aal

+0

Sizi önünüzde ejderhalar olduğunu söyleyerek soruyu yanıtlamaya yardımcı olur. Sayfaların çok kodlanmış URL'ler içerdiğini ve orijinal URL'ye geri dönmeye çalışıyorsanız katmanları geri soymanız gerekeceğini bilmeniz gerekir. Bunu sizin için yapacak bir yöntem yoktur; İlk kod çözmeyi yapabilirler, ancak daha fazla şifre çözmenin gerekli olup olmadığını anlayabilmeniz gerekir. Yinelemeli olarak nasıl çözüleceğini ve sonra nasıl kontrol edildiğini anlamak zor değil. –

+0

Bu bana mantıklı geliyor, bilgi için teşekkürler. – 13aal