爬取某新闻网站的新闻并实现自动群发邮件的功能(python3+SMTP)

news/2024/5/20 10:48:02/文章来源:https://zhengbopei.blog.csdn.net/article/details/102720933

今天是2019年10月24日,一个属于国内程序员们的共同节日—中国程序员节
在这里插入图片描述
在计算机技术中,1G=1024MB,程序员节也由此诞生.

今天,我就总结一些关于网络安全的干货,送给大家!

在正式开始之前,我想强调一点,那就是:

每一种新兴技术就好比是一把刀,刀本身没有错,关键看用刀的人是谁,用刀的目的是什么.

我在这里告诉大家如何实现自动化群发邮件,是想告诉大家,这件事没有这么玄乎,我们只有了解这项技术,才能更好地识别类似的诈骗信息,以此来提高大家的网络安全意识.

这两个网站分别是菜鸟教程和廖雪峰对SMTP发送邮件的代码详解:

  • https://www.runoob.com/python3/python3-smtp.html
  • https://www.liaoxuefeng.com/wiki/1016959663602400/1017790702398272

我刚开始为了图方便,就直接把代码复制下来了,但是发现出现了以下错误:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
出现这些报错的原因在于:

SMTP协议默认端口是25

而我使用的是QQ邮箱.我在网上查了一下,使用QQ邮箱发送邮件的端口为465.这一点也是需要大家注意的.网上有很多教程,每个人的运行环境可能不同,数据库的密码也是不同的,所以直接照搬代码是行不通的,需要把代码读懂后,自己再敲一遍才行.

刚刚讲到QQ邮箱,这里我再提一句,使用之前,需要在邮箱里设置SMTP的服务器(其他邮箱的设置方法大同小异):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
好了,现在我们开始获取中国新闻网的新闻标题,作为邮件的正文:

我们先来看看中国新闻网的界面:
在这里插入图片描述
具体抓取方法可查看我的博客:
抓取中国天气网当前时段所有城市的天气数据(python+xpath)

我这里只抓取了今日新闻大标题部分:
在这里插入图片描述
具体代码如下:

import requests
from lxml import etreedef get_news():headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'}url = 'https://www.chinanews.com/'response = requests.get(url=url,headers=headers)selector = etree.HTML(response.content, parser=etree.HTMLParser(encoding='utf8'))daodu = selector.xpath('//*[@id="daodu"]/div[@class="xwzxdd-dbt"]')[0:]news = []for item in daodu:new = item.xpath('./h1/a/text()')[0:]news.extend(new[0:])print(news)return news

最后是群发邮件的方法:

def send_news():# 输入Email地址和口令:from_addr = "2733821739@qq.com"password = "oycokbuorrvhddji"# 输入收件人地址:to_addr = ["137965167@qq.com","1169520132@qq.com","1536695236@qq.com"]# 输入SMTP服务器地址:smtp_server = "SMTP.qq.com"#输入要发送的内容:news_list = get_news()# print(news_list)news = "Today's news from python:"for i in range(0,len(news_list)):news = news + "\n %s"%news_list[i]print(news)message = MIMEText(news, 'plain', 'utf-8')server = smtplib.SMTP_SSL(smtp_server, 465) # SMTP协议默认端口是25server.set_debuglevel(1)server.login(from_addr, password)try:for item in to_addr:server.sendmail(from_addr, [item], message.as_string())print("Success: 已成功发送邮件!")server.quit()except smtplib.SMTPException:print ("Error: 无法发送邮件")

实现群发功能只需要加上一个for循环即可,因为代码详解在我刚刚的链接上都写有,所以我在这里就不一一解释了.(记得把端口写对就好)

if __name__ == '__main__':send_news()

最后我们运行一下:
在这里插入图片描述
成功发送!我们来看看效果:
在这里插入图片描述
邮件是最易被攻击的入口,因此,我在这里给大家提出如下建议:

  1. 提高个人安全意识,收发邮件时确认收发来源是否可靠,不要随意点击或者复制邮件中的网址,不要轻易下载来源不明的附件,建议对陌生人邮件一律不打开。
  2. 尽量不在非可控环境下登录电子邮件,如网吧的电脑、其他人的电脑等。
  3. 确保邮件收发和登陆终端系统的环境安全(PC、手机、PAD等),及时升级更新和进行漏洞补丁修复,安装终端安全防护软件并及时升级打开监控,确保邮件收发的环境安全。
  4. 邮箱密码必须使用强密码(例如:密码长度大于12位字符,且必须为数字、英文大小写字母、特殊字符组合),并定期更换密码;密码不得与其他服务混用。
  5. 如使用邮件客户端,确保客户端安装程序的安全性,按照邮件服务器支持的加密链接方式(如SSL)配置邮件收发,而不要使用明文协议收发邮件;对邮件客户端数据文件所在卷,建议采用卷加密(如Bitlocker)
  6. 按照组织规定规范邮件签名。
  7. 如使用浏览器收发邮件,需要使用HTTPS协议登陆信箱,而不要使用HTTP登陆。
  8. 邮箱地址不要随意传播,减少攻击者找到攻击入口的可能;必须公开邮件地址的,可以把@符号用其他符号替换,避免被爬虫爬取识别后,成为垃圾邮件和攻击邮件群发的目标。

如果你也收到了这类邮件千万不要慌张。可以到以下这个网站做一下排查:https://haveibeenpwned.com

好了,今天的内容就讲到这里,我在这里,也祝各位开发者们节日快乐!
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_767566.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机网站接入支付宝在线支付的流程代码

