使用Python制作获取网站目录的图形化程序


Posted in Python onMay 04, 2015

1.pyqt4写的界面 find_ui.py

#-*- coding: utf-8 -*-
from PyQt4 import QtCore, QtGui
 
try:
  _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
  def _fromUtf8(s):
    return s
 
try:
  _encoding = QtGui.QApplication.UnicodeUTF8
  def _translate(context, text, disambig):
    return QtGui.QApplication.translate(context, text, disambig, _encoding)
except AttributeError:
  def _translate(context, text, disambig):
    return QtGui.QApplication.translate(context, text, disambig)
 
class Ui_Form(object):
  def setupUi(self, Form):
    Form.setObjectName(_fromUtf8("Form"))
    Form.resize(516, 467)
    self.label = QtGui.QLabel(Form)
    self.label.setGeometry(QtCore.QRect(20, 10, 54, 16))
    self.label.setObjectName(_fromUtf8("label"))
    self.edit_address = QtGui.QLineEdit(Form)
    self.edit_address.setGeometry(QtCore.QRect(80, 10, 351, 20))
    self.edit_address.setObjectName(_fromUtf8("edit_address"))
    self.button_search = QtGui.QPushButton(Form)
    self.button_search.setGeometry(QtCore.QRect(440, 10, 61, 23))
    self.button_search.setObjectName(_fromUtf8("button_search"))
    self.text_all = QtGui.QTextEdit(Form)
    self.text_all.setGeometry(QtCore.QRect(20, 40, 411, 261))
    self.text_all.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
    self.text_all.setObjectName(_fromUtf8("text_all"))
    self.label_2 = QtGui.QLabel(Form)
    self.label_2.setGeometry(QtCore.QRect(20, 320, 54, 12))
    self.label_2.setObjectName(_fromUtf8("label_2"))
    self.text_exist = QtGui.QTextEdit(Form)
    self.text_exist.setGeometry(QtCore.QRect(20, 340, 411, 64))
    self.text_exist.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
    self.text_exist.setObjectName(_fromUtf8("text_exist"))
    self.label_3 = QtGui.QLabel(Form)
    self.label_3.setGeometry(QtCore.QRect(380, 310, 91, 20))
    self.label_3.setText(_fromUtf8(""))
    self.label_3.setObjectName(_fromUtf8("label_3"))
    self.edit_add = QtGui.QLineEdit(Form)
    self.edit_add.setGeometry(QtCore.QRect(20, 420, 411, 20))
    self.edit_add.setObjectName(_fromUtf8("edit_add"))
    self.button_add = QtGui.QPushButton(Form)
    self.button_add.setGeometry(QtCore.QRect(440, 420, 71, 23))
    self.button_add.setObjectName(_fromUtf8("button_add"))
    self.label_4 = QtGui.QLabel(Form)
    self.label_4.setGeometry(QtCore.QRect(20, 440, 251, 16))
    self.label_4.setObjectName(_fromUtf8("label_4"))
 
    self.retranslateUi(Form)
    QtCore.QMetaObject.connectSlotsByName(Form)
 
  def retranslateUi(self, Form):
    Form.setWindowTitle(_translate("Form", "目录探测工具", None))
    self.label.setText(_translate("Form", "网站地址:", None))
    self.button_search.setText(_translate("Form", "探测", None))
    self.label_2.setText(_translate("Form", "结果:", None))
    self.button_add.setText(_translate("Form", "添加地址", None))
    self.label_4.setText(_translate("Form", "例如:/admin/manager.asp 请以斜杠开始", None))

2. 启动文件 start.py

#!/usr/local/bin/python
#coding=utf-8
 
import sys
import os
import time
import httplib
import re
from PyQt4 import QtCore, QtGui
from threading import Thread
 
