Je cherche à construire un site web qui vous permet de visualiser et de manipuler des données de n'importe quelle page de n'importe quel autre site web. Pour ce faire, je dois contourner les problèmes de 'Allow Origin
' : je charge le contenu du domaine source dans un iframe
et je dois manipuler son contenu avec du javascript téléchargé depuis mon domaine.
Ma première tentative a été d'écrire un simple proxy moi-même, demandant la page des autres domaines via un serveur proxy codé en Java qui non seulement sert le contenu mais reconstruit les liens (src et href) dans le contenu de sorte que le contenu référencé par ces liens soit également téléchargé à travers mon proxy artisanal. Le résultat n'est pas mal mais a des problèmes avec les URL dans les feuilles de style et les scripts.
C'est alors que j'ai réalisé que mod_proxy_html
est censé faire exactement tout ce travail. Le problème est que je ne peux pas comprendre comment le faire fonctionner comme prévu.
Supposons que mon serveur tourne sur my-domain.com et pour proxifier et transformer le contenu d'un autre domaine, je ferais une requête comme ceci :
my-domain.com/proxy?url=http://another-domain.com/some/content
Je voudrais que mod_proxy_html
serve le contenu et réécrive les URL suivantes dans http://another-domain.com/some/content
de la manière suivante :
- Les URL absolues ne provenant pas de
another-domain.com
: pas de rewriting - URLs relatives à la racine :
/other/content
->/proxy?url=http://another-domain.com/other/content
- URLs relatives :
other/content
->/proxy?url=http://another-domain.com/some/content/other/content
- URLs relatives aux parents :
../other/content
->/proxy?url=http://another-domain.com/some/other/content
L'URL devrait être spécifiée au moment de l'exécution, pas au moment de la configuration.
Est-ce possible avec mod_proxy_html ? Quelqu'un pourrait-il fournir une configuration de travail simple pour commencer ?
EDIT 1-Première approche
La configuration de site suivante fonctionnera bien avec des sites qui utilisent des URL absolues partout comme http://www.huffingtonpost.es/
. Vous pouvez essayer cette config en localhost : http://localhost/asset/http://www.huffingtonpost.es/
ServerName localhost
LogLevel debug
ProxyRequests off
RewriteEngine On
RewriteRule ^/asset/(.*) $1 [P]
ProxyHTMLURLMap $1 /asset/
ProxyPassReverse /
ProxyHTMLURLMap / /asset/
Mais comme expliqué dans la documentation, si je tombe sur un site utilisant des URL relatives, j'aimerais que ceux-ci soient réécrits dans le html via mod_proxy_html. Donc je devrais changer le bloc Location
comme suit :
ProxyPassReverse /
#En fonction de votre système, utilisez une ligne ou une autre
#Ubuntu :
#SetOutputFilter proxy-html
#tout autre système :
ProxyHTMLEnable On
ProxyHTMLURLMap / /asset/
...ce qui ne semble pas fonctionner. Commentaires, conseils et idées les bienvenus !