黑客工具_Python多线程爬虫抓取扫描器

简介:

代码如下:

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__ = "iplaypython.com"
  
import  os
import  urllib2
import  threading
import  Queue
import  time
import  random
  
=  Queue.Queue()  # Queue产生一个队列,有3种类型队列 默认用 FIFO队列
threading_num  =  5  # 开启5个线程
  
# 扫描本地IP或域名
domain_name  =  "http://127.0.0.1"
# 百度蜘蛛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  # 蜘蛛的头部信息
         # 玩蛇网 www.iplaypython.com
  
         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  in  range (threading_num): 
         =  threading.Thread(target = crawler)
         t.start()


    # 上面代码,我们一共导入了6个模块都是接下来需要使用的功能模块,

    # os作用是对我们不需要扫描的后缀名文件进行筛选,     

    # urllib2负责抓取,而threading就是我们的Python多线程模块,     

    # 这次还需要用到Queue这个保证线程安全的队列模块,     

    # 其它两个比较简单,一个是随机模块random,另一个时间模块time

转载地址:http://www.iplaypython.com/crawler/multithreading-crawler-scanner.html





      本文转自027ryan  51CTO博客,原文链接:http://blog.51cto.com/ucode/1871010,如需转载请自行联系原作者






相关文章
|
13天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
14天前
|
安全 Java 数据处理
Python网络编程基础(Socket编程)多线程/多进程服务器编程
【4月更文挑战第11天】在网络编程中,随着客户端数量的增加,服务器的处理能力成为了一个重要的考量因素。为了处理多个客户端的并发请求,我们通常需要采用多线程或多进程的方式。在本章中,我们将探讨多线程/多进程服务器编程的概念,并通过一个多线程服务器的示例来演示其实现。
|
17天前
|
数据采集 Python
【python】爬虫-西安医学院-校长信箱
本文以西安医学院-校长信箱为基础来展示爬虫案例。来介绍python爬虫。
【python】爬虫-西安医学院-校长信箱
|
1天前
|
Java 数据库连接 数据处理
Python从入门到精通:3.1.2多线程与多进程编程
Python从入门到精通:3.1.2多线程与多进程编程
|
3天前
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
13 0
|
6天前
|
数据采集 JavaScript 前端开发
使用Python打造爬虫程序之破茧而出:Python爬虫遭遇反爬虫机制及应对策略
【4月更文挑战第19天】本文探讨了Python爬虫应对反爬虫机制的策略。常见的反爬虫机制包括User-Agent检测、IP限制、动态加载内容、验证码验证和Cookie跟踪。应对策略包括设置合理User-Agent、使用代理IP、处理动态加载内容、验证码识别及维护Cookie。此外,还提到高级策略如降低请求频率、模拟人类行为、分布式爬虫和学习网站规则。开发者需不断学习新策略,同时遵守规则和法律法规,确保爬虫的稳定性和合法性。
|
7天前
|
机器学习/深度学习 数据挖掘 计算机视觉
python数据分析工具SciPy
【4月更文挑战第15天】SciPy是Python的开源库,用于数学、科学和工程计算,基于NumPy扩展了优化、线性代数、积分、插值、特殊函数、信号处理、图像处理和常微分方程求解等功能。它包含优化、线性代数、积分、信号和图像处理等多个模块。通过SciPy,可以方便地执行各种科学计算任务。例如,计算高斯分布的PDF,需要结合NumPy使用。要安装SciPy,可以使用`pip install scipy`命令。这个库极大地丰富了Python在科学计算领域的应用。
12 1
|
7天前
|
数据可视化 数据挖掘 Python
Python中数据分析工具Matplotlib
【4月更文挑战第14天】Matplotlib是Python的数据可视化库,能生成多种图表,如折线图、柱状图等。以下是一个绘制简单折线图的代码示例: ```python import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] plt.figure() plt.plot(x, y) plt.title('简单折线图') plt.xlabel('X轴') plt.ylabel('Y轴') plt.show() ```
12 1
|
7天前
|
数据采集 SQL 数据可视化
Python数据分析工具Pandas
【4月更文挑战第14天】Pandas是Python的数据分析库,提供Series和DataFrame数据结构,用于高效处理标记数据。它支持从多种数据源加载数据,包括CSV、Excel和SQL。功能包括数据清洗(处理缺失值、异常值)、数据操作(切片、过滤、分组)、时间序列分析及与Matplotlib等库集成进行数据可视化。其高性能底层基于NumPy,适合大型数据集处理。通过加载数据、清洗、分析和可视化,Pandas简化了数据分析流程。广泛的学习资源使其成为数据分析初学者的理想选择。
13 1
|
8天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
28 0