2010-04-26 6 views
5

Questo è quello che mi piacerebbe realizzare:Come posso eseguire il rendering di un sito sul mio dominio con Ruby on Rails o altro?

  1. URL input dell'utente (ad esempio http://google.com)
  2. ottenere la pagina, e rendere conto mio dominio
  3. Attraversare il DOM (Utilizzo di JS) e tutto ciò jazz

Il problema è che non voglio usare un iFrame, perché quindi non posso attraversare il DOM della pagina caricata.

L'unica soluzione che posso pensare è analizzare la pagina per gli URL relativi e impostarli come assoluti. Potrebbe non funzionare ovunque. Un altro modo è eseguire wget e salvare tutto (anche le immagini) in una cartella temporanea. Ridimensionare questo sarebbe impossibile.

Altre idee?

+3

Cosa stai cercando di realizzare? Dirottando il sito di qualcun altro per mostrare i tuoi annunci o cosa? Ti rendi conto che la tua domanda sembra abbastanza ombreggiata, giusto? – jdl

+1

In realtà sto creando uno strumento per i proprietari di siti Web per aggiungere un plug-in per il loro sito, senza entrare nel codice. Quello che voglio fare è sapere quale elemento DOM vuole che il plugin sia in grado di allegare a, senza metterlo effettivamente nel codice. Tutto quello di cui avrebbero bisogno è una linea veloce di javascript, un codice API, e dovremmo abbinare la pagina con i nostri elementi db di dom su cui lui/lei voleva che il plugin agisse. Non è affatto losco! Geeze. – kineticac

risposta

3

Sembra un semplice proxy inverso. Il back-end del tuo binario può usare open-uri per caricare un sito in un'azione e rendere lo stesso HTML.

class ProxyController < ActionController::Base 

    def get 
    require 'open-uri' 
    file = open params[:url] 
    render :inline => file.read 
    end 

end 

Accedere a questa usando qualcosa come: (non dimenticate di url-encode, se necessario)

http://mysite.com/proxy/get?url=http://www.proxiedsite.com 

Si potrebbe fare un po 'di analisi prima del rendering HTML, aggiungendo quello che vuoi alla pagina, incluso javascript.

Suppongo che consulterai i termini di utilizzo per qualsiasi contenuto che stai trasmettendo.

Problemi correlati