[ruby-it] Mi annoio: anonymizer in rails (anonyrails)

Tucano tucano a recipient.cc
Mer 10 Dic 2008 17:32:53 CET


Il giorno 10/dic/08, alle ore 15:14, Paolo Montrasio ha scritto:

> Se ho ben capito quel che vuoi fare (una catena di proxy http?) [..]


Ti faccio un esempio con del software disponibile:

Prendi http://anonymouse.org, e nel'input text della pagina inserisci  
l'indirizzo di un'altro anonymizer ... :)

tipo http://www.shadowsurf.com/ e ti ritrovi con un URL come questo:

http://anonymouse.org/cgi-bin/anon-www.cgi/http://www.shadowsurf.com/

Ora proviamo a fare chaining ed andare su google.... l'URL diventa cosi:

http://anonymouse.org/cgi-bin/anon-www.cgi/http://www2.shadowsurf.com/cgi-bin/nph-shadowsurf.cgi/010110A/x-proxy/start

... un URL orribile no?

A me invece piacerebbe poter fare un proxy chaining "REST" (mi scuso  
se sto usando questa definizione in modo errato), tipo:

http://anoynimizer1/http://anonymizer2/http://anonymizer3/http://www.google.it/

sarebbe fighissimo! (ditemi se esiste gia' qualcosa di simile!)

> Per la tua domanda numero 3: se il browser fa una richiesta al tuo
> server Rails per l'HTML, farà a lui anche tutte quelle per js,  
> immagini,
> css ed altro che sono riferiti dall'HTML; e questo mi pare che lo  
> sai e
> così vorresti riscrivere tutte le url di quei contenuti per bypassare
> Rails. Temo però che sia un compito improbo e probabilmente  
> impossibile
> da portare a termine con successo (pensa alle url generate da
> javascript). Dovresti mettere davanti a Rails un altro server  
> (Apache?)
> a cui far gestire come proxy tutti i mime-type diversi dall'html, ma
> questo non renderebbe inutile il proxy Rails?
>

Sigh sono d'accordo: il compito e' arduo

Mi son messo a spiare quello che (credo) fanno i CGI-proxy disponibili  
in rete
(a parte scavallare le passsword... che lo fanno di sicuro ...)

Anonymouse per esempio innietta nella pagina un tag "base": esempio

\<base href="http://anonymouse.org/cgi-bin/anon-www.cgi/http://www.yahoo.com/_ylh=X3oDMTFnaGtyajVzBF9TAzI3MTYxNDkEcGlkAzEyMjg5MTg5NTkEdGVzdAMwBHRtcGwDdGFibGUuaHRtbA--/ 
" target="_top"\>
Poi modifica i tag di tutte le immagini, action dei forms, etc...
\<img src="http://anonymouse.org/cgi-bin/anon-www.cgi/http://l.yimg.com/a/i/ww/beta/y3.gif 
" width="232" height="44" alt="Yahoo!" title="Yahoo">
a anche nel codice javascript.... !
Esempio (da google: http://anonymouse.org/cgi-bin/anon-www.cgi/http://www.google.it/)
f.src="http://anonymouse.org/cgi-bin/anon-www.cgi/http://www.google.it/ 
#"
Insomma un lavoraccio, dovrei fare la stessa cosa, aggiungendo a tutti  
i path che trovo la mia "catena di proxy rails" come prefisso...

Ora passiamo al mio tentativo di smanettone... :)
Questo e' il mio controller: http://pastie.org/335826
per farlo girare, basta aggiungere a config/route.rb:
map.connect ':myurl', :controller => 'hide', :action =>  
'index', :requirements => { :myurl => /.*/ }

In pratica ho aggiunto qualcosa di veramente grezzo che sostituisce  
tutti i pattern
/src="(.*?)"/
aggiungendo "http://0.0.0.0:3000/nomehost".
con questa schifezza (e' una prova, siate buoni) sono riuscito a  
visualizzare il logo di google (chiamando l'url http://0.0.0.0:3000/http://www.google.it/index.html)
Domande per i volenterosi che mi vogliono rispondere (vedi codice at http://pastie.org/335826)
1. ho inserito il codice che modifica gli url in un metodo private del  
controller, corretto?
2. il metodo viene chiamato da un "after_filter", e' un corretto uso  
dei filtri?
3. Se usate il controller puntando ad un'immagine, l'immagine viene  
renderizzata come testo! praticamente un more su un file binario via  
web ... (esempio: http://0.0.0.0:3000/http://www.google.it/intl/it_it/images/logo.gif) 
; eppure quando rails fa la richiesta riferita alla pagina index.html  
il logo e' visualizzato correttamente. Non e' strano?

Qui il log di mongrel:
Processing HideController#index (for 127.0.0.1 at 2008-12-10 17:15:22)  
[GET] Parameters: {"myurl"=>"http://www.google.it/index.html"}
Completed in 63ms (View: 0, DB: 0) | 200 OK [http://0.0.0.0/http://www.google.it/index.html 
]
Processing HideController#index (for 127.0.0.1 at 2008-12-10 17:15:22)  
[GET] Parameters: {"myurl"=>"http://www.google.it/intl/it_it/images/logo.gif 
"}
Completed in 80ms (View: 0, DB: 0) | 200 OK [http://0.0.0.0/http://www.google.it/intl/it_it/images/logo.gif 
]
Processing HideController#index (for 127.0.0.1 at 2008-12-10 17:15:22)  
[GET] Parameters: {"myurl"=>"images/nav_logo3.png"}
Errno::ECONNREFUSED (Connection refused - connect(2)): <-- QUESTA IL  
MIO super oneline parser non lo becca ;-)
>
> Paolo
>
> -- 
> Posted via http://www.ruby-forum.com/.
> _______________________________________________
> Ml mailing list
> Ml a lists.ruby-it.org
> http://lists.ruby-it.org/mailman/listinfo/ml
>



More information about the Ml mailing list