使用Python打造基本WEB漏洞扫描器(二) 爬虫插件系统的开发—E-Mail收集插件实列

本文介绍了如何在Python爬虫基础上构建一个插件系统,通过实例展示了E-Mail收集插件的开发过程,涵盖了Python函数、动态导入、正则表达式和扫描器插件系统的工作流程。实验中遇到的问题如插件命名冲突也进行了讨论,并提供了GitHub源码链接。
摘要由CSDN通过智能技术生成

一、实验介绍

1.1 实验内容

基于上节的爬虫,在爬虫的基础上增加一个插件系统,通过爬虫爬取网页链接后调用这个插件系统中的插件进行各种操作,本节也会写个简单的email收集插件作为列子,后面也会讲到如何写各种基于爬虫的插件。

1.2 实验知识点

  • python中__import__函数
  • python如何写一个插件系统
  • 简单正则的运用(email查找)
  • 扫描器插件系统的工作流程

1.3 实验环境

  • python2.7
  • win10

二、实验原理

利用python的__import__函数动态引入脚本,只需要规定脚本如何编写,便可以进行调用,email收集是基于爬虫得到的源码进行正则匹配。上节我们创造了script这个目录,这个目录里面存放我们编写的python插件。

三、实验步骤

3.1 __import__函数

我们都知道import是导入模块的,但是其实import实际上是使用builtin函数import来工作的。 在一些程序中,我们可以动态去调用函数,如果我们知道模块的名称(字符串)的时候,我们可以很方便的使用动态调用。 一个简单的代码:

def getfunctionbyname(module_name,function_name): 
    module = __import__(module_name) 
    return getattr(module,function_name) 

通过这段代码,我们就可以简单调用一个模块的函数了。

3.2 插件系统开发流程

一个插件系统运转工作,主要进行以下几个方面的操作

  1. 获取插件,通过对一个目录里的以.py的文件扫描得到
  2. 将插件目录加入到环境变量sys.path
  3. 爬虫将扫描好的url和网页源码传递给插件
  4. 插件工作,工作完毕后主动权还给扫描器

3.3 插件系统代码

lib/core/plugin.py中创建一个spiderplus类,实现满足我们要求的代码。

#!/usr/bin/env python
# __author__= 'wanggangdan'
import os
import sys
class spiderplus(object):
    def __init__(self,plugin,disallow=[]):
        self.dir_exploit = []
        self.disallow = ['__init__']
        self.disallow.extend(disallow)
        self.plugin = os.getcwd()+'/' +plugin
        sys.path.append(plugin)

    def list_plusg(self):
        def filter_func(file):
            if not file.endswith(".py"):
                return False
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值