from find_ui import Ui_Form
 
 
class MyForm(QtGui.QMainWindow):
  def __init__(self, parent=None):
    QtGui.QWidget.__init__(self, parent)
    self.ui = Ui_Form()
    self.ui.setupUi(self)
    QtCore.QObject.connect(self.ui.button_search,QtCore.SIGNAL("clicked()"), self.startthread)
    QtCore.QObject.connect(self.ui.button_add,QtCore.SIGNAL("clicked()"), self.addAddress)
  def startSearch(self):
    self.ui.label_3.setText("")
    self.getAddress()
    address=str(self.ui.edit_address.text())
    self.accessAddesss(address)
     
  def startthread(self):
    t1=Thread(target=self.startSearch,)
    t1.start()
     
     
  def getAddress(self):
    try:
      global addresslist
      addresslist=[]
      filePath=os.getcwd()+"\\address.txt"
      # if not os.path.isfile(filePath):
      #  print 'aaa'      
       #  return 0
         
      fileAddress=file(filePath,"r")
      for address_line in fileAddress.readlines():
        if address_line not in addresslist:
          addresslist.append(address_line)
          pass
        pass
      pass
      fileAddress.close()
       
    except:
      #self.ui.text_all.setText('aaa')
      self.ui.text_all.setText(u'打开文件错误')
      pass
    finally:
      #fileAddress.close()
      pass
    # print addresslist[0]
   
  def accessAddesss(self,host):
    try:
      print host
      print len(addresslist)
      for oneAddress in addresslist:
        print len(addresslist)
        oneAddress=oneAddress.replace("\n","")
        print oneAddress
        connection=httplib.HTTPConnection(host,80,timeout=10)
        connection.request("GET",oneAddress)
        response=connection.getresponse()
        result=response.reason
        resultNum=response.status
         
        if "OK" in result or "Forbidden" in result:
          getaddress="http://"+host+oneAddress+"------"+str(resultNum)+":"+result
          self.ui.text_exist.append(getaddress)
        else:
          self.ui.text_all.append("http://"+host+oneAddress+"------"+str(resultNum)+":"+result)
           
        connection.close()
    except Exception as e:
      print e.message
    self.ui.label_3.setText(u"探测完成")
    self.ui.label_3.colorCount()
     
  def addAddress(self):
    try:
      filePath=os.getcwd()+"\\address.txt"   
      fileAddress=file(filePath,"a")
      newAddress="\n"+str(self.ui.edit_add.text())
      print newAddress
      fileAddress.write(newAddress)
      fileAddress.close()
    except Exception as e:
      print e.message
     
 
if __name__ == "__main__":
  app = QtGui.QApplication(sys.argv)
  myapp = MyForm()
  myapp.show()
  sys.exit(app.exec_())

3.address.txt 扫描地址名单文件,可以通过编辑改文件制定自己的规则,你懂的~~

/admin.php
/admin/
/administrator/
/moderator/
/webadmin/
/adminarea/
/bb-admin/
/adminLogin/
/test/login.jsp
/source/login.php
Python 相关文章推荐
python求pi的方法
Oct 08 Python
在Python中使用sort()方法进行排序的简单教程
May 21 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
Jan 20 Python
Python使用filetype精确判断文件类型
Jul 02 Python
python下setuptools的安装详解及No module named setuptools的解决方法
Jul 06 Python
Python数据分析之双色球中蓝红球分析统计示例
Feb 03 Python
Python两台电脑实现TCP通信的方法示例
May 06 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
keras.layer.input()用法说明
Jun 16 Python
python 从list中随机取值的方法
Nov 16 Python
matplotlib运行时配置(Runtime Configuration,rc)参数rcParams解析
Jan 05 Python
python基础之匿名函数详解
Apr 21 Python
使用Python脚本来获取Cisco设备信息的示例
May 04 #Python
用Python脚本来删除指定容量以上的文件的教程
May 04 #Python
编写Python脚本来获取Google搜索结果的示例
May 04 #Python
编写Python脚本来实现最简单的FTP下载的教程
May 04 #Python
Python下线程之间的共享和释放示例
May 04 #Python
简单介绍Python中利用生成器实现的并发编程
May 04 #Python
简单分析Python中用fork()函数生成的子进程
May 04 #Python
You might like
PHP新手上路(八)
2006/10/09 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
javascript prototype原型操作笔记
2009/12/07 Javascript
JavaScript基本编码模式小结
2012/05/23 Javascript
JS定时关闭窗口的实例
2013/05/22 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
2015/05/01 Javascript
javascript实现base64 md5 sha1 密码加密
2015/09/09 Javascript
JS实现动态增加和删除li标签行的实例代码
2016/10/16 Javascript
让编辑器支持word复制黏贴、截屏的js代码
2016/10/17 Javascript
react-native使用react-navigation进行页面跳转导航的示例
2017/09/07 Javascript
JS中touchstart事件与click事件冲突的解决方法
2018/03/12 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
微信小程序vant弹窗组件的实现方式
2020/02/21 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
自动化Nginx服务器的反向代理的配置方法
2015/06/28 Python
python 基于TCP协议的套接字编程详解
2019/06/29 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
米兰网婚纱礼服法国网上商店:Milanoo法国
2016/08/20 全球购物
澳洲最大的时尚奢侈品电商平台:Cettire
2020/06/15 全球购物
Shell脚本如何向终端输出信息
2014/04/25 面试题
大学生自荐信
2013/12/11 职场文书
中学生自我鉴定
2014/02/04 职场文书
个人授权委托书模板
2014/09/14 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
优秀党员申报材料
2014/12/18 职场文书
2017新年晚会开幕词
2016/03/03 职场文书
PHP中->和=>的意思
2021/03/31 PHP
Java基础之线程锁相关知识总结
2021/06/30 Java/Android
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL