使用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将人民币转换大写的脚本代码
Feb 10 Python
python使用in操作符时元组和数组的区别分析
May 19 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
Pycharm 设置默认头的图文教程
Jan 17 Python
Django如何防止定时任务并发浅析
May 14 Python
numpy数组之存取文件的实现示例
May 24 Python
python实现的汉诺塔算法示例
Oct 23 Python
python框架flask表单实现详解
Nov 04 Python
python实现飞机大战小游戏
Nov 08 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
解决pycharm导入numpy包的和使用时报错:RuntimeError: The current Numpy installation (‘D:\\python3.6\\lib\\site-packa的问题
Dec 08 Python
python利用pytesseract 实现本地识别图片文字
Dec 14 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
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
php $_SERVER当前完整url的写法
2009/11/12 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
php+js实现百度地图多点标注的方法
2016/11/30 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
不用写JS也能使用EXTJS视频演示
2008/12/29 Javascript
慎用 somefunction.prototype 分析
2009/06/02 Javascript
js截取函数(indexOf,join等)
2010/09/01 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
Chrome扩展页面动态绑定JS事件提示错误
2014/02/11 Javascript
js实现键盘上下左右键选择文字并显示在文本框的方法
2015/05/07 Javascript
本地Bootstrap文件字体图标引入却无法显示问题的解决方法
2020/04/18 Javascript
jQuery图片轮播功能实例代码
2017/01/29 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
提升页面加载速度的插件InstantClick
2017/09/12 Javascript
从0到1搭建element后台框架优化篇(打包优化)
2019/05/12 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
利用Vue的v-for和v-bind实现列表颜色切换
2020/07/17 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
keras输出预测值和真实值方式
2020/06/27 Python
解决python对齐错误的方法
2020/07/16 Python
解决PDF 转图片时丢文字的一种可能方式
2021/03/04 Python
使用css3和jquery实现可伸缩搜索框
2014/02/12 HTML / CSS
全球地下的服装和态度:Slam Jam
2018/02/04 全球购物
迪卡侬印尼体育用品商店:Decathlon印尼
2020/03/11 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
12月红领巾广播稿
2014/02/13 职场文书
校运会口号
2014/06/18 职场文书
师德先进个人材料
2014/12/20 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
2016年小学推普宣传周活动总结
2016/04/06 职场文书
Win10鼠标轨迹怎么开 Win10显示鼠标轨迹方法
2022/04/06 数码科技