2013-05-05 12 views
9

Ich entwickle eine Browser-Erweiterung. Die Erweiterung funktioniert auf externen Websites, auf die wir keinen Einfluss haben.Eine Remote-Website lokal zum Testen simulieren

Ich möchte in der Lage sein, die Erweiterung zu testen. Eines der Hauptprobleme, mit denen ich konfrontiert bin, ist das Anzeigen einer Website "wie sie ist" vor Ort.

Ist es möglich, eine Website "wie besehen" lokal anzuzeigen?

Ich möchte in der Lage sein, die Website genau wie lokal vor Ort zum Testen zu dienen. Das heißt, ich möchte exakt die gleichen HTTP-Daten simulieren, einschließlich iFrame-Anzeigen usw.

  • Gibt es eine einfache Möglichkeit, dies zu tun?

Weitere Informationen:

würde ich mein System mag als eng mit der Remote-Website wie möglich zu handeln. Ich würde zum Beispiel den Befehl fetch ausführen, der es mir erlauben würde, in meinem Browser auf die Seite zu gehen (ohne das Internet) und genau dasselbe zu bekommen, was ich sonst hätte (einschließlich Informationen, die nicht von einer einzigen Domain stammen, Google Ads) , etc).

Ich habe keine Probleme mit einer virtuellen Maschine, wenn dies hilft.

Ich dachte, das war eine ziemlich nützliche Sache beim Testen. Vor allem, wenn ich einen Fehler habe, muss ich zuverlässig auf Websites mit vielen zufälligen Faktoren reproduzieren (welche Anzeigen zeigen, etc.).

Antwort

4

Wie bereits erwähnt, sollten Caching-Proxies die Lösung für Sie sein (BTW, das ist die einfachste Lösung).Es gibt ziemlich viele verschiedene Implementierungen, so dass Sie nur einige Zeit brauchen, um eine richtige auszuwählen (nach meiner Erfahrung ist Tintenfisch eine gute Lösung). Wie dem auch sei, ich möchte zwei weitere interessante Optionen hervorzuheben:

Option 1: Betamax

Betamax ist ein Werkzeug für spöttische externe HTTP-Ressourcen wie Web Services und REST-APIs in Ihren Tests. Das Projekt wurde von der VCR-Bibliothek für Ruby inspiriert. Betamax versucht, diese Probleme zu lösen, indem es HTTP-Verbindungen abfängt, die von Ihrer Anwendung ausgelöst wurden, und zuvor aufgezeichnete Antworten wiederholt.

Betamax gibt es in zwei Geschmacksrichtungen. Der erste ist ein HTTP- und HTTPS-Proxy, der Datenverkehr abfangen kann, der auf irgendeine Weise erstellt wurde, die die http.proxyHost- und http.proxyPort-Systemeigenschaften von Java berücksichtigt. Die zweite ist ein einfacher Wrapper für Apache HttpClient.

BTW, hat Betamax eine sehr interessante Funktion für Sie:

Betamax ist ein Test-Tool und kein spec-konformen HTTP-Proxy. Es ignoriert alle Header, die normalerweise verwendet werden, um zu verhindern, dass ein Proxy HTTP-Daten zwischenspeichert oder speichert.

Option 2: Wireshark und Replay-Proxy

greifen alle Verkehrs Sie sich mit der Wireshark interessiert sind und es wiederholen. Dies würde ich sagen, es ist nicht so schwer ist erforderlich Wiedergabe-Tool zu implementieren, aber Sie können replayproxy

Replayproxy analysiert HTTP-Streams von .pcap Dateien öffnet ein TCP-Socket an Port 3128 und wartet als HTTP genannt verfügbare Lösung verwenden Proxy, der die extrahierten HTTP-Antworten als Cache verwendet und alle Anfragen für unbekannte URLs ablehnt.

Dieser Ansatz bietet Ihnen die volle Kontrolle und bitgenaue Simulation.

+0

Replayproxy klingt genau so, wie ich es brauche, und es sind nur 200 Zeilen Code. Ich bin mir sicher, dass ich in der Lage sein werde, mit seinem Code und dem Drahthai zu arbeiten, um das Verhalten zu erreichen, das ich brauche. Dies löst mein Problem, danke. –

1

Ich weiß nicht, ob es eine easy Weg gibt, aber es gibt einen Weg.

Sie können einen lokalen Webserver wie IIS, Apache oder minihttpd einrichten.

Dann können Sie den Inhalt der Website mit wget greifen. (Es hat eine Option zum Spiegeln). Und viele Browser haben eine Option für "ganze Webseite speichern", die alles wie Bilder aufnimmt.

Anzeigen stammen höchstwahrscheinlich von Remotestandorten. Daher müssen Sie diese Zeilen im HTML manuell bearbeiten, um entweder nicht auf die tatsächlichen Ad-Server zu verweisen oder selbst eine Scheinanzeige (wie ein Bannerbild) einzurichten.

Dann können Sie Ihren Browser zu http://localhost navigieren, um Ihre lokale Website unter der Annahme Port 80 zu besuchen, der die Standardeinstellung ist.

Hoffe, das hilft!

+0

Danke. Ich muss diese Anzeigen jedoch unbedingt auf meinem Computer installieren. Ich möchte, dass die Testumgebung so nah wie möglich an der realen Umgebung ist. –

+0

Theoretisch können Sie die Anzeigen genauso wie die Hauptwebsite spiegeln, obwohl Sie wahrscheinlich irgendwann feststellen werden, dass viele Anzeigen/Websites dynamisch geschaltet werden und nicht nur über statischen Inhalt. – canhazbits

1

Ich nehme an, Sie möchten eine Remote-Site bedienen, die nicht unter Ihrer Kontrolle ist. In diesem Fall können Sie einen Proxy-Server verwenden und diesen Server jede Antwort dynamisch zwischenspeichern. Dies hat jedoch seine Grenzen. Zuerst müssen Sie jede Site besuchen, die Sie über diesen Proxy benutzen wollen (zB mit einem Browser), zweitens können Sie die Formularverarbeitung nicht emulieren.

Alternativ können Sie eine Spinne verwenden, um den gesamten Inhalt einer bestimmten Website herunterzuladen. Abhängig von der Spider-Software kann es sogar in der Lage sein, JavaScript-gebaute Links herunterzuladen. Sie können dann einen Webserver verwenden, um diesen Inhalt zu liefern.

+0

Ein Proxy-Server klingt wie ein richtiges _idea_, aber wie würde ich _implementieren_ dieser Art von Sache fortsetzen, ohne selbst einen Proxy-Server schreiben zu müssen? –

+0

Ich weiß nicht, welcher Proxy diese Art von aggressivem Caching ausführen kann, aber vielleicht möchten Sie sich einen Tintenfisch anschauen, der ziemlich populär ist. Welches Betriebssystem verwenden Sie? – Janoszen

+0

OS ist kein Problem, ich habe nichts dagegen, Windows oder Linux dafür zu verwenden. Wir sind eine gut finanzierte Firma. –

0

Dieser Service http://www.json-gen.com bietet Mock für HTML, JSON und XML über Rest. Auf diese Weise können Sie Ihr Frontend separat vom Backend testen.

+0

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert, was dazu führt, dass Ihre Antwort nutzlos ist und folglich gelöscht wird. – kayess

Verwandte Themen