39 - 安全技术与防火墙

39、安全技术和防火墙

一、安全技术

入侵检测系统:特点是不阻断网络访问,主要是提供报警和事后监督。不主动介入,默默看着你(监控)。

入侵防御系统:透明模式工作,数据包,网络监控,服务攻击,木马,蠕虫,系统漏洞等等进行准确的分析和判断。

在判断攻击行为后会立即阻断。主动的防御(所有数据在进入本机之前,必须要通过的设备或者是软件)

在这里插入图片描述

二、防火墙

防火墙:隔离,工作在网络或者主机的边缘,内网和外网的中间。

对网络或者主机的数据包基于一定的规则进行检查。匹配到的规则。

放行,拒绝(数据包将会被丢弃)。

只开放允许访问的策略。(白名单机制,拒绝所有,允许个别)

防水墙:是一种防止内部信息泄露的产品。对外有防火墙的功能,对内是透明模式工作。类似监控。事前,事中,事后都知道。

2.1、防火墙类型及优缺点:

iptables这个linux自带的防火墙,一般用于内部配置。对外一般不使用(对外都使用专业的)。

firewalld linux自带的防火墙,centos7以后默认的防火墙。

包过滤防火墙(数据包进行控制)

网络层对数据包进行选择,选择的依据是防火墙设置的策略。

策略:ip地址,端口,协议。

优点:处理速度快,易于维护。

缺点:无法检查应用数据,病毒无法进行处理。

应用层防火墙:在应用层对数据进行检查,比较安全。

优点:更安全,问题可以精准定位。

缺点:所有数据都会检查,增加防火墙和负载。

2.2、iptables

iptables:工作在网络层,针对数据包实施过滤和限制。包过滤防火墙。

2.3、通信的要素:五大要素和四大要素

1、五大要素:源ip 目的ip 源端口 目的端口 协议(TCP/UDP)

2、四大要素:源ip 目的ip 源端口 目的端口

内核态和用户态:

内核态:设计到软件的底层代码或者是系统的基层逻辑,以及一些硬件的编码。

开发人员更关注内核态。

数据如果是内核态处理,速度相对较快。

iptables的过滤规则就是由内核态进行控制的。

用户态:

应用层软件层面,人为控制的一系列操作,使用功能。

运维人员只考虑用户态。

数据只通过用户态处理,速度比较慢的。

三、面试题—iptables的配置和策略:

3.1、四表五链:

3.1.1、iptables的四个表:

  1. **raw表:**用于控制数据包的状态,跟踪数据包的状态
  2. **mangle表:**修改数据包的头部信息
  3. **NAT表:**网络地址转换。可以改变数据包的源地址和目的地址。
  4. **filter表:**也是iptables的默认表,不做声明,默认就是filter表,过滤数据包,控制数据包的进出,以及接收和拒绝数据包。

3.1.2、五链(大写):

  1. PREROUTING链:处理数据包进入本机之前的规则(NAT表)

  2. INPUT链:数据包进入本机的规则(filter表,是否允许数据包进入)

  3. OUTPUT链:处理本机发出的数据包的规则,或者是数据包离开的本机的规则(filter表,一般不做设置。)

  4. FORWARD链:处理数据包转发到其他主机的规则,或者是否允许本机进行数据包转发。

  5. POSTROUTING链:处理数据包离开本机之后的规则(NAT表)

表里面有链,链里面有规则。

在这里插入图片描述

在这里插入图片描述

管理选项:在表的链中插入,增加,删除,查看规则。

匹配的条件:数据包的ip地址,端口,协议。

控制类型:允许,拒绝,丢弃。

3.1.3、注意事项:

1、不指定表名,默认就是filter表。

2、不指定链名,默认就是所有链(禁止范围)。一定要指定链。

3、除非设置了链的默认策略,否则必须执行匹配条件的(一般都是指定匹配条件的)。

4、选项,链名和控制类型都是大写,其余都是小写。

3.2、控制类型:

  • ACCEPT:允许数据包通过。

  • DROP:直接丢弃数据包,没有任何回应信息。

  • REJECT:拒绝数据包通过,数据包也会丢弃,但是会有一个响应的信息。

  • SNAT:修改数据包的源地址

  • DNAT:修改数据包的目的地址

