Python多线程爬虫抓取扫描器
Python多线程扫描器介绍
对于小白来说,玩蛇网在这里介绍的扫描器,并非是条码扫描器;
其实多线程扫描器是python 爬虫中的一种,可以自动检测远程服务器、Web站点等安全漏洞、弱口令、扫描IP、文件、端口、目录的Python程序,它能够快速的准确的发现扫描目标所存在的漏洞,为渗透入侵安全检测等打下了铺垫。
python 多线程爬虫相关的知识也是Python黑客学习渗透技术必须所掌握的。
例如这个Python Hacker 工具,简单来说有如下作用:
1. 站点漏洞、木马、危险程序的扫描
2. 扫描对比文件差异、监控网站文件
3. 检测网页状态码 (200、403、404、500==)
4. 检测网站是否SEO作弊 [针对用户和搜索引擎返回不一样的结果]
5. 网站压力测试 iis连接数等 虚拟主机空间 连接数 150个
6. 模拟搜索引擎蜘蛛抓取 US User-Agent 用户代理
7. 网站程序以及版本确认,网站后台扫描
8. 扫描端口等等
需要实现的Python扫描器的简单功能有:
1. 多线程扫描(加快速度)
2. 模拟搜索引擎爬虫(User-Agent)
3. 使用代理服务器(大量代理IP切换抓取)
4. 扫描状态码、文件目录等返回
5. 过滤不需要的文件或目录等
6. 可以手动更改匹配扫描的字典
7. 可以做成带图形化界面的黑客工具,
如下图所示:(本节教程为终端版,以后会推出相应的GUI版)
三、测试多线程爬虫环境搭建
1. Linux\Mac OS X\Windows均可
2. 编辑器IDE、Python2.X/Python3.x
3. 本地搭建测试用开源Web程序或Blog程序 (玩蛇网教程环境: apache2 + php5 + wordpress)
4. 抓取匹配的列表字典、目录或漏洞文件字典(wordpress , zblog, dedecms等)
5. 确保本地网络与被扫描服务器之间是连通、稳定的
6. 注:建议在本地搭建测试环境,切勿扫描网络上面其它网站、服务器,此为非法行为!
四、黑客工具实战代码案例剖析
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# -*- coding:utf-8 -*- __author__ = "python.com" import os import urllib2 import threading import Queue import time import random q = Queue.Queue() # Queue产生一个队列,有3种类型队列 默认用 FIFO队列 threading_num = 5 # 开启5个线程 # 扫描本地IP或域名 # 百度蜘蛛UA Baidu_spider = "Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" # 不需要的文件过滤列表 exclude_list = [ '.jpg' , '.gif' , '.css' , '.png' , '.js' , '.scss' ] proxy_list = [ # 代理服务器,可能已经失效,换为自己的 { 'http' : '117.28.254.130:8080' }, { 'http' : '118.144.177.254:3128' }, { 'http' : '113.118.211.152:9797' }, ] # 打开字典文件,开始过滤不需要的文件路径 with open ( "/home/leo/app_txt/wordpress.txt" , "r" ) as lines: for line in lines: line = line.rstrip() if os.path.splitext(line)[ 1 ] not in exclude_list: q.put(line) #将line传入到队列 q 中 # 扫描器方法 def crawler(): while not q.empty(): # 循环 path = q.get() 将line从队列 q 中取出来 url = "%s%s" % (domain_name, path) # 组合url地址,用于下一步提交 random_proxy = random.choice(proxy_list) # 随机使用一个代理服务器 proxy_support = urllib2.ProxyHandler(random_proxy) opener = urllib2.build_opener(proxy_support) urllib2.install_opener(opener) headers = {} headers[ 'User-Agent' ] = Baidu_spider # 蜘蛛的头部信息 request = urllib2.Request(url, headers = headers) try : response = urllib2.urlopen(request) content = response.read() if len (content): # 内容不为空的情况下返回状态码、路径 print "Status [%s] - path: %s" % (response.code, path) response.close() time.sleep( 1 ) # 休息一会儿,防止速度过快连接数过大被封掉IP except urllib2.HTTPError as e: # print e.code, path pass # 异常处理,先暂时pass掉 if __name__ = = '__main__' : # 创建多线程并指明函数的入口为crawler,以后还可以传参进去 for i in range (threading_num): t = threading.Thread(target = crawler) t.start() |
# 上面代码,我们一共导入了6个模块都是接下来需要使用的功能模块,
# os作用是对我们不需要扫描的后缀名文件进行筛选,
# urllib2负责抓取,而threading就是我们的Python多线程模块,
# 这次还需要用到Queue这个保证线程安全的队列模块,
# 其它两个比较简单,一个是随机模块random,另一个时间模块time
本文来源:SecYe安全网[http://www.secye.com] (责任编辑:SecYe安全)
- ·windows7 python3.63使用selenium+webdri
- ·快速学习Python爬虫学习,轻松爬取大规模
- ·Python复制文件的九种方法
- ·Windows环境下 Pycharm + Python 3.5 + P
- ·python奇技淫巧
- ·Python入门教程 超详细1小时学会Python
- ·Python编程实现二叉树及七种遍历方法详解
- ·Python爬虫DNS解析缓存方法实例分析
- ·爬虫系列之使用scrapy+webdriver爬取动态
- ·为什么说Python是伟大的入门语言
- ·爬虫入门系列(一):快速理解HTTP协议
- ·python 爬取w3shcool的JQuery的课程并且
- ·python3中set(集合)的语法总结分享
- ·python3实现ftp服务功能(服务端 For Lin
- ·python3中dict(字典)的使用方法示例
- ·用python写一个windows下的定时关机脚本(
- ·windows7 python3.63使用selenium+webdrive
- ·快速学习Python爬虫学习,轻松爬取大规模数
- ·Python复制文件的九种方法
- ·Windows环境下 Pycharm + Python 3.5 + PYQ
- ·python奇技淫巧
- ·Python入门教程 超详细1小时学会Python
- ·Python编程实现二叉树及七种遍历方法详解
- ·Python爬虫DNS解析缓存方法实例分析
- ·爬虫系列之使用scrapy+webdriver爬取动态网
- ·为什么说Python是伟大的入门语言
- ·爬虫入门系列(一):快速理解HTTP协议
- ·python 爬取w3shcool的JQuery的课程并且保
- ·python3中set(集合)的语法总结分享
- ·python3实现ftp服务功能(服务端 For Linux
- ·python3中dict(字典)的使用方法示例