Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs
ASP German Homepage Homepage
 

Liste

.NET 2.0 (1)
.NET Allgemein (16)
.NET Fu (5)
ADO.NET (11)
Aprilscherz (3)
ASP Grundlagen (44)
ASP Tricks (83)
ASP.NET (44)
ASPIntranet.de (5)
C# (28)
Datenbank (44)
Dokumentation (4)
IIS 6.0 (1)
Komponenten (29)
Optimierung (10)
Server (21)
Sicherheit (34)
Tee Off (6)
VB.NET (6)
WAP (8)
Web Services (11)
XML (9)

RSS 2.0 - Die neuesten fünf Artikel auf AspHeute.com


 

Suchen





 

English Articles
Chinese Articles
Unsere Autoren
 
Link zu AspHeute
Impressum
Werben
Anfragen

Erstellen eines HTTP Test Tools

Geschrieben von: Christoph Wille
Kategorie: Server

Das Testen einer Website mit verschiedenen Browsern gehört zum Alltag eines Webentwicklers - zumindest dann, wenn man nicht an einem Intranetprojekt arbeitet, wo der Browser Firmenpolitik ist.

Mit Browsertests kann man sowohl Layoutprobleme, als auch Client-side Scriptprobleme erkennen und ausmerzen. Allerdings ist damit nicht gewährleistet, daß man alle Details der Verbindung Web Server und Client manipulieren kann, was für Sicherheits- und Stabilitätstests wichtig sein kann.

Auf welche Details will ich hinaus? Zum Beispiel schickt der Browser automatisch seine Kennung, für Internet Explorer auf Windows 2000 wäre das zB:

Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)
Netscape Navigator schickt eine ähnliche Kennung, allerdings ohne den String compatible. Wenn man nicht gerade eine Komponente zur Erkennung der Browserfähigkeiten verwendet, dann parst man den String selbst auf - und macht gelegentlich Fehler, so zum Beispiel indem man Punktversionen nicht berücksichtigt, oder nachfolgende Versionen ignoriert:
If Mid(strBrowser,31,1) = 5 Then
Dieser Code würde nur für Internet Explorer Version 5.x funktionieren, bei einem Wechsel auf 6 oder mehr, müßte man die Webseiten umprogrammieren. Und es soll vorgekommen sein, daß solche Fehler überhaupt lange Zeit übersehen wurden...

Weitere Ansatzpunkte zum Testen außerhalb eines Browsers: leichteres Austesten von GET und POST, die Möglichkeit die Header direkt einsehen zu können (für cache-control, Cookie, etc), Content Types manipulieren zu können, uvm.

Im weiteren Verlauf des Artikels stelle ich nun vor, wie man sich eine interaktive Testapplikation erstellen kann. Diese kann nach Belieben an die Bedürfnisse angepasst werden, oder sogar in ein automatisiertes Test-Tool für Websites umgebaut werden.

Programmierung

Für die Programmierung habe ich 2 Tools verwendet: Visual Basic 6.0 (ASP Programmierer haben den Vorteil, nicht sehr viel dazulernen zu müssen), sowie die AspTear 1.2 Komponente von AlphaSierraPapa. Mit VB programmiere ich das Front End, und AspTear dient mir dazu, mich mit dem Webserver zu unterhalten - sprich die Seiten mit den entsprechenden Details abzufragen:

  • URL
  • Port
  • User Agent
  • Protokoll
  • Daten (GET oder POST)
  • Content Type
Vom Server zurückgeliefert werden Headers und der Inhalt (das HTML Dokument) - sowie etwaige Fehlermeldungen.

Das Programm W3Test ist als Standard EXE programmiert (Sourcecode und Executable im Download enthalten). Das fertige User Interface sieht in der Visual Basic Entwicklungsumgebung wie folgt aus:

Um nun den Code für die AspTear Komponente einzufügen, muß nur noch die Typbibliothek referenziert werden. Dies geschieht über den Befehl References im Project Menü. Mit dem Befehl Browse sucht man dann asptear.tlb und bindet sie in das Projekt ein:

Nun kann man den Code programmieren, um eine Seite vom Webserver abzuholen:

Private Sub cmdGo_Click()
On Error GoTo Err_CmdGo
    Dim strURL As String, nPort As Integer, strRetVal As String
	Dim nAction As Integer
    
    ' I simply get the text here, you can add whatever check you want
    strURL = Me.txtURL.Text
    
    ' get the port - simple check if it is numeric
    nPort = 80
    If IsNumeric(Me.txtPort) Then
        nPort = Me.txtPort
    Else
        MsgBox "The port number you entered is non-numeric."
        Exit Sub
    End If
    
    Dim tearObj As New ASPtear.ASPtear
    
    tearObj.ContentType = Me.txtContentType
    tearObj.FollowRedirects = Me.chkFollowRedirects.Value
    tearObj.HttpVersion = Me.cbProtocol.Text
    tearObj.Port = nPort
    tearObj.UserAgent = Me.txtUserAgent
    If Me.radioGET.Value = True Then 
		nAction = ACTION_GET 
	Else 
		nAction = ACTION_POST
	End If
    strRetVal = tearObj.Retrieve(strURL, nAction, Me.txtData, "", "")

    Me.txtResponse = Replace(strRetVal, vbLf, vbCrLf)
    Me.txtHeader = tearObj.Headers
    MsgBox "Retrieval finished!"
    
    Exit Sub
Err_CmdGo:
    MsgBox Err.Description & vbCrLf & "Error number: " & Err.Number
    Exit Sub
End Sub

Ich habe mich mit der Überprüfung der Benutzereingaben sehr zurückgehalten, um den Sourcecode kurz zu halten - und auch scheinbar sinnlose Anfragen zuzulassen, wie zum Beispiel ein leerer User Agent String (damit kann man sehr viel Browser-Checking Code zu Fall bringen...).

Verwendung

Die Verwendung des Tools ist sehr einfach, und als Beispiel soll die Anfrageseite für Autoren bei AspHeute dienen:

http://www.aspheute.com/Service/contactauthor.asp?
	author=Christoph+Wille&
	AuthorEmail=christophw@alphasierrapapa.com&
	artikel=20000502
Wenn man diese URL in der Adresszeile des Browsers eingibt, landet man bei der Kontaktseite für den Artikel Monitoring von ASP.

Um nun diese URL von der W3Test Applikation aus aufzurufen, muß man folgende Einstellungen eingeben (Resultat ebenfalls bereits in diesem Screenshot angezeigt):

Jetzt kann man daran gehen, POST statt GET zu verwenden, den User Agent auszuprobieren, einige Parameter des Query Strings zu verändern - um den Code der Seite auf Schwächen abzuklopfen.

Darauf hinweisen möchte ich, daß für GET als auch POST das Format für die Parameterübergabe gleich ist, also als Query String. Binäres POSTen (Dateiupload) ist nicht möglich.

Das W3Test Programm ist in der Lage Response.Redirect Anweisungen zu folgen, und zwar dann, wenn die Checkbox Follow Redirects angekreuzt ist; sonst bekommt man eine Fehlermeldung, daß der Server einen Redirect verlangt hat.

Schlußbemerkung

Das hier vorgestellte W3Test Programm schöpft nicht die gesamte Palette der Funktionalität der AspTear Komponente aus. Diese kann auch noch Benutzervalidierung, SSL Client Zertifikate, sowie das Faken des Referers (von welcher Seite der Benutzer zu dieser Seite gekommen ist).

Eine weitere Anwendungsmöglichkeit für die AspTear Komponente ist ein Skript, das jeden Tag die eigene Website besucht, und die Hauptseite mit einem Template vergleicht - um zu sehen, ob sich ein Hacker daran vergangen haben sollte. Natürlich kann die Komponente auch am Server selbst eingesetzt werden, um zum Beispiel Kreditkarten zu überprüfen.

Download des Codes

Klicken Sie hier, um den Download zu starten.

Verwandte Artikel

ASP-basierte Basic Authentication
Laden von Dateien aus dem Web mit ASP
Meta Tags von fremden Seiten parsen
Scrapen von Webseiten
Siteüberwachung mit Scheduled Tasks
Webpage-Grabbing mit dem XML Parser

Links zu anderen Sites

AspTear
Typbibliothek für AspTear

Wenn Sie jetzt Fragen haben...

Wenn Sie Fragen rund um die in diesem Artikel vorgestellte Technologie haben, dann schauen Sie einfach bei uns in den Community Foren der deutschen .NET Community vorbei. Die Teilnehmer helfen Ihnen gerne, wenn Sie sich zur im Artikel vorgestellten Technologie weiterbilden möchten.

Haben Sie Fragen die sich direkt auf den Inhalt des Artikels beziehen, dann schreiben Sie dem Autor! Unsere Autoren freuen sich über Feedback zu ihren Artikeln. Ein einfacher Klick auf die Autor kontaktieren Schaltfläche (weiter unten) und schon haben Sie ein für diesen Artikel personalisiertes Anfrageformular.

 

Und zu guter Letzt möchten wir Sie bitten, den Artikel zu bewerten. Damit helfen Sie uns, die Qualität der Artikel zu verbessern - und anderen Lesern bei der Auswahl der Artikel, die sie lesen sollten.

Bewerten Sie diesen Artikel
 Sehr gut   Nicht genügend  
   1  2  3  4  5  
 

  
   Für Ausdruck optimierte Seite

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.