一个输入网址就可显示网站安全性及网站主要内容的含GUI的Python小程序

news2024/10/6 16:24:42

文章目录

  • 1.一些杂七杂八的引入
  • 2.实现
    • 2.1 显示网站安全性
    • 2.2 安装所需python包
      • 2.2.1 requests包
      • 2.2.1 beautifulsoup包
  • 3.源码展示
  • 4.效果展示

1.一些杂七杂八的引入

上次发了一个类似爬虫,可以自动下载网页图片的python小程序(详见一个自动下载网页图片的python小程序
居然入选了《Python领域内容榜的33名》!
在这里插入图片描述
于是……
我又做了个Python小程序,用来显示网站安全性及网站主要内容的含GUI的Python小程序……

2.实现

2.1 显示网站安全性

好吧,你猜对了,这个安全性就只是可以判断网站用的是HTTP协议还是HTPS协议而已~
什么?你说这有点鸡肋?
这本来就很鸡肋~

不过……
不会还有人连HTTP协议和HTTPS协议的区别都不知道吧?
好吧,在做这个程序之前我也不知道……

且听我细细道来~

HTTP协议
HTTP全称Hypertext Transfer Protocol,是一种基于文本的协议,用于在Web浏览器和Web服务器之间传输数据。HTTP传输的数据是明文的,容易被攻击者截取和窃听。因此,HTTP不提供加密和数据完整性验证的保护,存在安全风险。通常,HTTP用于传输不敏感的数据,例如公开的网页内容或无需保密的信息。

HTTPS协议
HTTPS全称Hypertext Transfer Protocol Secure,是基于HTTP的安全版本。与HTTP相比,HTTPS通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议进行加密和身份验证,提供了更高的安全性。HTTPS的数据传输是加密的,使得中间人无法窃听或篡改传输的数据。HTTPS常用于传输敏感信息,例如信用卡信息、登录凭证等。

要注意的是,使用HTTPS需要服务器拥有数字证书,证书由经过验证的认证机构颁发,用于验证服务器的身份。只有在客户端和服务器之间建立了有效的证书握手,并且证书是受信任的,浏览器才会显示连接是安全的。因此,HTTPS不仅提供了数据的机密性,还提供了对服务器身份的验证。
(关于证书握手什么的,下次有空再讲~)

2.2 安装所需python包

既然都涉及到HTTP和HTTPS了,requests当然不能忘,还要用beautifulsoup库解析网页内容,既然是含GUI的,自然也少不了tkiner库,但是只要是按照我的教程安装Python的,链接:Python安装教程

2.2.1 requests包

安装步骤:
1.按下Win+R,打开“运行”对话框
在这里插入图片描述
2.输入“cmd”
在这里插入图片描述
3.单击“确定”,进入cmd命令提示符,输入以下内容:

pip3 install requests#这个是python版本是3点几的同学
pip install requests#这个是python版本是其他的同学

在这里插入图片描述

2.2.1 beautifulsoup包

安装步骤:
1.按下Win+R,打开“运行”对话框
在这里插入图片描述
2.输入“cmd”
在这里插入图片描述
3.单击“确定”,进入cmd命令提示符,输入以下内容:

pip3 install beautifulsoup4#这个是python版本是3点几的同学
pip install beautifulsoup4#这个是python版本是其他的同学

在这里插入图片描述

3.源码展示

为了方便大家理解,这次在源码上加了注释,不会像上次那样让人一头雾水了:

import requests
from bs4 import BeautifulSoup
import tkinter as tk

def check_website():
    url = entry.get()  # 获取输入的网址

    try:
        response = requests.get(url)  # 发送GET请求获取网页内容
        response.raise_for_status()  # 检查是否发生错误

        # 使用BeautifulSoup解析网页内容
        soup = BeautifulSoup(response.content, 'html.parser')

        # 输出网站安全性信息(HTTPS or HTTP)
        if response.url.startswith('https://'):
            result_text.set("网站使用 HTTPS 安全连接")
        else:
            result_text.set("网站使用 HTTP 连接,不安全")

        # 输出页面标题
        title = soup.title.string.strip()
        info_text.set(f"页面标题:{title}\n")

        # 输出页面描述
        description = soup.find('meta', attrs={'name': 'description'})
        if description:
            info_text.set(info_text.get() + f"\n页面描述:\n{description['content']}")
        else:
            info_text.set(info_text.get() + "\n无页面描述")

        # 输出页面关键词
        keywords = soup.find('meta', attrs={'name': 'keywords'})
        if keywords:
            info_text.set(info_text.get() + f"\n\n页面关键词:\n{keywords['content']}")
        else:
            info_text.set(info_text.get() + "\n\n无页面关键词")

        # 清空文本框内容并滚动到顶部
        text_box.delete("1.0", tk.END)
        text_box.yview(tk.MOVETO, 0.0)

        # 插入页面信息到文本框
        text_box.insert(tk.END, info_text.get())

    except requests.exceptions.RequestException as e:
        result_text.set("发生错误,请检查网址或网络连接")
        info_text.set("")  # 清空页面信息
        text_box.delete("1.0", tk.END)

# 创建GUI窗口
window = tk.Tk()
window.title("网址安全性和页面信息检查")
window.geometry("400x300")

# 创建网址输入框和按钮
entry = tk.Entry(window, width=50)
entry.pack(pady=10)

button = tk.Button(window, text="检查", command=check_website)
button.pack()

# 创建结果和页面信息显示标签
result_text = tk.StringVar()
result_label = tk.Label(window, textvariable=result_text)
result_label.pack(pady=10)

info_text = tk.StringVar()

# 创建滚动条和文本框
scrollbar = tk.Scrollbar(window)
scrollbar.pack(side=tk.RIGHT, fill=tk.Y)

text_box = tk.Text(window, wrap=tk.WORD, yscrollcommand=scrollbar.set)
text_box.pack(expand=True, fill=tk.BOTH)

# 配置滚动条与文本框的关联
scrollbar.config(command=text_box.yview)

# 启动GUI主循环
window.mainloop()

4.效果展示

输入网址就可显示网站安全性及网站主要内容的小程序的演示

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Web工具】3D 旋转中各数据格式之间的转换

1 Rotation Master — Link GitHub: Link 2 3D Rotation Converter — Link GitHub: Link 3 Quaternions — Link 4 Rotation Conversion Tool — Link 这是个人博客网站,其中可能有你需要的知识: Link

Prometheus实现自定义指标监控

1、Prometheus实现自定义指标监控 前面我们已经通过 PrometheusGrafana 实现了监控,可以在 Grafana 上看到对应的 SpringBoot 应用信息了, 通过这些信息我们可以对 SpringBoot 应用有更全面的监控。 但是如果我们需要对一些业务指标做监控,…

老文章可以删了!!!。2023年最新IDEA中 Java程序 | Java+Kotlin混合开发的程序如何打包成jar包和exe文件(gradle版本)

文章内容: 一. JAVA | JAVA和Kotlin混开开发的程序打包成jar方法 1.1 方法一 :IDEA中手动打包 1.2 方法二 :build.gradle中配置后编译时打包 二. JAVA | JAVA和Kotlin混合开发的程序打包成exe的方法 一. JAVA | JAVA和Kotlin混开开发的程序…

使用 Jetpack Compose 实现 ViewPager2

在此博客中,我们将介绍如何在Jetpack Compose中实现ViewPager2的功能。我们将使用Accompanist库中的Pager库,这是由Google开发的一个用于Jetpack Compose的库。 首先,需要将Pager库添加到你的项目中: implementation androidx.co…

投票活动链接制作方法网络投票办法公众号做投票链接

用户在使用微信投票的时候,需要功能齐全,又快捷方便的投票小程序。 而“活动星投票”这款软件使用非常的方便,用户可以随时使用手机微信小程序获得线上投票服务,很多用户都很喜欢“活动星投票”这款软件。 “活动星投票”小程序在…

ModelScope魔搭社区AI模型下载数据可能存在严重造假问题

目录 摘要: 一、数据分析 二、可能存在的问题 三、结论与建议 摘要: ModelScope魔搭社区作为一个AI模型共享平台,旨在提供各种领域的模型供用户下载和使用。然而,通过对其提供的数据进行分析,发现其中存在一定的数…

【Flutter】built_value 解决 Flutter 中的不可变性问题

文章目录 一、 前言二、 什么是 built_value?三、 为什么我们需要 built_value?四、 如何在 Flutter 中安装和设置 built_value?五、 如何使用 built_value 创建不可变的值类型?六、 如何使用 built_value 创建枚举类?…

pcl基于八叉树进行空间划分和搜索操作

建立空间索引在点云数据处理中已被广泛应用,常见空间索引一般是自顶向下逐级划分空间的各种空间索引结构,比较有代表性的包括 BSP 树、KD 树、KDB 树、 R树、R树、CELL 树、四叉树和八叉树等索引结构,而在这些结构中 KD 树和八叉树在 3D点云数…

使用键鼠网络共享用windows控制ubuntu,实现跨屏跨系统操作

经调研发现几种网络共享鼠标方案:sharemouse、synergy以及Barrier,由于没找到合适的资料去配置sharemouse,synergy又收费,所以使用Barrier。 一、Ubuntu安装Barrier 到Ubuntu软件商城搜索Barrier点击安装即可,这就不再…

学成在线----day8

1、课程发布 为了提高网站的速度需要将课程信息进行缓存,并且要将课程信息加入索引库方便搜索,下图显示了课程发布后课程信息的流转情况: 1、向内容管理数据库的课程发布表存储课程发布信息,更新课程基本信息表中发布状态为已发…

【Shell】读取用户终端输入内容

授权 cd /Users/lion/Downloads/shell-test-demos chmod ux *.shread_user_enter.sh #!/bin/bashprintHelp() {echo "1. hello"echo "2. world"echo "0. exit" }printHelpnumber"" while [ -z $number ]; doread -p "enter a n…

干货,让微信群活跃的秘籍

微信用户数量庞大、使用率高,是很多企业/商家做社群营销的第一平台,所以目前有很多微信社群营销管理系统。我一直在用的一个多群管理工具---微信管理系统,对于新手来说,操作也是十分的简单易上手,每一步都有教程指导&a…

网站被黑挂马应该怎么解决

遇到网站被黑或者被挂马,其实都是很正常的现象,做网站的站长,几乎都有网站被黑的历史 遇到这种问题,首先: 检查网站源文件的日期,回顾一下在过去一段时间里面,你有没有对源文件做过改动&#x…

程序员性能之道,从使用perf开始!

一、perf简介 从2.6.31内核开始,Linux内核自带了一个性能分析工具perf,能够进行函数级与指令级的热点查找。通过它,应用程序可以利用 PMU,tracepoint 和内核中的特殊计数器来进行性能统计。它不但可以分析指定应用程序的性能问题…

Apikit 自学日记:使用脚本处理数据

脚本分为 前置脚本 和 后置脚本 两种,分别对应 API 请求前 和 返回数据后 的两个阶段。您可以通过编写 Javascript 代码,在 API 前置脚本中改变请求参数,或者是在 API 后置脚本中改变返回结果。 脚本常用于以下几种情况: API 请求…

【夜深人静学数据结构与算法 | 第十一篇】枚举算法

目录 前言: 枚举算法: 优点: 枚举算法的种类: 枚举算法案例: 343. 整数拆分 - 力扣(LeetCode) 12. 整数转罗马数字 - 力扣(LeetCode) 总结: 前言&…

video-05-videojs编写(全屏、非全屏)自定义控件!!!!

兄弟们!!看到这里,你马上就可以自定义控件了,想想是不是都激动啊,但是这篇文章重在思路及简单实现,仔细看。 目录 一、控件分类 二、实现方案(方案二最好) 2.1 方案1(…

前端Vue自定义轮播图swiper 轮播图dot 轮播图指示indicate

前端Vue自定义轮播图swiper 轮播图dot 轮播图指示indicate,下载完整代码请访问uni-app插件市场地址:https://ext.dcloud.net.cn/plugin?id13193 效果图如下: ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选) ​…

BACnet网关如何采集Modbus RTU设备转BACnet IP协议

BACnet标准是针对采暖、通风、空调、制冷控制设备设计的,同时也是为其他楼宇控制系统(例如照明,安保,消防等系统)的集成提供一个基本原则。 本文主要讲述了BACnet网关采集Modbus RTU设备(M140T),将Modbus …

servlet拓展-统一响应json功能、全局异常处理

servlet拓展-统一响应json功能、全局异常处理 一、baseservlet import com.fasterxml.jackson.databind.ObjectMapper; import teamwork.com.utils.ApiResult;import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.Htt…