编辑中…

#! /usr/bin/env python
# -*- coding:utf-8 -*-
# Author: Tdcqma

\'\'\'
网页爬虫,版本 2017-09-20 21:16
\'\'\'

import urllib.request
import ssl,re
import smtplib,email
import datetime

url="http://www.nsfocus.net/index.php?act=sec_bug&type_id=&os=&keyword=&page=1"

request = urllib.request.Request(url)

# 当尝试访问https开始当站点时,设置全局取消SSL证书验证
ssl._create_default_https_context = ssl._create_unverified_context

response = urllib.request.urlopen(request)
data = response.read().decode(\'utf-8\')

# 保存当前日期到today变量里
today = str(datetime.date.today())

# 使用正则表达式匹配指定安全警报内容
str = "<li><span>"+today+".*"
res = re.findall(str,data)

# 发送邮件
chst = email.charset.Charset(input_charset = \'utf-8\')
header = ("From: %s\nTo: %s\nSubject: %s\n\n" %
          ("from_mail@163.com",
           "to_mail@163.com",
           chst.header_encode("[爬虫安全通告-绿盟]")))

# 打开本地文件,目的为将抓取到的报警信息写入文件
f = open("secInfo-lvmeng.txt",\'w\',encoding=\'utf-8\')

# 生产列表保存所有安全漏洞标题

tomcat_sec = ["Apache Tomcat 漏洞告警(当前生产版本为7.0.68)\n\n"]
Cisco_sec = ["Cisco 漏洞告警(当前生产版本为1.0.35)\n\n"]
WebLogic_sec = ["WebLogic 漏洞告警(当前生产版本为10.33)\n\n"]

tomcat_msg = \'\'\' \'\'\'
WebLogic_msg = \'\'\' \'\'\'
Cisco_msg = \'\'\' \'\'\'

msg = \'\'\' \'\'\'
for line in res:
    tomcat_title = "Apache Tomcat 漏洞告警(当前生产版本为7.0.68)"
    sub_url = "http://www.nsfocus.net"+line[37:50]  # 获取安全漏洞链接
    vul_title = line[52:-40]    # 获取安全漏洞标题
    if "Apache Tomca" in vul_title:
        line = ""+today+" "+vul_title+"\n      >> "+sub_url+\'\n\n\'
        tomcat_msg += line   # 逐行读取,将其保存到msg字符变量里。
        tomcat_sec.append(line)
    elif "WebLogic" in vul_title:
        line = "" + today + " " + vul_title + "\n      >> " + sub_url + \'\n\n\'
        WebLogic_msg += line
        WebLogic_sec.append(line)
    elif "Cisco" in vul_title:
        line = "" + today + " " + vul_title + "\n       >> " + sub_url + \'\n\n\'
        Cisco_msg += line
        Cisco_sec.append(line)

msg = [tomcat_sec,WebLogic_sec,Cisco_sec]
secu_msg = \'\'\' \'\'\'

for i in range(len(msg)):
    if len(msg[i]) > 1:
        for j in range(len(msg[i])):
            secu_msg += msg[i][j]

f.writelines(secu_msg)
f.close()
msg = secu_msg

# 借用163smtp服务器发送邮件,将上面读到的报警信息作为邮件正文发送。
email_con = header.encode(\'utf-8\') + msg.encode(\'utf-8\')
smtp = smtplib.SMTP("smtp.163.com")
smtp.login("from_mail@163.com","from_mail_pass")
smtp.sendmail(\'from_mail@163.com\',\'to_mail@163.com\',email_con)
print(\'mail send success!\')
smtp.quit()

获取爬虫邮件截图:

 

版权声明:本文为tdcqma原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/tdcqma/p/7565194.html