FTP文件传输服务

一、FTP协议、服务器

FTP:文件传输协议(用于网络文件双向传输的应用层协议)

特点:最广泛、最底层、较简单,但是明文传输;适用于较大文件的传输

1.常见客户端、服务器

  • 客户端:WINSCP or filezilla(windows),ftp(linux)
  • 服务器:IIS(windows)、vsftpd(linux)
  • VSFTPD:very secure FTP daemon

2.FTP服务参数

服务端

  • 软件名:vsftpd
  • 服务名:vsftpd
  • 端口号:20、21、指定范围的随机端口
  • 配置文件:/etc/vsftpd/vsftpd.conf
  • 日志文件:/var/log/messages

客户端

  • 软件名:ftp
  • 格式:ftp 服务器ip
  • 命令:连上ftp后,用help或?命令查看,!命令——可以执行客户端命令

注:ftp连接需要将客户端用户禁锢在家目录,防止权限过大

二、FTP用户模式

  • 匿名用户模式:测试用户,用户名为ftp或anonymous,密码随意
  • 本地用户模式:服务器上的/etc/passwd的用户(默认禁止/etc/vsftpd/user_list中用户连接)
  • 虚拟用户模式(不做重点)

用户属性:账号、共享位置、访问权限、设置指定的访问权限、下载(上传)的文件的位置

访问权限

  • FTP服务的访问权限:下载、上传、创建文件夹、其他写入权限等
  • Linux系统的访问权限:r、w、x

1.匿名用户

服务端共享目录:/var/ftp

默认权限:可下载、不能上传(设置权限由两部分控制:主配置文件和文件系统权限)

客户端下载目录:下载在连接ftp时所在目录位置

匿名用户参数:

  • anontmous_enable=YES        启用匿名访问
  • anon_umask=022        匿名用户所上传文件的权限掩码 
  • anon_root=/var/ftp        匿名用户FTP的根目录
  • anon_upload_enable=YES        允许上传文件
  • anon_mkdir_write_enable=YES        允许创建目录
  • anon_other_write_enable=YES        允许其他写权限
  • anon_max_rate=2        限制最大传输速率(字节/秒)

参数设置注意事项

  • 想要使用,除配置文件允许外,还需要设置独立的文件系统权限(建议用acl)
  • 即便可以上传文件,上传文件的权限也仅有600,其他人(包括上传者)无法下载使用
  • 想要让其他人也能正常下载,需要修改匿名用户上传文件掩码值为022

2.本地用户

用户名、密码:服务器端设置的系统用户名和密码

服务端共享目录:系统用户家目录

默认权限(FTP的所有权限):可上传、下载、创建目录、删除、重命名等其他写入权限

客户端下载目录:下载在连接ftp时所在的目录位置

本地用户参数

  • local_enable=YES        启用本地用户访问
  • local_umask=022        本地用户所上传文件的权限掩码
  • local_root=/home/用户名        设置本地用户的FTP根目录
  • chroot_local_user=YES        是否将用户禁锢在主目录
  • allow_writeable_chroot=YES        禁锢后允许写入
  • local_max_rate=2        限制最大传输速率(字节/秒)

补充:useradd -s /sbin/nologin -d /data/ftp wangwu——设置不能登录系统;仅禁锢用户在主目录依旧不够安全,也要同时拒绝ssh连接的通道

           设置了/sbin/nologin后,客户端用ftp有可能无法连接,因为服务端/etc/shells下没有/sbin/nologin,需要手动添加才可以连接

3.VSFTPD全局参数

  • write_enable=YES        是否启用写入权限
  • download_enable=YES        是否允许下载文件
  • connect_timeout=60        主动模式下的连续超时时间
  • accept_timeout=60        被动模式下的连续超时时间
  • data_connection_timeout=300        进行完整数据传输后的再操作连接时间
  • idle_session_timeout=300        验证完用户名和密码后等待传输数据的超时时间

