9
votes

Simuler un site Web distant localement pour tester

Je développe une extension de navigateur. L'extension fonctionne sur des sites Web externes Nous n'avons aucun contrôle.

Je voudrais pouvoir tester l'extension. L'un des principaux problèmes que je suis confrontés affiche un site Web 'tel quel est' localement.

est-il possible d'afficher un site Web 'tel quel est' localement?

Je veux être capable de servir le site Web exactement comme localement pour tester. Cela signifie que je veux simuler exactement les mêmes données HTTP, y compris les annonces IFrame, etc.

  • Y a-t-il un moyen facile de faire cela?

    Plus d'info:

    J'aimerais que mon système agisse aussi étroitement sur le site Web distant que possible. J'aimerais exécuter la commande extraire par exemple qui me permettrait d'aller sur le site de mon navigateur (sans Internet sur) et d'obtenir exactement la même chose que je voudrais autrement (y compris les informations qui ne sont pas à partir d'un seul domaine, Google Ads, etc.).

    Cela ne me dérange pas d'utiliser une machine virtuelle si cela aide.

    J'ai pensé que c'était une chose utile dans les tests. Surtout quand j'ai un bogue, je dois reproduire de manière fiable sur des sites qui ont de nombreux facteurs aléatoires (quelles annonces montrent, etc.).


0 commentaires

4 Réponses :


1
votes

Je ne sais pas s'il y a un facile voie, mais il y a un moyen.

Vous pouvez configurer un serveur Web local, quelque chose comme IIS, Apache ou MINIHTTPD .

Ensuite, vous pouvez saisir le contenu du site Web en utilisant wget . (Il a une option pour la mise en miroir). Et de nombreux navigateurs ont une option pour «Sauvez la page Web de l'ensemble de la page» qui prendra tout, comme des images.

Les annonces proviendront probablement des sites distants, vous devrez donc devoir modifier manuellement ces lignes dans le code HTML pour ne pas référencer les serveurs AD-serveurs, ou configurer un simulateur vous-même (comme une image de bannière).

Ensuite, vous pouvez naviguer sur votre navigateur vers http: // localhost pour visiter votre site Web local, en supposant que le port 80 est la valeur par défaut.

J'espère que cela vous aide!


2 commentaires

Merci. J'ai vraiment besoin d'obtenir ces annonces sur mon ordinateur cependant. J'aimerais que l'environnement de test soit aussi proche que possible du vrai.


En théorie, vous pouvez refléter les annonces les mêmes que le site Web principal, bien que, à un moment donné, vous allez probablement courir dans le fait que de nombreuses annonces / sites sont servis de manière dynamique, non seulement via du contenu statique.



1
votes

Je suppose que vous voulez servir un site distant qui n'est pas sous votre contrôle. Dans ce cas, vous pouvez utiliser un serveur proxy et avoir ce serveur cache chaque réponse de manière agressive. Cependant, cela a des limites. Tout d'abord, vous devrez visiter chaque site que vous avez l'intention d'utiliser via ce proxy (avec un navigateur par exemple), seconde, vous ne pourrez pas imiter le traitement des formulaires.

Vous pouvez également utiliser une araignée pour télécharger tout le contenu d'un certain site Web. Selon le logiciel d'araignée, il peut même être en mesure de télécharger des liens de JavaScript. Vous pouvez ensuite utiliser un serveur Web pour servir ce contenu.


4 commentaires

Un serveur de proxy ressemble à un droit idée mais comment puis-je continuer mettre en œuvre ce genre de chose sans avoir à écrire un serveur proxy moi-même?


Je ne sais pas quel proxy peut faire ce genre de mise en cache agressive, mais vous voudrez peut-être jeter un coup d'œil à Squid, c'est assez populaire. Quel système d'exploitation utilisez-vous?


Le système d'exploitation n'est pas un problème, cela ne vous dérange pas d'utiliser Windows ou Linux pour cela. Nous sommes une entreprise bien financée.


Ok, je pense Vous pouvez le faire avec Squid. Si je suis correct, vous devrez utiliser le Reply_header_Access, * _TTL et les directives minimales_expirées_Time, mais je n'ai pas essayé.



4
votes

Comme on l'a déjà mentionné, les proxy de mise en cache devraient faire le tour pour vous (BTW, c'est la solution la plus simple). Il y a beaucoup de mises en œuvre différentes, vous devez donc simplement passer du temps à choisir un bon choix (en fonction de mon expérience Squid est une bonne solution). Quoi qu'il en soit, je voudrais souligner deux autres options intéressantes:

Option 1: Betamax

Betamax est un outil permettant de moquer des ressources HTTP externes telles que des services Web et des API de repos dans vos tests. Le projet a été inspiré par la bibliothèque de magnétoscope pour Ruby. Betamax vise à résoudre ces problèmes en interceptant les connexions HTTP initiées par votre application et en rejouant les réponses précédemment enregistrées.

Betamax est livré en deux saveurs. Le premier est un proxy HTTP et HTTPS pouvant intercepter le trafic fabriqué de quelque manière que ce soit qui respecte les propriétés du système http.proxyhost et http.proxyport de Java. La seconde est une simple enveloppe pour Apache httpClient.

BTW, Betamax a une fonctionnalité très intéressante pour vous:

Betamax est un outil de test et non un proxy HTTP conforme aux spécifications. Il ignore tout et tous les en-têtes qui seraient normalement utilisés pour prévenir une mise en cache de proxy ou stocker du trafic HTTP.

Option 2: Wireshark et replay proxy

Prenez tout le trafic que vous souhaitez utiliser Wireshark et rejouez-le. Ce que je dirais que ce n'est pas si difficile à mettre en œuvre l'outil de rejouer requis, mais vous pouvez utiliser une solution disponible appelée Replayfroxy

ReplayProxy analyse des flux http des fichiers .pcap Ouvre une prise TCP sur le port 3128 et écoute comme proxy HTTP à l'aide des réponses HTTP extraites en tant que cache tout en refusant toutes les demandes d'URL inconnues.

Une telle approche vous fournit la simulation précise de contrôle et de bit-to-bit.


1 commentaires

ReplayProxy sonne exactement comme ce dont j'ai besoin et que ce ne sont que 200 lignes de code. Je suis sûr que je serai en mesure de travailler avec son code et son requin filaire pour obtenir le comportement dont j'ai besoin. Cela résout mon problème, merci.



0
votes

Ce service http://www.json-gen.com fournit simule pour HTML, JSON et XML via le repos. De cette façon, vous pouvez tester votre frontale séparément de Backend.


1 commentaires

Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses de liaison seules peuvent devenir invalides si la page liée change, entraînant votre réponse étant inutile et par conséquent supprimée.