Python Websniffer

Eingestellt von Matthias Süß |

Der Grundstein für den Python Websniffer ist gelegt. Python bringt viele Module schon mit, sodass man igentlich nur die passenden finden muss und schon geht es mit ein paar Zeilen Code ab. Die Funktionalitäten sollen im Beta-Release den Umfang von http://web-sniffer.net/ haben. Darüber hinaus möchte ich noch ein paar zusätzliche Features einbauen, v.a. wenn es um Redirects geht. Wenn man beispielsweise im nachfolgenden Code den Wert der Variablen domain von "www.rentaseo.de" auf "rentaseo.de" setzt, erhält man ganz korrekt einen Status 301 (Moved Permanently). Exceptions gehören auch noch aufgefangen etc ...


import httplib
import string
import os

opera = {"User-Agent":"Opera/9.20 (Windows NT 6.0; U; en)", "Accept-Charset":"ISO-8859-1,UTF-8;q=0.7,*;q=0.7", "Cache-Control":"no", "Accept-Language":"de,en;q=0.7,en-us;q=0.3", "Referer":"http://python-dev.blogspot.com"}

domain = 'www.rentaseo.de'
path = '/'
method = 'GET'
params = None
profile = opera

conn = httplib.HTTPConnection(domain)
conn.request(method, path, params, profile)
stat = conn.getresponse()
headers = stat.getheaders()
version = stat.version
status = stat.status
reason = stat.reason
data = stat.read()
conn.close()

file_name = domain.replace(".", "-")
file_object = open(file_name, "w")
file_object.write(data)
file_object.close()

print "\n"
print "WEBSNIFFER 0.1"
print "+++++++++++++++++"
print "\n"
print "Header (Client)"
print "-----------------"
for key, value in profile.iteritems():
print "%s \t %s" % (key, value)
print "-----------------"
print "\n"
print "Header (Server)"
print "-----------------"
print "HTTP \t %s" % (version)
print "Status \t %s (%s)" % (status, reason)
for key, value in headers:
print "%s \t %s" % (key, value)
print "-----------------"
print "\n"
print "Quelltext"
print "-----------------"
print "Quelltext geschrieben in File:"
print file_name
print "-----------------"
print "\n"


Was macht nun dieses kleine Script bereits? Eigentlich alles was der Websniffer auch kann, lediglich die Profile müssen noch implementiert werden. Die Formatierung des HTML wäre auch noch wünschenswert.


WEBSNIFFER 0.1
+++++++++++++++++


Header (Client)
-----------------
Accept-Charset ISO-8859-1,UTF-8;q=0.7,*;q=0.7
Cache-Control no
Accept-Language de,en;q=0.7,en-us;q=0.3
Referer http://python-dev.blogspot.com
User-Agent Opera/9.20 (Windows NT 6.0; U; en)
-----------------


Header (Server)
-----------------
HTTP 11
Status 200 (OK)
x-powered-by PHP/4.4.0
transfer-encoding chunked
set-cookie PHPSESSID=4b33b42bdee7cb22983ee4ffcf02be04; path=/
expires Thu, 19 Nov 1981 08:52:00 GMT
server Apache/2.0.54 (Linux/SUSE)
pragma no-cache
cache-control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
date Mon, 16 Jun 2008 10:25:04 GMT
content-type text/html; charset=UTF-8
x-pingback http://www.rentaseo.de/xmlrpc.php
-----------------


Quelltext
-----------------
Quelltext geschrieben in File:
www-rentaseo-de
-----------------


Das Beispiel zeigt die Ausgabe bei der Abfrage nach www.rentaseo.de.