注:其中有一个配置:pam_service_name=vsftpd,其中vsftpd指的是/etc/pam.d/vsftpd文件,该文件可验证/etc/vsftpd/ftpuser文件下用户登录;如果修改,则客户端连接会因为无法验证而失败    

例:vim /etc/pam.d/vsftpd

其中,*.so文件是该服务的依赖,依赖分为动态依赖和静态依赖

  • 静态依赖:static,随着服务启动而存在
  • 动态依赖:如so,服务启动时没有,需要使用的时候加载

三、VSFTPD原理

工作模式:主动模式、被动模式 

传输模式:ASCII模式、Binary模式

  • ASCII模式:将文件内容转换成存储文本文件的格式;多用于传输文本文件
  • BINARY(二进制)模式:不对数据进行任何处理,逐位复制;多用于传输非文本文件,如程序、数据库、压缩文件

1.FTP被动模式

被动模式原理

  1. 客户端连接服务器的21端口、验证用户名和密码,建立控制连接
  2. 客户端想传输数据时,在控制连接中发送PASV命令
  3. 服务器收到该命令后,生成随机端口返回给客户端、等待客户端的请求
  4. 传输数据时,客户端的随机端口连接服务器的指定端口,建立数据连接
  5. 客户端和服务器进行数据传输

注:20端口不在被动模式里

控制连接

客户端(随机端口)——服务端(21端口)

数据连接

客户端(随机端口)——服务端(指定端口)

被动切主动

  1. 客户端传输数据时,FTP服务默认采用被动模式
  2. 被动和主动是由客户端决定的
  3. 被动和主动作用的是服务器的动作,是主动连接还是被动的等待连接
  4. 使用主动模式:ftp>passive off

2.FTP主动模式

主动模式原理

  1. 客户端连接服务器的21端口、验证用户名和密码,建立控制连接
  2. 客户端想传输数据时,在控制连接中发送PORT命令【1.该命令中包含了客户端想要进行数据传输的指定端口;2.服务器收到该命令后,会主动连接客户端】
  3. 要传输数据时,服务器的20端口连接至客户端的指定端口,建立数据连接
  4. 客户端和服务器进行数据传输

控制连接

客户端(随机端口)——服务器端(21端口)

数据连接

服务端(20端口)——客户端(指定端口)

3.模式对比

(1)控制连接过程不同

(2)数据连接部分不同【FTP的主被动模式是由客户端决定的,针对服务器而言的】

(3)使用场景不同:

  • FTP服务器较弱时,可以考虑主动模式;
  • 公网无法要求客户端开放防火墙,一般采用被动模式;
  • 被动模式下,可以通过pasv_min_port和pasv_max_port控制随机端口范围

4.问题:为什么用被动连接模式?

  1. 主动模式下数据连接都走20端口,压力大
  2. 防火墙规则:管进不管出;主动连接在数据传输时需要客户端放行端口、不太可控

四、本地用户登录及设置

1.服务端(77.77)

#安装软件
$ dnf -y install vsftpd
#开启服务
$ systemctl start vsftpd
#通过端口验证开启成功,结果中可以看到用来监听的21端口
$ ss -antp | grep vsftpd
#禁锢本地用户只能在自己的家目录范围
#注意此时应该先把要上传共享目录的文件系统权限设置上
$ vim /etc/vsftpd/vsftpd.conf
#禁锢本地用户在家目录
chroot_local_user=YES
#禁锢本地用户后允许写权限
allow_writeable_chroot=YES
#重启服务
$ systemctl restart vsftpd

实验:

[root@localhost ~]# dnf -y install vsftpd[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# ss -anpt | grep vsftpd
LISTEN 0      32                 *:21                *:*     users:(("vsftpd",pid=991,fd=3))                    
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
chroot_local_user=YES
allow_writeable_chroot=YES
[root@localhost ~]# systemctl restart vsftpd

2.客户端(77.79)

