编辑中...

#! /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()

获取爬虫邮件截图:

crawler_exa1的更多相关文章

随机推荐

  1. hadoop安装过程中出现的错误

    此次来记录一下我在安装Hadoop安装过程中出现的错误,安装过程参照慕课网林子雨教程进行安装,在尝试过程中出现的错误如下: 1.在安装Ubuntu时,新建虚拟电脑时,并没有在版本的输入框中有Ubunt ...

  2. 在Qt中调用Mupdf库进行pdf显示

    2018.5.10 更新内存对齐说明 感谢知乎网友@孤独子狮 指出QImage处需要考虑内存对齐的问题.因为本人缺乏跨平台.图形库开发经验,所以在调试成功后就没有深入探究. 主要修改了QImage的构 ...

  3. BZOJ.3944.Sum(Min_25筛)

    BZOJ 洛谷 不得不再次吐槽洛谷数据好水(连\(n=0,2^{31}-1\)都没有). \(Description\) 给定\(n\),分别求\[\sum_{i=1}^n\varphi(i),\qu ...

  4. php 操作json的各种格式

    php中操作json的函数 加密:json_encode() ,也就是把数据转成json格式 * 数组转换成json格式时,索引数组得出的结果是不带映射关系,所以都是[]:关联数组是映射,所以最外围是 ...

  5. 潭州课堂25班:Ph201805201 django 项目 第二十五课 文章多级评论前后台实现 (课堂笔记)

    添加新闻评论功能 1.分析 业务处理流程: 判断前端传的新闻id是否为空,是否为整数.是否不存在 判断评论的内容是否为空 判断是否有父评论,父评论的id是否与新闻id匹配 判断用户是否登录 保存新闻评 ...

  6. [CC-COUPLES]Couples sit next to each other

    [CC-COUPLES]Couples sit next to each other 题目大意: 有\(n(n\le5\times10^5)\)对小伙伴共\(2n\)个人坐成一圈.刚开始编号为\(i\ ...

  7. js数组根据指定字段(true or false)排序

    const obj = [ {name:'1',bind:true}, {name:'2',bind:false}, {name:'3',bind:true}, {name:'4',bind:fals ...

  8. 读《31天学会CRM项目开发》记录3 - CRM解决方案

    一. 二.CRM系统设计方案 CRM技术部分设计方案主要包括:服务器端设计方案.客户端设计方案.数据库设计方案.应用系统框架设计方案. 1.服务器端设计方案 配备平台:IIS7和SQL Server2 ...

  9. js怎么删数组固定的值

    <script type="text/javascript"> Array.prototype.indexOf = function(val) { for (var i ...

  10. Linq.js表达式常见写法

    1.回调函数法 2.lambda表达式字符串 3.$符号的表达式