DNS(一)

news2025/7/14 5:50:14

介绍

名字解析服务:当主机IP变化时,只要修改名称服务即可,用户仍可以通过原有的名称进行访问而不受影响。

本地名称解析配置文件:hosts

LInux中是 /etc/hosts        Windows中是 C:\Windows\System32\drivers\etc\hosts

DNS:Domain Name System 域名系统,应用层协议,是互联网的一项服务,它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网。基于C/S架构,服务器端口号53/udp,53/tcp

BIND:Bekerley Internet Name Domain,由ISC提供的DNS软件实现

域名由因特网域名与地址管理机构(ICANN,Internet Corporation for Assigned Names and Numbers)管理,这是为承担域名系统管理、IP地址分配、协议参数配置,以及主服务器系统管理等职能而设立的非盈利机构。

FQDN:完全限定域名。主机名+域名构成,最左边是主机名,其余是域名

DNS域名结构

顶级域名分类

国家顶级域名.cn中国 .uk英国 .jp日本 .us美国 等
类别顶级域名.com、.top(企业)、.edu(教育机构)、.gov(政府机构)、.mil(军事部门)、.net(互联网及信息中心)、.org(非盈利性组织) 等

认识网址结构

域名可划分各个子域,子域可继续划分子域。

aaa.bbb.ccc.com.

其中 aaa 是四级域名,bbb 是三级域名,ccc 是二级域名,com 是顶级域名,. 是根域;

DNS查询类型

递归查询        迭代查询

名称服务器

Name Server,域内负责解析本域内的名称的DNS服务器

IPV4的根域名服务器:全球共13个负责解析根域的DNS服务器,美国10个,荷兰1个,瑞典1个,日本1个。

IPV6的根域名服务器:全球共25个,中国1主3从,美国1主2从

解析类型

正向解析:FQDN > IP

反向解析:IP > FQDN

正反向解析是两个不同的名称空间,是两颗不同的解析树

DNS查询过程

以访问 www.163.com 为例。这是我见过对DNS最通俗易懂的解释了

  1. 首先查找电脑上的 DNS 缓存列表,如果有记录,那么直接返回对应 IP 地址,否则进行下一步;

  2. 查找电脑上的 HOST 文件的映射关系,如果有记录,那么返回对应 IP 地址,否则进行下一步;

  3. 查找互联网线路供应商的本地 DNS 服务器(即中国电信、中国移动或中国联通),本地 DNS 服务器先查找自己的缓存记录,如果有记录,那么返回对应 IP 地址,否则本地 DNS 服务器向根域名服务器发送请求;

  4. 根域名服务器收到请求后,查看是 .com 顶级域名,于是返回 .com 顶级域名服务器的 IP 地址给到本地 DNS 服务器;

  5. 本地 DNS 服务器收到回复后,向 .com 顶级域名服务器发起请求;

  6. .com 顶级域名服务器收到请求后,查看是 .163.com 次级域名,于是返回 .163.com 次级域名服务器的 IP 地址给 DNS 服务器;

  7. 本地 DNS 服务器收到回复后,向 .163.com 次级域名服务器发起请求;

  8. .163.com 次级域名服务器收到请求后,查看是自己管理的域名,于是查看域名和 IP 地址映射表,把 www.163.com 的 IP 地址返回给本地 DNS 服务器;

  9. 本地 DNS 服务器收到回复后,向电脑回复域名对应 IP 地址,并把记录写入本地 DNS 服务器的缓存里;

  10. 电脑收到回复后,使用 IP 地址访问网站,并把记录写入电脑 DNS 缓存中。

DNS软件bind

DNS服务器软件:bind、powerdns,unbound

bind相关程序包

bind:服务器端

bind-libs:相关库

bind-utils:客户端

bind-chroot:安全包,将dns相关文件放至 /var/named/chroot/

相关文件

/etc/named.confBIND的主配置文件,包含了整个DNS服务器的配置信息。它定义了域名空间、反向解析、区域设置、转发规则、负载均衡等
/usr/sbin/namedBIND的主程序文件
/var/named/named.ca包含根DNS服务器的信息
/usr/lib/systemd/system/named.serviceBIND的Unit文件
/etc/rndc.conf可控制BIND开关、重载、刷新缓存,增删zone等操作。端口 953/tcp
/etc/named.rfc1912.zones配置DNS区域
/var/named/ZONE_NAME.ZONE解析库文件

