Python

Banner Grabber

Refresh otak bentar dari koding php. Buat web scanner atau banner grabber untuk mengambil data web server tertentu kemudian menyimpan hasilnya. Bukan murni scanning karena yang scan adalah netcraft. Untuk hasil datanya belum dirapikan karena ini juga cuma iseng, qe3. Berikut adalah kodenya


#!/usr/bin/env python
# myscanner.py
# Web Scanner Using Python
# Andrey Ferriyan
#
from BeautifulSoup import BeautifulSoup
import urllib
import os
import getopt
import sys
class MyScanner(object):
def __init__(self,url_victim):
self.url_victim = url_victim
self.gabung = "http://toolbar.netcraft.com/site_report?url=http://" + self.url_victim
def BeginScan(self):
self.scan = urllib.urlopen(self.gabung)
self.sup = BeautifulSoup(self.scan)
def Remove(self):
self.remove1 = self.sup.find('div',id='nav')
self.remove1.replaceWith("")
self.remove2 = self.sup.find('div',id='header')
self.remove2.replaceWith("")
self.dipercantik = self.sup.prettify()
def ResultFile(self):
self.folder = "result/"+self.url_victim
os.makedirs(self.folder)
self.fileresult = self.folder + '/result.html'
self.result = open(self.fileresult,'w+')
self.result.write(self.dipercantik)
self.result.close()
def Usage():
usage = '''
000-=====II=====II=====II=====II=====-000
00-= Web Scanner Using Python =-00
00-= Author : Andrey Ferriyan =-00
00-= =-00
000-=====II=====II=====II=====II=====-000
command : myscanner.py [option]
[option]:
-h / --help : help
-u / --url= : url
'''
print usage
if __name__ == '__main__':
try:
opts, args = getopt.getopt(sys.argv[1:], "hu:", ["help", "url="])
except getopt.GetoptError, err:
print str(err)
Usage()
sys.exit(2)
for o, a in opts:
if o in ("-h", "--help"):
Usage()
sys.exit()
elif o in ("-u","--url"):
my = MyScanner(a)
my.BeginScan()
my.Remove()
my.ResultFile()
else:
print "Kesalahan tidak tertangani"

File kecil ini membutuhkan Sup Indah dalam menjalankan aksinya. Btw, disarankan hanya yang tahu python yang boleh mencoba :). Selamat mencoba.

Leave a Reply

Your email address will not be published. Required fields are marked *