3.3、管理选项(大写):

  • -t 指定表名 [-t 表名]

  • -A 在链中添加一条规则,在链尾添加。

  • -I 指定位置插入一条规则。

  • -P 指定默认规则 链的规则一般都是设置成拒绝(默认是允许。)

  • -D 删除规则

  • -R 修改规则(慎用)

  • -vnL:v是显示详细信息,n是以数字形式展示内容,L是才是真正的查看。

  • –line-numbers:显示规则编号,和查看一起使用

  • -F:清空链中的所有规则(慎用)

  • -X:清除自定义链中的规则

3.4、匹配条件:

  • -p:指定协议类型–tcp—icmp

  • -s:指定匹配的源ip地址

  • -d:指定匹配的目的ip地址

  • -i:指定数据包进入本机的网络设备(ens33)

  • -o:指定数据包离开本机的网络设备

  • –sport:指定源端口

  • –dport:指定目的端口

3.5、iptables的命令格式:

yum -y install iptables iptables-services ##安装防火墙服务
iptables [-t 表名] 管理选项 链名(大写) 匹配条件 [-j 控制类型]

所有控制类型前面都是:-j

1、iptables -vnL ##查看防火墙情况

[root@test1 opt]# iptables -A INPUT -s 192.168.168.10 -p tcp --dport 80 -j REJECT
[root@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     tcp  --  *      *       192.168.168.10       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

2、iptables --line-numbers -vnL 查看规则以及显示规则编号

[root@test1 opt]# iptables --line-numbers -vnL
Chain INPUT (policy ACCEPT 65 packets, 3996 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     tcp  --  *      *       192.168.168.10       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 41 packets, 3836 bytes)
num   pkts bytes target     prot opt in     out     source               destination 

3、iptables -A 添加规则

1、80端口拒绝连接

iptables -A INPUT -s 192.168.168.20 -p tcp --dport 80 -j REJECT   ##20主机拒绝连接本机80端口

[root@test2 ~]# curl 192.168.168.10
curl: (7) Failed connect to 192.168.168.10:80; 拒绝连接

curl 测试nginx是否连接

2、拒绝所有其他主机ping主机

[root@test1 opt]# iptables -A INPUT -p icmp -j REJECT

3、允许所有其他主机ping主机

[root@test1 opt]# iptables -A INPUT -p icmp -j ACCEPT
[root@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 26 packets, 1604 bytes)
 pkts bytes target     prot opt in     out     source               destination         
   24  2352 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           

每个链中规则都是从上到下的顺序匹配,匹配到之后就不再向下匹配。

如果链中没有规则,则执行链的默认策略。

4、iptables -F----清空规则

5、iptables -I INPUT # 把策略放到指定位置#

[root@test1 opt]# iptables -I INPUT 1 -p icmp -j ACCEPT
[root@test1 opt]# iptables -I INPUT 2 -i ens33 -s 192.168.168.20 -p tcp --dport 80 -j REJECT 
[root@test1 opt]# iptables -I INPUT 1 -p icmp -j ACCEPT 
[root@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
   96  8064 REJECT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
    0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 6 packets, 584 bytes)
 pkts bytes target     prot opt in     out     source               destination   

6、拒绝192.168.168.20主机–icmp到本机

[root@test1 opt]# iptables -A INPUT -s 192.168.168.20 -p icmp -j REJECT    ##显示ping不通

From 192.168.168.10 icmp_seq=329 Destination Port Unreachable

7、控制类型为-j DROP,丢弃192.168.168.20,192.168.168.30主机–icmp到本机的数据包

iptables -A INPUT -s 192.168.168.20,192.168.168.30 -p icmp -j DROP

64 bytes from 192.168.168.10: icmp_seq=367 ttl=64 time=0.524 ms
##直接无反应,停止 

8、iptables -D删除策略,接着上面的策略,删除20icmp控制类型为-j DROP,丢弃192.168.168.20,主机–icmp到本机的数据包

[root@test1 opt]# iptables -D INPUT -s 192.168.168.20 -p icmp -j DROP

9、iptables -R INPUT #修改第#条策略

[root@test1 opt]# iptables -R INPUT 1 -s 192.168.168.20 -p icmp -j REJECT

10、-p tcp --dport 22增加规则–协议在前,端口在后

[root@test1 opt]# iptables -A INPUT -p tcp --dport 22 -j REJECT  #协议在前,端口在后

到终端清空规则,xshell即可重新连接

iptables -F

或者重新启动systemctl reatart iptables/iptales.servers

临时规则重启之后会重置

[root@test1 opt]# iptables -A INPUT -s 192.168.168.20 -p tcp --dport 22 -j REJECT
##拒绝20通过22ssh端口访问10,但是10可以访问20



[root@test2 ~]# ssh root@192.168.168.10
ssh: connect to host 192.168.168.10 port 22: Connection refused


[root@test1 opt]# iptables -A INPUT -s 192.168.168.20 -p tcp --dport 22 -j REJECT
[root@test1 opt]# ssh root@192.168.168.20
root@192.168.168.20's password: 
Last login: Wed Jun 26 11:26:06 2024 from 192.168.168.11
[root@test2 ~]# 



[root@test1 opt]# iptables -A INPUT -s 192.168.168.30 -p tcp --dport 22 -j REJECT



[root@test3 ~]# ssh root@192.168.168.10
ssh: connect to host 192.168.168.10 port 22: Connection refused


[root@test1 opt]# iptables -A INPUT -s 192.168.168.30 -p tcp --dport 22 -j REJECT
[root@test1 opt]# ssh root@192.168.168.30
root@192.168.168.30's password: 
Last failed login: Wed Jun 26 11:44:49 CST 2024 from 192.168.168.10 on ssh:notty
There was 1 failed login attempt since the last successful login.
Last login: Wed Jun 26 11:33:04 2024 from 192.168.168.11
[root@test3 ~]# 


11、nginx端口为80

systemctl restart nginx
vim /usr/share/nginx/html/index.html  ##编辑nginx的访问页面

12、限制30主机访问80端口

[root@test1 opt]# iptables -A INPUT -s 192.168.168.30 -p tcp --dport 80 -j REJECT



[root@test3 ~]# curl 192.168.168.10
curl: (7) Failed connect to 192.168.168.10:80; 拒绝连接

[root@test2 ~]# curl 192.168.168.10
curl是一个功能强大的命令

获取和发送数据

curl www.baidu.com

curl 192.168.168.10

获取网页内容并且输出

-O下载文件到本地

-o 将文件下载到指定的路径

-x 发送post请求

-i 可以获取web软件的版本(服务端没有隐藏版本号)

13、删除INPUT下的规则

iptables -D INPUT 序号
[root@test1 opt]# iptables --line-numbers -vnL
Chain INPUT (policy ACCEPT 163 packets, 13930 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        1    60 REJECT     tcp  --  *      *       192.168.168.20       0.0.0.0/0            tcp dpt:22 reject-with icmp-port-unreachable
2        1    60 REJECT     tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

[root@test1 opt]# iptables -D INPUT 1
[root@test1 opt]# iptables --line-numbers -vnL
Chain INPUT (policy ACCEPT 22 packets, 1356 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        1    60 REJECT     tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable

14、修改INPUT下的策略

iptables -R INPUT #序号
[root@test1 opt]# iptables -R INPUT 1 -s 192.168.168.30 -p tcp --dport 80 -j ACCEPT 
[root@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80
@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 283 packets, 17564 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    1    60 REJECT     tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80 reject-with icmp-port-unreachable
    0     0 DROP       tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80
       
[root@test1 opt]# iptables -R INPUT 1 -s 192.168.168.30 -p tcp --dport 80 -j ACCEPT 
[root@test1 opt]# iptables -vnL
Chain INPUT (policy ACCEPT 6 packets, 364 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80
    0     0 DROP       tcp  --  *      *       192.168.168.30       0.0.0.0/0            tcp dpt:80

15、修改INPUT链本身默认的规则

iptables -P INPUT DROP   ##默认ACCEPT改为DROP
iptables -R INPUT 1 -p tcp --dport 22 -j ACCEPT 
iptables -vnL
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
systemctl restart iptables.service  ##重启服务
[root@test1 ~]# systemctl restart iptables.service 
[root@test1 ~]# iptables --line-numbers -vnL
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       85  5220 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW tcp dpt:22
5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-host-prohibited

16、iptables -A INPUT -i设置设备

iptables -A INPUT -i ens33 -s 192.168.168.10 -p tcp -dport  80 -j REJECT

网络设备:

首先手动添加网卡设备(网络适配器)

[root@test1 opt]# cd /etc/sysconfig/network-scripts/
[root@test1 network-scripts]# cp ifcfg-ens33 ifcfg-ens36
[root@test1 network-scripts]# vim ifcfg-ens36   ##改ip地址
[root@test1 network-scripts]# ifup ens36
[root@test1 network-scripts]# ifconfig 

17、拒绝整个网段连接到本主机

[root@test1 opt]# iptables -A INPUT -s 192.168.168.0/24 -p tcp --dport 80 -j REJECT

18、一次性对多个端口进行操作

yum -y install mariadb-server  #安装数据库
iptables -A INPUT -p tcp --dport 80:3306 -j REJECT   #端口从小到大写
iptables -A INPUT -p tcp --dport 22:80:3306 -j REJECT   ##最多写两个
iptables v1.4.21: invalid port/service `80:3306' specified
Try `iptables -h' or 'iptables --help' for more information.

19、-m 扩展模块,可以一次性禁止多端口,ip范围,指定mac地址。

iptables -A INPUT -p tcp -m multiport --dport 80,22,3306 -j REJECT
iptables -A INPUT -p tcp -m iprange --src-range 192.168.60.30-192.168.60.40 --dport 80 -j REJECT
--src-range 源地址池

--dst-range 目的地址池

-m multiport --sport 源端口池

-m multiport --dport  目的端口池

-m iprange --src-range  源地址池

-m iprange --dst-range  目的地址池

20、mac地址

[root@test1 opt]# iptables -A INPUT -p tcp -m mac --mac-source MAC地址 -j DROP
ip + 协议 + 端口

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

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

相关文章

Linux常见操作问题

1、登录刚创建的用户,无法操作。 注:etc/passwd文件是Linux操作系统中存储用户账户信息的文本文件,包含了系统中所有用户的基本信息,比如用户名、用户ID、用户组ID、用户家目录路径。 注:etc: 这个目录存放所有的系统…

Linux 命令:iftop

1. 写在前面 本文主要介绍 Linux iftop(Interface TOP) 命令:iftop 是一款小巧、免费且功能强大的网卡实时流量监控工具。监控指定网卡的实时流量、端口连接信息、反向解析 IP 等,还可以精确显示本机网络流量及网络内各主机和本机…

记录待办事项的便签软件哪个好用?

在快节奏的现代生活中,我们经常需要处理各种各样的待办事项,为了更好地管理时间,许多人选择使用便签软件来记录自己的待办事项。那么,记录待办事项的便签软件哪个好用?市面上众多的便签软件中,哪一个才是最…

HashMap第5讲——resize方法扩容源码分析及细节

put方法的源码和相关的细节已经介绍完了,下面我们进入扩容功能的讲解。 一、为什么需要扩容 这个也比较好理解。假设现在HashMap里的元素已经很多了,但是链化比较严重,即便树化了,查询效率也是O(logN),肯定没有O(1)好…

Proxmox VE(PVE)上手配置指南

Proxmox VE(PVE)是一款开源虚拟化管理平台,集成了KVM和LXC技术,支持虚拟机和容器管理。它提供了一个基于Web的用户界面,支持高可用性集群、备份和恢复、实时迁移等功能,适用于企业级虚拟化环境。. 以下为安…

安装GroudingDINO RuntimeError: Error compiling objects for extension,如何解决?

🏆本文收录于「Bug调优」专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&…

VCS编译bug汇总

‘typedef’ is not expected to be used in this contex 注册前少了分号。 Scope resolution error resolution : 声明指针时 不能与类名同名,即 不能声明为adapter. cannot find member "type_id" 忘记注册了 拼接运算符使用 关键要加上1b&#xff0…

opencascade AIS_InteractiveContext源码学习6 management of active Selection Modes

AIS_InteractiveContext 前言 交互上下文(Interactive Context)允许您在一个或多个视图器中管理交互对象的图形行为和选择。类方法使这一操作非常透明。需要记住的是,对于已经被交互上下文识别的交互对象,必须使用上下文方法进行…

计算机网络期末复习(大题+小题)

计算机网络期末复习 一、计算机网络概述 Point 1 计算机网络就是以传输信息为基本目的,用通信线路和通信设备将多个计算机连接起来的计算机系统的集合。由自治的计算机互联起来的结合体。 Point 2 按网络的覆盖范围进行分类 (1)局域网*…

海富泰可直动式比例阀控制器EVRD-03C26SB-C1D24-B00

控制EVOTEK海富泰可直动式及先导式比例方向阀EVRD-03A04SA-C1D24-V00、EVRD-03C08SB-C1D24-B00、EVRD-03A16SA-C1D24-V00、EVRD-03C26SB-C1D24-B00、EVRD-05A30SA-C1D24-V00、EVRD-05C60SB-C1D24-B00、EVRD-P05A80SA-IIC1D24-B00、EVRD-P07C100SB-EEC1D24-V00、EVRD-P07A150SA-…

Appium+python自动化(二十八)- 滑呀滑,滑到奈何桥喝碗孟婆汤 - 高级滑动(超详解)

简介   奈何桥上叹奈何,三生石前憾三生,彼岸花下非彼岸,奈何三生彼岸人。 相传过了鬼门关便上一条路叫黄泉路,路上盛开着只见花,不见叶的彼岸花。花叶生生两不见,相念相惜永相失,路尽头有一条…

JAVA医院绩效考核系统源码:绩效考核的重要性、绩效管理分配实践具体实操,基于B/S架构开发的一套(公立医院绩效考核系统源码)

JAVA医院绩效考核系统源码:绩效考核的重要性、绩效管理分配实践具体实操,基于B/S架构开发的一套(公立医院绩效考核系统源码) 系统开发环境 开发语言:java 技术架构:B/S架构 开发工具:maven、…

LeetCode 算法:验证二叉搜索树 c++

原题链接🔗:验证二叉搜索树 难度:中等⭐️⭐️ 题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左 子树 只包含 小于 当前节点的数。节点的右子树只包含 大于…

锐起RDV5高性能云桌面

锐起是上海锐起信息技术有限公司旗下品牌。该公司创立于 2001 年,是桌面虚拟化产品和解决方案提供商,专注于桌面管理系统和私有云存储系统的系列软件产品研发,致力于简化 IT 管理、增强系统安全,提供简单、易用、稳定、安全的产品…

DockerDesktop中mysql容器无法使用Exec窗口解决

解决前 需要登陆: 登陆后需要升级才能启动调试模式 需要订阅才能使用 解决后: 正常使用 解决方法: 不要在DockerDesktop中启动mysql容器,使用命令行启动 启动命令 docker run --name mysql_docker -e MYSQL_ROOT_PASSWORD12345…

【单片机毕业设计选题24030】-基于STM32的智能鱼缸设计

系统功能: 采用STM32最小系统板控制,采集传感器数据显示在OLED上 并通过继电器进行相应的操作。 系统操作说明: 上电后OLED显示 “欢迎使用智能鱼缸系统请稍后”,两秒后进入第一页面显示。 第一页面第一行显示“系统状态监测”&#xff…

阀门盘根的介绍

盘根(编制盘根)(packing)也叫密封填料,通常由较柔软的线状物编织而成,通常截面积是正方形或长方形、圆形的条状物填充在密封腔体内,从而实现密封。填料密封最早是以棉麻等纤维塞在泄漏通道内来阻止液流泄漏…

不是KVM不支持精简置备的磁盘,而是VMM

正文共:999 字 11 图,预估阅读时间:1 分钟 书接上文(不会吧!KVM竟然不支持磁盘的精简置备!?),我们已经掌握了通过“虚拟系统管理器VMM”创建虚拟机的基本方法&#xff0c…

【SSM】医疗健康平台-管理端-运营数据报表导出

知识目标 熟悉JasperReports的用法,能够使用JasperReports实现PDF文件导出 掌握Excel方式导出运营数据报表的方法,能够使用Apache POI以Excel方式导出运营数据报表 掌握PDF方式导出运营数据报表的方法,能够使用JasperReports以PDF方式导出运…

如何快速解决验证码图像问题 | 最佳图像(OCR)验证码解决工具

你是否曾经遇到过陷入一个看似无尽的 CAPTCHA 挑战中,努力识别扭曲的字符或数字?这些令人抓狂的 CAPTCHA 是为了确保你是人类而不是机器人,但它们也给真正的用户带来了头痛。那么,有没有快速解决这些 CAPTCHA 图像的方法&#xff…