首先,创建一个支付宝手机网站支付的应用,里面会有 https://openhome.alipay.com/platform/isvAppPage.htm#/app/2019042264289117/package 但是,这个产品是需要签约 代码实现: package application.service.facetoface;import c…

网站跨域请求的解决方案

网站跨域请求的五种解决方案: 1、使用JSONP解决跨域问题(不推荐,因为支支持get请求,不支持post请求) 2、使用httpClient或者HttpUrlConnection进行内部转发请求响应(不推荐,因为需要多请求一次…

Linux内核最新版本以及历史版本下载的链接网站

Linux内核最新版本下载: The Linux Kernel Archiveshttps://www.kernel.org/Linux历史版本下载: Index of /pub/linux/kernel/https://mirrors.edge.kernel.org/pub/linux/kernel/

ubuntu下载网站

Ubuntu Releaseshttps://releases.ubuntu.com/

如何测试一个网站的性能(并发数)?

JMeter网站并发性测试 Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库&#xff0…

大流量的网站如何优化

1.CSS,JS 打包压缩,cdn 2.减少http请求,使用页面静态化 3.优化数据库慢查询和优化代码 4.使用缓存,如memcache,redis,使用mysql主从 5.负载均衡加机器 6.拆分应用项目,一个服务对应有一个项目,比如订单对应一个项目,面…

Linux 源码部署nginx网站服务器

Linux 源码部署nginx网站服务器1、nginx 简介:2、Nginx的优点:3、Nginx的缺点:4、编译安装:4.1、安装gcc编译环境:4.2、安装zlib-devel库:4.3、安装OpenSSL密码库:4.4、安装pcre正则表达式库&am…

云服务器 源码部署apache网站服务器

简介:apache网站服务器的搭建 1、Apache简介: Apache软件基金会的一个开源免费的网页服务器,也是目前世界上使用最广泛的一种web server ,apache最出名的 是它跨平台,高效和稳定,可以运行在几乎所有广泛使…

大型网站架构 - LAMP

一 网站大访问量 1. 负载均衡:大的访问量平均分流到多台PC机 Linux LVS负载均衡2. 冗余技术:服务器集群,一台服务器宕机,另一台服务器会被激活(防止单点故障)二 网站大数据存储 1. Mysql数据库集群&#xf…

网站证书到期更换?

需要将下载好的证书解压,然后登录宝塔进入网站的配置修改对应的key和pem,点击保存就可以了

渗透bc网站教学_督导引领共交流 听课评课共成长 怀化锦溪小学开展课堂教学督导听课活动_都市新闻_新闻中心...

活动现场怀化新闻网讯(通讯员 董树凤 李淑媛) 为激发新进教师爱校爱岗、干事创业的激情,培育严谨的工作作风和组织纪律观念,培养吃苦耐劳艰苦奋斗作风,9月15日至10月底,怀化市锦溪小学督导室组织开展了为期一个多月的课堂教学督导…

更改网站模板样式显示不出来_标书模板编制

编制技术标书之前,我们首先需要做一个word模板。有了这个模板在,标书内所有内容的格式均可以使用快捷键刷新操作。大部分人都是直接拿别人做好的模板用,想改一下却不知从何处下手,所以今天给大家总结一下word标书模板的做法&#…

169v 条目不存在_壹起航:深圳SEO优化公司快速解决网站不收录

深圳SEO优化公司网站不收录,接下来就要进行数据分析:网站在优化过程中存在不收录的情况,还是说优化的方式出现问题呢?其实不是的,网站不收录的原因有很多方面,具体原因要对优化数据分析才能知道。如果你经营…

phphstudy运行不了网站_vnc远程不了,vnc为什么远程不了,有什么原因吗?

vnc远程不了的原因,服务器作为网站建设的常用设备,在服务器运行过程中起到举足轻重的作用。用户在选择服务器是常用的方式有服务器租用、虚拟主机租用以及服务器托管,通过进行文件以及数据的下载、上传等实现网站的更新,但无论选择…

做一个完整网站的流程(独立完成个人网站)

注:我写这个博客的目的只是为了分享我自己做网站的流程,不是教大家一行一行敲代码的,如果是想学语言的基本操作,只能自己去找视频学习了 1.购买服务器(根据自己的需求以及爱好购买,我用的是阿里云&#xf…

c 网站服务器路径怎么获取,c 服务器路径怎么写

c 服务器路径怎么写 内容精选换一换对于不同的硬件设备,通过在BIOS中设置一些高级选项,可以有效提升服务器性能。推荐配置如表1所示。针对4P服务器,额外推荐配置如表2所示。上述配置仅针对虚拟化场景。内存刷新频率配置。进入BIOS&#xff0c…

搭建情人节表白网站(超详细过程,包教包会)

搭建情人节表白网站一、前言二、准备工作三、安装 Typecho1.下载源码2.部署到网站上3.开始安装 Typecho四、更换主题五、主题设置1.创建界面2.设置外观3.设置背景音乐六、效果预览七、原作者博客和交流群八、总结一、前言 声明:此文章以经过原作者允许进行的二次创…

visio2003_sp3_创建Visio SharePoint网站地图和文档计数(SharePoint 2007,SP2010和SP2013)

visio2003_sp3One of the most challenging things Ive run into as a SharePoint consultant is creating a 作为SharePoint顾问,我遇到的最具挑战性的事情之一就是创建一个 visual sitemap of a SharePoint environment. Visual maps are so much more effectiv…

wordpress修复插件_WordPress:尝试修复WordPress网站的用户体验

wordpress修复插件First things first, I say this in many of my articles, but in this one you can take it as fact. I am not in any way an expert when it comes to WordPress. I am strictly a user. I dont know the programming languages involved, and although I …