黑客工具_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,如需转载请自行联系原作者






相关文章
|
12月前
|
数据采集 存储 前端开发
动态渲染爬虫:Selenium抓取京东关键字搜索结果
动态渲染爬虫:Selenium抓取京东关键字搜索结果
|
11月前
|
存储 缓存 测试技术
理解Python装饰器:简化代码的强大工具
理解Python装饰器:简化代码的强大工具
|
数据采集 存储 前端开发
Java爬虫性能优化:多线程抓取JSP动态数据实践
Java爬虫性能优化:多线程抓取JSP动态数据实践
|
12月前
|
程序员 测试技术 开发者
Python装饰器:简化代码的强大工具
Python装饰器:简化代码的强大工具
357 92
|
11月前
|
机器学习/深度学习 编解码 Python
Python图片上采样工具 - RealESRGANer
Real-ESRGAN基于深度学习实现图像超分辨率放大,有效改善传统PIL缩放的模糊问题。支持多种模型版本,推荐使用魔搭社区提供的预训练模型,适用于将小图高质量放大至大图,放大倍率越低效果越佳。
835 3
|
11月前
|
数据采集 存储 弹性计算
高并发Java爬虫的瓶颈分析与动态线程优化方案
高并发Java爬虫的瓶颈分析与动态线程优化方案
|
10月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
838 0
|
12月前
|
数据采集 消息中间件 并行计算
Python多线程与多进程性能对比:从原理到实战的深度解析
在Python编程中,多线程与多进程是提升并发性能的关键手段。本文通过实验数据、代码示例和通俗比喻,深入解析两者在不同任务类型下的性能表现,帮助开发者科学选择并发策略,优化程序效率。
851 1
|
12月前
|
人工智能 自然语言处理 安全
Python构建MCP服务器:从工具封装到AI集成的全流程实践
MCP协议为AI提供标准化工具调用接口,助力模型高效操作现实世界。
1835 1
|
12月前
|
数据采集 存储 JSON
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房
地区电影市场分析:用Python爬虫抓取猫眼/灯塔专业版各地区票房

推荐镜像

更多