主配置文件

  • 全局配置:options {};
  • 日志子系统配置:logging {};
  • 区域定义:本机能够为哪些zone进行解析,就要定义哪些zone
    zone "ZONE_NAME" IN {};

注意:

  • 任何服务程序如果期望其能够通过网络被其它主机访问,至少应该监听在一个能与外部主机通信的IP地址上
  • 缓存名称服务器的配置:监听外部地址即可
  • dnssec: 建议关闭dnssec,设为no

主配置文件的语法检查:named-checkconf

配置生效:rndc reload

实现主DNS服务器

DNS服务器类型

主DNS服务器、从DNS服务器、缓存DNS服务器(转发器)

主DNS服务器

管理维护所负责解析的域内解析库的服务器

从DNS服务器

从主服务器或从服务器通过区域传输解析库副本

  • 序列号:解析库版本号,主服务器解析库变化时,其序列递增
  • 刷新时间间隔:从服务器从主服务器请求同步解析的时间间隔
  • 重试时间间隔:从服务器请求同步失败时,再次尝试时间间隔
  • 过期时长:从服务器联系不到主服务器时,多久后停止服务
  • 通知机制:主服务器解析库发生变化时,会主动通知从服务器

区域传输

完全传输:传送整个解析库

增量传输:传递解析库变化的部分

解析形式

正向解析:FQDN >>> IP

反向解析:IP >>> FQDN

负责本地域名的正向和反向解析库

正向区域        反向区域

解析答案

肯定答案:存在对应的查询结果

否定答案:请求的条目不存在等原因导致无法返回结果

权威答案:直接由存有此查询结果的DNS服务器(权威服务器)返回的答案

非权威答案:由其它非权威服务器返回的查询答案

资源记录格式

name        [TTL]   IN  rr_type     value

注意:

  1. TTL可从全局继承
  2. 使用 “@” 符号可用于引用当前区域的名字
  3. 同一个名字可以通过多条记录定义多个不同的值;此时DNS服务器会以轮询方式响应
  4. 同一个值也可能有多个不同的定义名字;通过多个不同的名字指向同一个值进行定义;此仅表示通过多个不同的名字可以找到同一个主机

各种资源记录

区域解析库:由众多RR组成

        资源记录:Resource Record,即RR

        记录类型:如下

  • SOA:Start Of Authority,起始授权记录;一个区域解析库有且仅能有一个SOA记录,必须位于解析库的第一条记录

magedu.org.     86400   IN  SOA     ns.magedu.org.  nsadmin.magedu.org.     (
        2015042201  
        2H          
        10M         
        1W          
        1D          
        )

magedu.org.            域名
86400                  SOA记录生存时间,当前为24小时(86400秒)  
IN                     固定写法
SOA                    记录类型,起始记录
ns.magedu.org.         负责此域名的DNS服务器的域名
nsadmin.magedu.org.    负责此域名的DNS服务器的管理员的电子邮箱地址,由于@具有特殊含义,所以是点.
2015042201             SOA记录的序列号,每次SOA记录变更时,此值就会增加
2H                     刷新时间,主服务器发送DNS更新到所有从服务器的时间间隔;不加单位默认是秒
10M                    重试时间,主服务器在重试间隔时间内没有收到从服务器的确认,它将再次发送更新
1W                     过期时间,从服务器多久未收到主服务器的更新消息后,它才开始认为自己的信息可能已经过时
1D                     否定答案的TTL值,当一个查询请求得不到回答时,这个值定义了缓存这个"没有答案"的回答的时间
  • A:internet Address,作用,FQDN –> IP

www.magedu.org.         IN      A   IP地址
*.magedu.org.           IN      A   IP地址
  • AAAA:FQDN –> IPv6

  • PTR:PoinTeR,IP –> FQDN

现有 www.magedu.org. 对应 1.2.3.4 ,PTR格式如下
4.3.2.1.in-addr.arpa. IN PTR www.magedu.org.

网络地址和后缀可省略,主机地址仍需倒着写,简写如下
4   IN  PTR     www.magedu.org.   
  • NS:Name Server,专用于标明当前区域的DNS服务器

magedu.org. IN  NS      ns1.magedu.org.
magedu.org. IN  NS      ns2.magedu.org.

对NS记录而言,任何一个NS记录后面的服务器名字,都应该在后续有一个A记录
一个区域可以有多个NS记录
  • CNAME : Canonical Name,别名记录

www.magedu.org.  IN  CNAME   websrv.magedu.org.

比如京东 www.jd.com.gslb.qianxun.com. >>> www.jd.com.s.galileo.jcloud-cdn.com. >>> wwwv6.jcloudimg.com. >>> 115.231.223.3  最后才解析到IP
[root@wenzi ~]# dig www.jd.com
...
;; QUESTION SECTION:
;www.jd.com.                    IN      A

;; ANSWER SECTION:
www.jd.com.             47      IN      CNAME   www.jd.com.gslb.qianxun.com.
www.jd.com.gslb.qianxun.com. 47 IN      CNAME   www.jd.com.s.galileo.jcloud-cdn.com.
www.jd.com.s.galileo.jcloud-cdn.com. 47 IN CNAME wwwv6.jcloudimg.com.
wwwv6.jcloudimg.com.    47      IN      A       115.231.223.3
...
  • MX:Mail eXchanger,邮件服务

magedu.org. IN      MX  10  mx1.magedu.org.


一个区域内,MX记录可有多个;但每个记录的value之前应该有一个数字(0-99),表示此服务器的优先级;数字越小优先级越高
对MX记录而言,任何一个MX记录后面的服务器名字,都应该在后续有一个A记录

 允许动态更新

动态更新:可以通过远程更新区域数据库的资源记录

实现动态更新,需要在指定的zone语句块中配置

zone "域名" IN {
        type master;
        file "zone文件名";
        allow-update { any; };
};

实验一:实现主DNS服务器

企业内部用的域名 magedu.org ,能解析企业内部所有以 magedu.org 为后缀的主机

192.168.28.158DNS主服务器
192.168.28.156、192.168.28.141web服务器
192.168.28.143用来访问www.magedu.org,验证结果

在DNS主服务器上创建一个解析 magedu.org 域的区域解析库

记录所有以 magedu.org 后缀的域与IP的对应关系;一个区域解析对应一个域名。