#安装连接命令
$ dnf -y install ftp
#连接ftp服务器
$ ftp ftp服务器IP
输入用户名:vsftpd服务的用户名
输入密码:vsftpd服务该用户的密码
ftp> pwd #查看当前位置,在本地用户的家目录即/home/用户名
ftp> get 文件名 #从共享目录下载文件到客户端的当前位置
ftp> put 文件名 #向共享目录上传文件、默认有权限
ftp> mkdir 目录名 #在共享目录中创建目录的权限、默认有权限
ftp> rename、delete等 #在共享目录的其他写权限、默认有权限

实验:

[root@localhost ~]# ftp 192.168.77.77
Connected to 192.168.77.77 (192.168.77.77).
220 (vsFTPd 3.0.5)
Name (192.168.77.77:root): zhaoliu
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ?
Commands may be abbreviated.  Commands are:!		debug		mdir		sendport	site
$		dir		mget		put		size
account		disconnect	mkdir		pwd		status
append		exit		mls		quit		struct
ascii		form		mode		quote		system
bell		get		modtime		recv		sunique
binary		glob		mput		reget		tenex
bye		hash		newer		rstatus		tick
case		help		nmap		rhelp		trace
cd		idle		nlist		rename		type
cdup		image		ntrans		reset		user
chmod		lcd		open		restart		umask
close		ls		prompt		rmdir		verbose
cr		macdef		passive		runique		?
delete		mdelete		proxy		send
ftp> ls
227 Entering Passive Mode (192,168,77,77,134,90).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Sep 08 13:49 1.txt
-rw-r--r--    1 0        0               0 Sep 08 13:49 2.txt
-rw-r--r--    1 0        0               0 Sep 08 13:49 3.txt
-rw-r--r--    1 0        0               0 Sep 08 13:49 4.txt
-rw-r--r--    1 0        0               0 Sep 08 13:49 5.txt
226 Directory send OK.
ftp> pwd
257 "/" is the current directoryftp> get 1.txt
local: 1.txt remote: 1.txt
227 Entering Passive Mode (192,168,77,77,164,68).
150 Opening BINARY mode data connection for 1.txt (0 bytes).
226 Transfer complete.ftp> !ls
1.txt  anaconda-ks.cfg	cat.sh	nginx-1.26.3.tar.gz  ng.txtftp> put cat.sh
local: cat.sh remote: cat.sh
227 Entering Passive Mode (192,168,77,77,211,74).
150 Ok to send data.
226 Transfer complete.
389 bytes sent in 9.6e-05 secs (4052.08 Kbytes/sec)ftp> mkdir bik.d
257 "/bik.d" createdftp> delete 3.txt
250 Delete operation successful.

注:在/etc/vsftpd/user_list中定义了被拒绝使用ftp服务的系统用户

补充

windows客户端
1、在文件资源管理器的地址栏中,输入:ftp://vsftpd服务IP/,右键登录
或者:ftp://username:password@vsftpd服务IP
2、filezilla软件

五、匿名用户登录及设置

1.服务端(77.77)

#安装软件
$ dnf -y install vsftpd
#开启服务
$ systemctl start vsftpd
#通过端口验证开启成功,结果中可以看到用来监听的21端口
$ ss -antp | grep vsftpd
#注意此时应该先把要上传共享目录的文件系统权限设置上
$ vim /etc/vsftpd/vsftpd.conf
#开启匿名用户模式
anonymous_enable=YES
#设置上传权限
anon_upload_enable=YES
#设置创建目录权限
anon_mkdir_write_enable=YES
#设置上传后文件或创建目录后的默认权限
anon_umask=022
#设置其他写入权限
anon_other_write_enable=YES
#重启服务
$ systemctl restart vsftpd

注1:权限生效=vsftpd服务开放权限+有文件系统权限(否则会出现550错误状态码)
注2:匿名用户一定不要改/var/ftp这个目录的文件系统权限,否则退出后服务再起不来
注3:配置文件里的布尔类型(YES或NO),结尾不能有空格

2.客户端(77.79)

