网络安全爬虫全解析

1. 网络爬虫的认识

  网络爬虫是自动从互联网定向或不定向地采集信息地一种程序工具。网络爬虫分为很多类别,常见的有批量型网络爬虫、增量型网络爬虫(通用爬虫)、垂直网络爬虫(聚焦爬虫)。

2.网络爬虫的工作原理

通用爬虫:首先给定初始URL,爬虫会自动获取这个URL上的所有URL并将已经在爬取的地址存放在已爬取列表中。将新的URL放在队列并依次读取新的URL,依次判读是否满足所设置的停止获取的条件。

聚焦爬虫:首先定义一个文件(对要抓取目标的定义),爬取获取的初始的URL,并获得当前页面新的URL,并将已经爬取过的地址放在已爬取列表。设置过滤器将不需要的URL过滤掉,剩下的放在队列里并依次爬取,根据权重的计算判断爬取目标的先后顺序,根据设定的停止条件进行判断,若果满足,则停止。

两者总体上很相似,区别在于通用爬虫爬取的目标很广泛而聚焦爬虫则爬取特定的目标。

3.正则表达式

3.1一些定义

正则表达式:正则表达式是一种进行数据筛选的表达式。可以通过正则表达式从庞大的数据中提取出我们需要的、关注的、有价值的信息。在Python中是re模块,系统自带。

原子:原子是正则表达式的最基本的组成单位,每个正则表达式中至少要包含一个原子。原子是由所有那些未显示指定为元字符的打印和非打印字符组成,常见的原子类型有:

    a.普通字符作为原子。例如:abcdefg·····

    b.非打印字符作为原子。例如:\n(换行符)、\t(制表符)

    c.通用字符作为原子。例如:\w(字母、数字、下划线)、\W(除字母、数字、下划线)、\d(十进制数字)、\D(除十进制数字   )、\s(空白字符)、\S(除空白字符)

    d.原子表作为原子。若在原子表中加符号^则表示非的意思,除了原子表中的都匹配。

    e.特殊字符和元字符作为原子。元字符就是具有特殊含义的字符。如  .   :匹配除换行符以外的任意一个字符。^:匹配字符串开始的位置(注意区别于原子表)。$:匹配结束位置。*:匹配前面出现1次,0次或者多次。?:匹配出现1次或者0次。+:匹配出现1次或者多次。{n}:前面这个原子恰好出现n次。[n,m]:至少出现n次,最多出现m次。[n,]:最少出现n次。| :模式选择符或。():模式单元。

3.2模式修正符

模式修正符:可以在不改变正则表达式的情况下,通过模式修正符改变正则表达式的含义,从而实现一些匹配结果的调整等功能。

I:匹配时忽略大小写

M:多行匹配

L:本地化识别匹配

U:Unicode

S:让 . 匹配包括换行

3.3贪婪模式与懒惰模式

贪婪模式:其核心就是尽可能多的匹配。

例如:

str='dkjspdjskdpsdsaff'
pat='d.*p'
rest=re.search(pat,str,re.I)
print(rest)

     结果为:<re.Match object; span=(0, 11), match='dkjspdjskdp'>,会尽可能多的匹配d之后和p之前的字符。

    懒惰模式:其核心就是尽可能少的匹配。

    例如:

    import re
    string='dsdfsfdggfslsadadsffdg'
    pat='d.*?f'
    rst=re.search(pat,string,re.I)
    print(rest)

      结果为:<re.Match object; span=(0, 4), match='dsdf'>

      注意:其中 ? 是懒惰模式的标识。

      总结:懒惰模式相对于贪婪模式来说更加精准!

      3.4正则表达式函数

      正则表达式函数有re.match()、re.search()、re.compile(全局匹配函数)、re.sub()函数,正则表达式本身无任何功能,目的是为了实现匹配,而正则表达式函数则是实现具体的功能。

      re.match():只能从头开始匹配,如果不是从头开始则不能匹配。只提取一个结果。

      re.search():匹配信息并且查找出来。可以从任意位置开始匹配。只提取一个结果。

      re.compile(全局匹配函数):把一堆数据中与匹配项匹配的所有数据提取出来。

      3.5正则表达式的实际应用

      匹配网站和网址:

      从<a href='http://www.baidu.com'>百度</a>中提取:

      string='<a href=\'http://www.baidu.com\'>百度</a>'
      pat='[a-zA-Z]+://[^\s]*[.com|.cn]'
      rst=re.compile(pat).findall(string)
      print(rst)
      
      #结果为:['http://www.baidu.com']

         匹配电话号码:

        str='dfsdfs011-254521352135sdasd545311310sdsad07770002-13541354353453sdsa'
        pat='\d{4}-\d{7}|\d{3}-\d{8}'
        rst=re.compile(pat).findall(str)
        print(rst)
        
        
        
        #结果为:['011-25452135', '0002-1354135']

          4.简单的爬虫编写

          仅仅做一个简单的爬虫,非常容易写,可以直接使用urllib模块。格式如下:

          import urllib.request
          data=urllib.request.urlopen('网址').read().decode('utf-8')#爬取是以文件形式,所以需要写上read()
          #所有信息都已经保存到了data里面

            通过这样便可以实现一个简单的爬虫。提取信息时候,如果数据类型不匹配,一般可以使用decode.('utf-8')进行转换。

            网络安全学习路线

            对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

            同时每个成长路线对应的板块都有配套的视频提供:

            需要网络安全学习路线和视频教程的可以在评论区留言哦~

            最后
            • 如果你确实想自学的话,我可以把我自己整理收藏的这些教程分享给你,里面不仅有web安全,还有渗透测试等等内容,包含电子书、面试题、pdf文档、视频以及相关的课件笔记,我都已经学过了,都可以免费分享给大家!

            给小伙伴们的意见是想清楚,自学网络安全没有捷径,相比而言系统的网络安全是最节省成本的方式,因为能够帮你节省大量的时间和精力成本。坚持住,既然已经走到这条路上,虽然前途看似困难重重,只要咬牙坚持,最终会收到你想要的效果。

            黑客工具&SRC技术文档&PDF书籍&web安全等(可分享)

            结语

            网络安全产业就像一个江湖,各色人等聚集。相对于欧美国家基础扎实(懂加密、会防护、能挖洞、擅工程)的众多名门正派,我国的人才更多的属于旁门左道(很多白帽子可能会不服气),因此在未来的人才培养和建设上,需要调整结构,鼓励更多的人去做“正向”的、结合“业务”与“数据”、“自动化”的“体系、建设”,才能解人才之渴,真正的为社会全面互联网化提供安全保障。

            特别声明:
            此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失

            评论
            添加红包

            请填写红包祝福语或标题

            红包个数最小为10个

            红包金额最低5元

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

            抵扣说明:

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

            余额充值