修改DNS服务器配置文件,设置监听端口范围和允许哪些主机可以使用此dns
[root@wenzi ~]# vim /etc/named.conf
options {
        listen-on port 53 { 127.0.0.1; localhost; };
        ...
        allow-query     { localhost; 192.168.28.0/24; };
        ...

进入解析库目录
[root@wenzi ~]# cd /var/named/
[root@wenzi named]# ls
data  dynamic  named.ca  named.empty  named.localhost  named.loopback  slaves
利用现有文件生成所需文件
[root@wenzi named]# cp -a named.localhost magedu.org.zone
$TTL 1D    ;如果在第一行声明了 $TTL 1D,那么下面的所有记录都将使用这个TTL值,直到遇到新的 $TTL 声明或者区域结束为止。

;SOA记录
@       IN SOA  ns1 admin.magedu.org. (
                                        20231014        ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum
;列出此区域的DNS服务器
@       IN NS  ns1.magedu.org.
;A记录,把主机名ns1映射到 192.168.28.158
ns1     IN A   192.168.28.158
;定义别名www的规范名称是websrv,同时websrv对应两个ip地址,可起到负载均衡作用
www     CNAME   websrv
websrv  A       192.168.28.156
websrv  A       192.168.28.141
*       A       192.168.28.156    ;泛域名,不是www.magedu.org且是magedu.org结尾都映射至此地址

使配置文件包含新增加的解析库,声明此区域

可看到 /etc/named.conf 配置文件中有 include "/etc/named.rfc1912.zones"; 建议将zone卸载此文件内,和配置文件区分开

[root@wenzi named]# vim /etc/named.rfc1912.zones
zone "magedu.org" IN {    格式:zone 域名 IN
        type master;      声明是主区域,其它服务器可来此查询区域数据
        file "magedu.org.zone";    包含区域数据的文件
};
...

校验语法

校验zone语法        named-checkzone 域名 区域文件路径

[root@wenzi ~]# named-checkzone  magedu.org /var/named/magedu.org.zone

校验配置文件语法

[root@wenzi ~]# named-checkconf

配置web服务器

192.168.28.141上配置
[root@wenzi ~]# yum -y install httpd && systemctl start httpd && echo 'www.magedu.org --- 192.168.28.141' > /var/www/html/index.html

192.168.28.156上配置
[root@wenzi ~]# yum -y install httpd && systemctl start httpd && echo 'www.magedu.org --- 192.168.28.156' > /var/www/html/index.html

修改192.168.28.143网卡配置,使DNS指向DNS主服务器,然后验证

反向解析区域

反向区域:即将IP反向解析为FQDN

区域名称:网络地址反写 加 .in-addr.arpa.

如:192.168.28. >>> 28.168.192.in-addr.arpa. 表示反向解析192.168.28.开头的地址

在 /etc/named.rfc1912.zones 定义区域 192.168.28.zone

[root@wenzi ~]# vim /etc/named.rfc1912.zones

zone "28.168.192.in-addr-arpa" IN {
        type master;
        file "192.168.28.zone";
};

定义 192.168.28.zone 内容,将192.168.28.199解析为www.magedu.com

[root@wenzi named]# vim 192.168.28.zone

$TTL 1D
@       IN SOA  csPTR admin.magedu.org. (
                                        0       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

        IN NS   csPTR.magedu.org.

199     IN PTR  www.magedu.com.

测试

实现从服务器

  1. 应该为一台独立的名称服务器
  2. 主服务器的区域解析库文件中必须有一条NS记录指向从服务器
  3. 从服务器只需要定义区域,而无须提供解析库文件;解析库文件应该放置于/var/named/slaves/目录中
  4. 主服务器得允许从服务器作区域传送
  5. 主从服务器时间应该同步,可通过ntp进行
  6. bind程序的版本应该保持一致;否则,应该从高,主低

实验二:实现从DNS服务器

主DNS服务器

修改配置文件

[root@wenzi named]# vim /etc/named.conf

options {
        listen-on port 53 { 127.0.0.1; localhost; };
        ...
        allow-query     { localhost; 192.168.28.0/24; };
        allow-transfer { 192.168.28.156; };        允许传输区域数据的主机,即从DNS;同时也有加密功能

定义区域

[root@wenzi named]# vim /etc/named.rfc1912.zones

zone "wenzi.com" IN {        若为主区域,且处理来自互联网的查询,需加IN
        type master;
        file "wenzi.com.zone";
};

定义区域解析库

[root@wenzi named]# vim wenzi.com.zone

@       IN SOA  wz admin.wenzi.com. (
                                        1       ; serial
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

        IN NS   wz.wenzi.com.        DNS主服务器
        IN NS   slave.wenzi.com.     DNS从服务器

wz  IN A    192.168.28.158                
slave   IN A    192.168.28.156        

从DNS服务器

修改配置文件

[root@wenzi named]# vim /etc/named.conf

options {
        listen-on port 53 { 127.0.0.1; localhost; };
        ...
        allow-query     { localhost; 192.168.28.0/24; };
        allow-transfer {  none; };        允许传输区域数据的主机,此处为none,没有其它从DNS服务器从这里获取zone数据;同时也有加密功能

        ...

定义区域文件

 [root@wenzi named]# vim /etc/named.rfc1912.zones

zone "wenzi.com" {        若为从属区域,且数据是从其它DNS服务器复制过来的,无需加IN
        type slave;        此处为slave,从DNS
        masters { 192.168.28.158; };        指定主DNS服务器地址
        file "slaves/wenzi.com.slave";       传输过来的zone文件存放地址,默认在/var/named/slaves/目录下
};

测试主机添加两个dns,一个为主DNS服务器IP,一个为从DNS服务器IP;当启动从服务器DNS后,可见主DNS的 wenzi.com.zone 文件已同步过来了

[root@wenzi named]# ll /var/named/slaves/
total 4
-rw-r--r-- 1 named named 257 Oct 16 03:05 wenzi.com.slave

[root@wenzi ~]# dig wz.wenzi.com @192.168.28.158

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 <<>> wz.wenzi.com @192.168.28.158
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26790
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;wz.wenzi.com.              IN      A

;; ANSWER SECTION:
wz.wenzi.com.       86400   IN      A       192.168.28.158

;; AUTHORITY SECTION:
wenzi.com.              86400   IN      NS      wz.wenzi.com.
wenzi.com.              86400   IN      NS      slave.wenzi.com.

;; ADDITIONAL SECTION:
slave.wenzi.com.        86400   IN      A       192.168.28.156

;; Query time: 0 msec
;; SERVER: 192.168.28.158#53(192.168.28.158)
;; WHEN: Mon Oct 16 03:20:17 CST 2023
;; MSG SIZE  rcvd: 111

[root@wenzi ~]# dig wz.wenzi.com @192.168.28.156

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 <<>> wz.wenzi.com @192.168.28.156
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58088
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;wz.wenzi.com.              IN      A

;; ANSWER SECTION:
wz.wenzi.com.       86400   IN      A       192.168.28.158

;; AUTHORITY SECTION:
wenzi.com.              86400   IN      NS      wz.wenzi.com.
wenzi.com.              86400   IN      NS      slave.wenzi.com.

;; ADDITIONAL SECTION:
slave.wenzi.com.        86400   IN      A       192.168.28.156

;; Query time: 0 msec
;; SERVER: 192.168.28.156#53(192.168.28.156)
;; WHEN: Mon Oct 16 03:21:39 CST 2023
;; MSG SIZE  rcvd: 111

修改主DNS的 wenzi.com.zone 文件,测试变化是否同步

[root@wenzi ~]# vim /var/named/wenzi.com.zone
$TTL 1D
@       IN SOA  master admin.wenzi.com. (
                                        1       ; serial        变化时序列号一定要变化,不然从DNS检测不到变化
                                        1D      ; refresh
                                        1H      ; retry
                                        1W      ; expire
                                        3H )    ; minimum

        IN NS   master.wenzi.com.
        IN NS   slave.wenzi.com.

master  IN A    192.168.28.158
slave   IN A    192.168.28.156

[root@wenzi ~]# dig master.wenzi.com @192.168.28.158

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 <<>> master.wenzi.com @192.168.28.158
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26790
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;master.wenzi.com.              IN      A

;; ANSWER SECTION:
master.wenzi.com.       86400   IN      A       192.168.28.158

;; AUTHORITY SECTION:
wenzi.com.              86400   IN      NS      master.wenzi.com.
wenzi.com.              86400   IN      NS      slave.wenzi.com.

;; ADDITIONAL SECTION:
slave.wenzi.com.        86400   IN      A       192.168.28.156

;; Query time: 0 msec
;; SERVER: 192.168.28.158#53(192.168.28.158)
;; WHEN: Mon Oct 16 03:20:17 CST 2023
;; MSG SIZE  rcvd: 111

[root@wenzi ~]# dig master.wenzi.com @192.168.28.156

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 <<>> master.wenzi.com @192.168.28.156
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 58088
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;master.wenzi.com.              IN      A

;; ANSWER SECTION:
master.wenzi.com.       86400   IN      A       192.168.28.158

;; AUTHORITY SECTION:
wenzi.com.              86400   IN      NS      master.wenzi.com.
wenzi.com.              86400   IN      NS      slave.wenzi.com.

;; ADDITIONAL SECTION:
slave.wenzi.com.        86400   IN      A       192.168.28.156

;; Query time: 0 msec
;; SERVER: 192.168.28.156#53(192.168.28.156)
;; WHEN: Mon Oct 16 03:21:39 CST 2023
;; MSG SIZE  rcvd: 111

停止主DNS的named服务,rndc stop ,测试从DNS是否起作用

[root@wenzi ~]# dig master.wenzi.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7_9.14 <<>> master.wenzi.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13481
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;master.wenzi.com.              IN      A

;; ANSWER SECTION:
master.wenzi.com.       86400   IN      A       192.168.28.158

;; AUTHORITY SECTION:
wenzi.com.              86400   IN      NS      master.wenzi.com.
wenzi.com.              86400   IN      NS      slave.wenzi.com.

;; ADDITIONAL SECTION:
slave.wenzi.com.        86400   IN      A       192.168.28.156

;; Query time: 0 msec
;; SERVER: 192.168.28.156#53(192.168.28.156)
;; WHEN: Mon Oct 16 03:32:10 CST 2023
;; MSG SIZE  rcvd: 111

访问到的DNS是从DNS,已生效。

DNS转发(缓存)

利用DNS转发,可以将用户的DNS请求,转发至指定的DNS服务器,而非默认的根DNS服务器,并将指定服务器查询的返回结果进行缓存,提高效率。

注意:

  1. 被转发的服务器需要能够为请求者做递归,否则转发请求不予进行
  2. 在全局配置块中,关闭dnssec功能

dnssec-enable no;
dnssec-validation no;

转发方式

对非本机所负责解析区域的请求,全转发给指定的服务器
在全局配置块中实现:

Options {
        forward  first|only;
        forwarders { ip;};
};
8.2.2 特定区域转发

仅转发对特定的区域的请求,比全局转发优先级高

zone "ZONE_NAME" IN {
    type forward;
    forward  first|only;
    forwarders { ip;};
};

first:先转发至指定DNS服务器,如果无法解析查询请求,则本服务器再去根服务器查询

only: 先转发至指定DNS服务器,如果无法解析查询请求,则本服务器将不再去根服务器查询

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

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

相关文章

apk和小程序测试 学js代码

1.小程序通信 https 通信 大部分 只要是http协议所以漏洞都可能有 因为apk和小程序https 抓到报文 搞到web渗透 抓不到包 加密咋办 对称加密 因为密钥在源代码里 所以逆向 找到js代码 然后找到密钥 路径 小程序 工具 wxapkg 扫描小程序 &#xff08;反编译工…

IPIDEA代理IP在企业价格监控中的关键优势

价格监控是指企业在日常工作中&#xff0c;实时获取和分析竞争对手价格信息的过程&#xff0c;是一项非常重要的工作&#xff0c;它可以帮助企业及时了解市场上的价格变化&#xff0c;目的是为了及时调整自己当前的价格策略&#xff0c;保持竞争优势。而使用代理IP可以在这个过…

搭建Atlas2.2.0 集成CDH6.3.2 生产环境+kerberos

首先确保环境的干净&#xff0c;如果之前有安装过清理掉相关残留 确保安装atlas的服务器有足够的内存&#xff08;至少16G&#xff09;&#xff0c;有必要的hadoop角色 HDFS客户端 — 检索和更新Hadoop使用的用户组信息&#xff08;UGI&#xff09;中帐户成员资格的信息。对调…

小样本学习--(1)概论

目录 一、概述 二、小样本学习的数据集 1、Omniglot 2、MiniimageNet 三、孪生网络 四、三元组损失函数 一、概述 小样本学习用于处理训练数据集中样本数量少的情况&#xff0c;一般来说&#xff0c;小样本学习流程是这样的&#xff0c;从一个多种类少量样本的巨大数据集…

企业级无代码平台推荐,满足百种场景,几分钟内上线一个应用

随着企业数字化转型的持续推进&#xff0c;对数字化应用的需求逐渐增多&#xff0c;业务变化也变得越来越敏捷。这些变化对数字化应用开发周期和功能迭代速度提出了更高的要求。然而&#xff0c;面对这种背景&#xff0c;数字化应用开发所需的专业开发人员供给不足&#xff0c;…

揭秘美国黑产,购物券欺诈对商业活动的危害

业务风险并不是作为互联网、电商大国中国独有的问题&#xff0c;美国同行同样遭到众多专业黑产的侵袭。数量级虽不及中国之巨&#xff0c;却也足以对美国电商行业的发展造成重大危害。本文详细介绍了一些美国业界常见的黑产套利手法和细节&#xff0c;供国内从业人员参考。 数…

2020年09月 Python(三级)真题解析#中国电子学会#全国青少年软件编程等级考试

Python编程&#xff08;1~6级&#xff09;全部真题・点这里 C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 一、单选题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 第1题 下列程序运行结果是?&#xff08; &#xff09; a12 b23 cstr(&…

44springboot摄影跟拍预定管理系统

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

文件管理革命:突破限制,实现无限次复制粘贴

我们每天都在和文件打交道&#xff0c;无论是工作还是生活。你是否曾经遇到过这样的问题&#xff1a;需要将某个文件内容多次复制粘贴到不同的地方&#xff0c;但限于系统限制&#xff0c;只能粘贴一次&#xff1f;这种繁琐的操作不仅浪费时间&#xff0c;还可能因为重复劳动而…

中小企业实现项目管理数字化的关键步骤

在当今竞争激烈的商业环境中&#xff0c;中小企业及初创团队面临着多重项目管理挑战&#xff0c;传统的手动管理方式已经无法满足高效率、高质量的项目执行需求。 那么中小型及成长性企业在项目管理方面&#xff0c;往往会遇到哪些困境呢&#xff1f; 首先&#xff0c;资源浪…

初识Java 14-1 测试

目录 测试 单元测试 JUnit 测试覆盖率 前置条件 断言 Java提供的断言语法 Guava提供的更方便的断言 契约式设计中的断言 DbC 单元测试 Guava中的前置条件 本笔记参考自&#xff1a; 《On Java 中文版》 测试 ||| 如果没有经过测试&#xff0c;代码就不可能正常工作…

RFID标签在物流中的应用

RFID产品种类不断丰富&#xff0c;有源电子标签、无源电子标签及半无源电子标签均得到发展&#xff0c;电子标签成本不断降低&#xff0c;规模应用迅速扩大。相对于其他自动识别技术产品&#xff0c;RFID标签在物流中起到什么作用?下面介绍一下&#xff1a; 一、进货环节 采用…

Leetcode 24 两两交换链表中的节点(链表) null类型是无法调用null.next的,所以一定要在限制条件里面设置好

Leetcode 24 两两交换链表中的节点&#xff08;链表&#xff09; :red_circle:null类型是无法调用null.next的&#xff0c;所以一定要在限制条件里面设置好&#xff0c;限制死:red_circle:null类型是无法调用null.next的&#xff0c;所以一定要在限制条件里面设置好&#xff0c…

RPA (Robotic process automation)

RPA是如何提高人工情况下效率的

“第四十二天”

这个&#xff0c;之前用的b去存储a的总和和排名&#xff0c;后来在比较的过程中&#xff0c;只改变的b的值&#xff0c;却没有改变a的值&#xff0c;但在比较语文成绩的时候用的还是a&#xff0c;这个时候a和b同样是第i个对应的可能不是同一个对象了 &#xff0c;因为上面b的值…

Linux C语言

一、基础知识 &#xff08;一&#xff09;冯诺依曼体系 1、存储器&#xff1a;内存 存储程序的思想&#xff1a;按照存储器中指令的顺序 2、存储器的分类 1&#xff09;主存&#xff1a;内存&#xff08;C盘&#xff09; 2&#xff09;外存 3&#xff09;寄存器是cpu内部…

【Java基础面试十九】、构造方法能不能重写?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;构造方法能不能重写&…

MyBatisPlus(二十)防全表更新与删除

说明 针对 update 和 delete 语句&#xff0c;阻止恶意的全表更新和全表删除。 实现方式 配置BlockAttackInnerInterceptor拦截器 代码 package com.example.core.config;import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.p…

Godot2D角色导航-自动寻路教程(Godot获取导航路径)

文章目录 开始准备获取路径全局点坐标 开始准备 首先创建一个导航场景&#xff0c;具体内容参考下列文章&#xff1a; Godot实现角色随鼠标移动 然后我们需要设置它的导航目标位置&#xff0c;具体关于位置的讲解在下面这个文章&#xff1a; Godot设置导航代理的目标位置 获取…

Python---if选择判断结构、嵌套结构(if elif else)

1、if选择判断结构作用 if 英 /ɪf/ conj. &#xff08;表条件&#xff09;如果&#xff1b;&#xff08;表假设&#xff09;要是&#xff0c;假如&#xff1b;无论何时&#xff1b;虽然&#xff0c;即使&#xff1b;&#xff08;用于间接疑问&#xff09;是否&#xff1b…