#安装连接命令
$ dnf -y install ftp
#连接ftp服务器
$ ftp ftp服务器IP
输入用户名:ftp 或 anonymous
输入密码:随便输入、一般输空直接回车
ftp> pwd #查看当前位置,在匿名用户的共享根目录即/var/ftp
ftp> get 文件名 #从共享目录下载文件到客户端的当前位置
ftp> put 文件名 #向共享目录上传文件、默认没有
ftp> mkdir 目录名 #在共享目录中创建目录的权限、默认没有
ftp> rename、delete等 #在共享目录的其他写权限、默认没有

实验:

[root@localhost ~]# ftp 192.168.77.77
Connected to 192.168.77.77 (192.168.77.77).
220 (vsFTPd 3.0.5)
Name (192.168.77.77:root): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.ftp> pwd
257 "/" is the current directoryftp> ls
227 Entering Passive Mode (192,168,77,77,225,225).
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Sep 08 14:02 a.txt
-rw-r--r--    1 0        0               0 Sep 08 14:02 b.txt
-rw-r--r--    1 0        0               0 Sep 08 14:02 c.txt
-rw-r--r--    1 0        0               0 Sep 08 14:02 d.txt
-rw-r--r--    1 0        0               0 Sep 08 14:02 e.txt
-rw-r--r--    1 0        0               0 Sep 08 14:02 f.txt
drwxr-xr-x    2 0        0               6 Oct 30  2023 pub
226 Directory send OK.ftp> !ls
1.txt  anaconda-ks.cfg	cat.sh	nginx-1.26.3.tar.gz  ng.txt#服务器端已配置好vsftpd相关服务,但ftp用户没有文件系统权限
ftp> put cat.sh
local: cat.sh remote: cat.sh
227 Entering Passive Mode (192,168,77,77,81,146).
553 Could not create file.
ftp> mkdir 1.txt
550 Create directory operation failed.#使用setfacl -m u:ftp:rwx /var/ftp/手动为根目录添加写权限,再试
ftp> mkdir 1.txt
257 "/1.txt" created
ftp> put cat.sh
local: cat.sh remote: cat.sh
227 Entering Passive Mode (192,168,77,77,181,17).
150 Ok to send data.
226 Transfer complete.
389 bytes sent in 3.7e-05 secs (10513.51 Kbytes/sec)

注:默认情况下,只有写权限;不可以用chmod o+w的方式设置文件系统写权限,因为会导致权限泄露;目录只有拥有w权限,才可以创建子文件、子目录、删除文件或改名。

    六、VSFTPD加密

    1.加密方式(vsftpd+ssl)

    • ssl:Secure Socket Layer,安全套接字,安全性协议
    • TLS:基于SSL开发,支持更多功能

    实验:在服务端使用tcpdump工具抓包,客户端连接

    可以看到用户名和密码都是明文传输,并不安全,所以才需要ssl进行加密

    2.SSL主要功能

    • 认证用户和服务器
    • 加密数据
    • 维护数据的完整性

    3.PKI组成:公钥基础设施(CA,X.509,SSL)

    • CA:证书申请——审批——发放——更新——查询、撤销、废止——归档
    • 常见的CA机构:Let's Encrypt
    • CA申请:公网域名+ip
    • 实验:模拟做自签名证书——自己信任

    4.加密原理

    1. 服务端在本地生成一对密钥,携数据、公钥申请CA认证
    2. CA机构通过单项的哈希算法(如MD5)将申请加密为“信息摘要”
    3. CA机构对“信息摘要”进行再次加密,变成数字签名
    4. 数字证书=申请信息+服务器公钥+数字签名

    5.加密步骤

    (1)安装ssl软件包(openssl和open-devel)

    [root@localhost ~]# dnf -y install openssl openssl-devel
    

    (2)基于ssh生成密钥对(对称加密)

    #密钥对vsftpd.key
    [root@localhost vsftpd]# openssl genrsa -out vsftpd.key 2048
    [root@localhost vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.key

    (3)拿公钥、公司信息做数字证书申请

    [root@localhost vsftpd]# openssl genrsa -out vsftpd.key 2048
    [root@localhost vsftpd]# lsftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.key
    [root@localhost vsftpd]# openssl req -new -key vsftpd.key -out vsftpd.csr
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [XX]:cn
    State or Province Name (full name) []:shanxi
    Locality Name (eg, city) [Default City]:lvliang
    Organization Name (eg, company) [Default Company Ltd]:tuanyuan
    Organizational Unit Name (eg, section) []:qingnian
    Common Name (eg, your name or your server's hostname) []:qingnian
    Email Address []:320966772@qq.comPlease enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:[root@localhost vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.csr  vsftpd.key
    

    (4)签发证书

    [root@localhost vsftpd]# openssl x509 -req -days 365 -sha256 -in vsftpd.csr -signkey vsftpd.key -out vsftpd.crt
    Certificate request self-signature ok
    subject=C = cn, ST = shanxi, L = lvliang, O = gongqing, OU = qingnian, CN = xxhf
    [root@localhost vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh  vsftpd.crt  vsftpd.csr  vsftpd.key
    

    补充:Linux证书扩展名:.crt或.pem(但以pem为扩展名的不一定是证书)

    (5)将ssl相关配置写入配置文件(添加加密设置)

    vim /etc/vsftpd/vsftpd.conf

    #启用ssl认证
    ssl_enable=YES
    #开启tlsv1、sslv2、sslv3都支持,转换成使用tls1.2
    ssl_tlsv1=YES
    ssl_sslv2=YES
    ssl_sslv3=YES
    #允许匿名用户{虚拟用户}
    allow_anon_ssl=YES
    #匿名登录和传输时强制使用ssl
    force_anon_logins_ssl=YES
    force_anon_data_ssl=YES
    #本地登录和传输时强制使用ssl
    force_local_logins_ssl=YES
    force_local_data_ssl=YES
    #rsa格式的证书
    rsa_cert_file=/etc/vsftpd/vsftpd.crt
    #rsa格式的公钥
    rsa_private_key_file=/etc/vsftpd/vsftpd.key
    

    (6)重启服务

    [root@localhost vsftpd]# systemctl start vsftpd
    

    6.客户端验证

    注:要找支持ftp、ftps协议的客户端

    服务端监听:tcpdump -nA -i ens160 port 21 > ftp2.txt

    客户端连接:第三方工具filezilla或lftp服务,均可以看到用户名和密码已经被加密

    安装lftp

    [root@localhost ~]# dnf -y install lftp
    
    [root@localhost ~]# lftp -u zhaoliu -e "set ssl:verify-certificate no" 192.168.77.77
    Password: 
    lftp zhaoliu@192.168.77.77:~> ls                  
    -rw-r--r--    1 0        0               0 Sep 08 13:49 1.txt
    -rw-r--r--    1 0        0               0 Sep 08 13:49 2.txt
    -rw-r--r--    1 0        0               0 Sep 08 13:49 4.txt
    -rw-r--r--    1 0        0               0 Sep 08 13:49 5.txt
    drwxr-xr-x    2 1004     1004            6 Sep 08 13:50 bik.d
    -rw-r--r--    1 1004     1004          389 Sep 08 13:50 cat.sh
    

    查看服务端文件,可以看到用户名和密码均已被加密

    补充说明:

    • lftp——命令跟shell都一样;支持fpts协议;vsftpd重启,客户端连接不断
    • 虚拟机和真实机时间不同步,可能会导致证书不生效,需要同步时间,可在虚拟机——设置——选项——时间同步,中设置

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

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

    相关文章

    Nginx运维之路(Docker多段构建新版本并增加第三方模块)

    喜大普奔,前两天发现Nginx竟然自带支持了ACME功能,让我很想测试一下,但是发现手头没有资源让我测试,忽然我想到可以用docker来构建nginx然后测试ACME功能,在这个过程中发现原来官方Nginx镜像并没有集成ACME插件&#x…

    DrissionPage 优化天猫店铺商品爬虫:现代化网页抓取技术详解

    概述在网络数据采集领域,传统的爬虫方法通常面临反爬机制、动态内容加载和效率低下等挑战。本文将以天猫店铺商品爬虫为例,详细介绍如何从传统的 Requests 库迁移到更现代化的 DrissionPage 解决方案,实现更高效、稳定的数据采集。----------…

    pytest并发测试,资源问题导致用例失败解决办法

    遇见的问题: 测试用例使用thrift资源和redis资源,单独运行case没有问题,但是使用并发pytest-xdist(-n 10 和 --distloadscope)运行失败原因: 测试用例间存在共享资源竞争(如 Redis、Thrift 连接…

    C 盘又满了?6 个「零风险清理法」+5 款神器,让电脑瞬间多出 100GB 空间

    你是否遇到过这样的场景:正在赶工写报告,突然弹出「C 盘存储空间不足」的警告;想安装新软件,却因为 C 盘爆红而反复失败;甚至电脑越来越卡,开机要等 5 分钟,打开文件夹都要转圈…… 作为系统盘…

    Android 项目:画图白板APP开发(四)——笔锋(单 Path)

    上一章讲解了如何通过多个 Path 叠加形成笔锋效果,还有另外的方式实现笔锋,并且只需要一条Path就可以了。在讲解具体方案之前,我们需要了解一个有意思的工具 PathMeasure ,这是一个非常强大且实用的工具,常用于高级动画…

    从C++开始的编程生活(7)——取地址运算符重载、类型转换、static成员和友元

    前言 本系列文章承接C语言的学习,需要有C语言的基础才能学会哦~ 第7篇主要讲的是有关于C的取地址运算符重载、类型转换、static成员和友元。 C才起步,都很简单 目录 前言 取地址运算符重载 const成员函数 基本语法 特点 取地址运算符重载 类型转换…

    SQL 入门指南:排序与分页查询(ORDER BY 多字段排序、LIMIT 分页实战)

    在 SQL 查询中,我们常需要 “按报名时间先后看活动名单”“只看第 2 页的活动报名数据”—— 这些需求靠基础查询无法实现,而ORDER BY(排序) 和LIMIT(分页) 就是解决这类问题的核心工具。今天我们用 “校园…

    jodconverter将word转pdf底层libreoffice的问题

    近期项目中使用了word转pdf的功能&#xff0c;其中借助了远程服务的jodconverter来处理。 <dependency><groupId>org.jodconverter</groupId><artifactId>jodconverter-remote</artifactId><version>4.4.2</version> </dependen…

    【为YOLOv11Seg添加MFC界面】详细指南

    要将现有的YOLOv11Seg代码集成到MFC界面中,我们需要创建一个MFC应用程序框架,并将现有的检测逻辑封装到其中。以下是详细步骤: 1. 创建MFC应用程序框架 1.1 使用Visual Studio创建MFC项目 打开Visual Studio,选择"创建新项目" 选择"MFC应用程序"模板…

    机器学习03——线性模型(多元线性回归、对数线性回归、二分类、线性判别分析)

    上一章&#xff1a;机器学习02——模型评估与选择 下一章&#xff1a;机器学习04——决策树 机器学习实战项目&#xff1a;【从 0 到 1 落地】机器学习实操项目目录&#xff1a;覆盖入门到进阶&#xff0c;大学生就业 / 竞赛必备 文章目录一、线性模型的基本形式&#xff08;一…

    qt QLineSeries详解

    1、概述QLineSeries是Qt Charts模块中的一个重要类&#xff0c;用于绘制折线图。它是QXYSeries的实现类&#xff0c;将信息显示为由直线连接的一系列数据点。该类为QAbstractSeries的子类&#xff0c;因此可以通过该类来访问QAbstractSeries的所有公共方法和属性。2、重要方法c…

    你再也找不到更详细的3DGS教程了 —— 一万九千字长文解析3DGS

    参考: https://www.bilibili.com/video/BV1MF4m1V7e3/ https://blog.csdn.net/2401_86810419/article/details/148811121 https://www.bilibili.com/video/BV1cz421872F?t=233.9 https://wuli.wiki/online/SphHar.html https://zhuanlan.zhihu.com/p/467466131 特别指出…

    Python,遗传算法与神经网络架构搜索:基于DEAP的自动模型设计

    引言&#xff1a;当进化论遇见深度学习——自动化的黎明在深度学习的蛮荒时代&#xff0c;我们是“手工匠人”。我们依靠直觉、前辈的经验&#xff08;ResNet 为什么是152层而不是153层&#xff1f;&#xff09;、大量的试错以及那么一点点玄学&#xff0c;在架构的黑暗森林中摸…

    Vue框架技术详解——项目驱动概念理解【前端】【Vue】

    Vue3框架 是前端渲染框架浏览器向服务器第一次发送请求&#xff0c;就会将所有页面的样式全部返回到浏览器vue中会将所有js文件最后打包成一个js文件&#xff0c;当前访问其中一个页面时&#xff0c;其他页面的样式也已经返回到浏览器中了&#xff0c;下次切换页面时&#xff…

    HTML 网页静态托管 API 接口文档(可集成到智能体Agent)

    HTML 网页静态托管 API 接口文档&#xff08;可集成到智能体Agent&#xff09; 接口概述 本接口用于将HTML代码转换为可访问的网页&#xff0c;支持通过API密钥进行身份验证。 API 密钥申请地址&#xff1a; https://www.cuobiezi.net/user/api_keys/apply API接口信息 接…

    springboot vue sse消息推送,封装系统公共消息推送前后端方法

    概述 1、封装springboot全局的消息推送接口&#xff1b; 注&#xff1a;1&#xff09;由于原生HTML5 EventSource 不支持添加header&#xff0c;所以要把连接创建接口加入身份验证白名单&#xff0c;并在接口内添加自己校验token2&#xff09;后台需定时心跳&#xff0c;保证链…

    LeetCode 每日一题 2025/9/1-2025/9/7

    记录了初步解题思路 以及本地实现代码&#xff1b;并不一定为最优 也希望大家能一起探讨 一起进步 目录9/1 1792. 最大平均通过率9/2 3025. 人员站位的方案数 I9/3 3027. 人员站位的方案数 II9/4 3516. 找到最近的人9/5 2749. 得到整数零需要执行的最少操作数9/6 3495. 使数组元…

    小迪安全v2023学习笔记(八十讲)—— 中间件安全WPS分析WeblogicJenkinsJettyCVE

    文章目录前记服务攻防——第八十天中间件安全&HW2023-WPS分析&Weblogic&Jetty&Jenkins&CVE应用WPS - HW2023-RCE&复现&上线CS介绍漏洞复现中间件 - Weblogic-CVE&反序列化&RCE介绍利用中间件 - Jenkins-CVE&RCE执行介绍漏洞复现CVE-20…

    各webshell管理工具流量分析

    哥斯拉哥斯拉是一个基于流量、HTTP全加密的webshell管理工具 特点 1.内置了3种Payload以及6种加密器&#xff0c;6种支持脚本后缀&#xff0c;20个内置插件 2.基于java&#xff0c;可以跨平台使用 3.可以自己生成webshell&#xff0c;根据管理来生成一些payload&#xff0c;然后…

    pytest(1):fixture从入门到精通

    pytest&#xff08;1&#xff09;&#xff1a;fixture从入门到精通前言1. Fixture 是什么&#xff1f;为什么我们需要它&#xff1f;2. 快速上手&#xff1a;第一个 Fixture 与基本用法3. 作用域 (Scope)&#xff1a;控制 Fixture 的生命周期4. 资源管理&#xff1a;Setup/Tear…