百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

企业版Java核心概要简介

liuian 2025-02-26 12:46 12 浏览

JakartaEE目前包含三个Profile,即Core、Web、Platform。三者之间存在包含关系,而每个Profile包含一堆JSR。关系图如下

核心概要文件(Core Profile)是企业版Java规范的一个子集,它的目标群体为微服务开发人员。

必要规范包括 Annotations, DI, CDI Lite, Interceptors, JSONP, JSONB, JAX-RS。

可选规范包括:JAXB(JAX-RS可选依赖), EL(CDI可选依赖)。

  1. Annotations

在JavaEE也被称为common-annotations,它是在JSR 175元注解规范出现后,为避免通用概念因不同厂商的技术实现带来不同的注解。


Annotations

Spring

备注

标记为资源

jakarta.annotation.Resource

org.springframework.stereotype.Repository

Resource用于指定EJB、WebService、Persistence等资源

属性/方法注入

jakarta.annotation.Resource

org.springframework.beans.factory.annotation.Autowired

@Resource默认按名称注入,找不到则按类型,支持从JNDI获取

顺序

jakarta.annotation.Priority

org.springframework.core.annotation.Order

@Priority的负值作为特殊用途

构造函数钩子

jakarta.annotation.PostConstruct

org.springframework.beans.factory.InitializingBean

Spring还支持其他init-method方式

析构函数钩子

jakarta.annotation.PreDestroy

org.springframework.beans.factory.DisposableBean

Spring还支持AutoCloseable等destroy-method方式

数据源

jakarta.annotation.sql.DataSourceDefinition

-

Spring可以通过在java配置类定义javax.sql.DataSource类型的bean

权限:定义角色

jakarta.annotation.security.DeclareRoles

-

Annotations还定义了其他权限相关注解

权限:资源角色

jakarta.annotation.security.RolesAllowed

org.springframework.security.access.annotation.Secured

spring-security的PreAuthorize注解支持表达式可以达到相同效果

权限:角色

jakarta.annotation.security.RunAs

-

Annotations还定义了其他权限相关注解

约束

jakarta.annotation.Nonnull
jakarta.annotation.Nullable

-

用于属性上则构造完不能/可能为null,用于方法上则返回值不能/可能为null

可以看到Annotations规范定义的注解数量不多,但涉及面挺广,甚至有些注解平常用不到。

  1. DI & CDI vs spring-context vs guice

DI规范定义了一系列为bean的字段/方法/构造器上注入的注解。DI和CDI的参考实现为JBoss Weld,但glassfish使用的是hk2。


DI & CDI

spring-context

guice

备注

配置方式

annotation, xml

xml, properties, jdbc, java

java


类标记为bean

jakarta.enterprise.context.NormalScope
jakarta.enterprise.inject.Stereotype
jakarta.enterprise.context.Dependent

org.springframework.stereotype.Component

-

JakartaEE中注解带有NormalScope、Stereotype都被当作bean

定义bean

jakarta.enterprise.inject.Produces

org.springframework.context.annotation.Bean

com.google.inject.Provides


scope

jakarta.inject.Singleton
jakarta.enterprise.context.ApplicationScoped
jakarta.enterprise.context.SessionScoped
jakarta.enterprise.context.RequestScoped

singleton, prototype; session, request, refresh; custom

com.google.inject.Singleton

可以通过JakartaEE元注解jakarta.inject.Scope自定义scope

限定注册到上下文类型

jakarta.enterprise.inject.Typed

-

-


构造器注入

jakarta.inject.Inject

org.springframework.beans.factory.annotation.Autowired

com.google.inject.Inject

spring支持Resource、Inject注解

属性注入

jakarta.inject.Inject

org.springframework.beans.factory.annotation.Autowired

com.google.inject.Inject


方法注入

jakarta.inject.Inject

org.springframework.beans.factory.annotation.Autowired

com.google.inject.Inject


默认bean

jakarta.enterprise.inject.Default

org.springframework.context.annotation.Primary

-

guice可以通过ImplementedBy来指定默认实现类型

限定名称

jakarta.inject.Named

org.springframework.beans.factory.annotation.Qualifier

com.google.inject.name.Named

jakarta.inject.Qualifier在JakartaEE为元注解

可选依赖

jakarta.inject.Provider

java.util.Optional
org.springframework.beans.factory.annotation.Autowired(required=false)

java.util.Optional


延迟加载

jakarta.inject.Provider

org.springframework.context.annotation.Lazy

-


避免循环依赖

jakarta.inject.Provider


-


多实例注入

jakarta.inject.Provider

java.util.Collection
java.util.Map

-


bean销毁清理

jakarta.enterprise.inject.Disposes

org.springframework.beans.factory.DisposableBean

-

spring支持对Closeable类型自动发现销毁方法进行调用

上下文初始化通知

jakarta.enterprise.context.Initialized

org.springframework.context.event.ContextStartedEvent

-


上下文销毁前通知

jakarta.enterprise.context.BeforeDestroyed

-

-


上下文销毁通知

jakarta.enterprise.context.Destroyed

org.springframework.context.event.ContextStoppedEvent

-


产生事件

jakarta.enterprise.event.Event

org.springframework.context.ApplicationEventPublisher

-

CDI中通过注入的Event来产生同步/异步事件

事件处理

jakarta.enterprise.event.Observes
jakarta.enterprise.event.ObservesAsync

org.springframework.context.event.EventListener

-


SPI

jakarta.enterprise.inject.build.compatible.spi.Discovery
jakarta.enterprise.inject.build.compatible.spi.Enhancement
jakarta.enterprise.inject.build.compatible.spi.Registration
jakarta.enterprise.inject.build.compatible.spi.Synthesis
jakarta.enterprise.inject.build.compatible.spi.Validation

org.springframework.beans.factory.config.BeanFactoryPostProcessor
org.springframework.beans.factory.config.BeanPostProcessor

-


CDI以元注解NormalScope标记常规范围,将DI的元注解Scope留作标记伪范围。CDI给JSF预留了ConversationScoped,此外还定义了一个特殊的伪范围Dependent。 DI和CDI规范没有定义prototype。

CDI为mvc架构模式,比如JSF,定义了内建的Stereotype:
jakarta.enterprise.inject.Model。

CDI允许销毁清理方法通过参数上的Disposes注解注入销毁对象或其它辅助对象。

开发、测试、生产环境需要生效的bean可能不一致(可参考Spring的@Profile,结合元注解@Qualifier自定义注解达到目的),或者值不一致(可参考Spring的@Value、@ConfigurationProperties)。

散落的配置写起来方便,阅读,特别是排查问题就麻烦,需要支持集中式配置(可参考Spring的@Configuration、@Import、@ImportResource)。

在JakartaEE中定义了Decorator类型bean,但他实现了业务逻辑接口类,所以无法像Interceptor那样关注横切点。 Decorator类型bean可以注入业务接口,并用Delegate注解来限定。 Decorator注解CDI Lite可以不支持。

  1. Interceptor vs spring-aop vs Aspectj

Interceptors规范定义了拦截器基本编程模型和语义。Interceptor参考实现为JBoss Weld。


Interceptors

spring-aop

Aspectj

织入时机

runtime

runtime or load time

compile

标记为切面

jakarta.interceptor.Interceptor

org.springframework.aop.Advisor

org.aspectj.lang.annotation.Aspect

标记为切点

jakarta.interceptor.Interceptors

org.springframework.aop.Pointcut

org.aspectj.lang.annotation.Pointcut

方法执行前

-

org.springframework.aop.BeforeAdvice

org.aspectj.lang.annotation.Before

方法执行后

-

org.springframework.aop.AfterAdvice

org.aspectj.lang.annotation.After

方法返回后

-

org.springframework.aop.AfterReturningAdvice

org.aspectj.lang.annotation.AfterReturning

方法异常时

-

org.springframework.aop.ThrowsAdvice

org.aspectj.lang.annotation.AfterThrowing

环绕方法

jakarta.interceptor.AroundInvoke

-

org.aspectj.lang.annotation.Around

JakartaEE支持将构造函数作为切点,允许环绕(AroundConstruct)和构造后(PostConstructor)处理。它们与销毁前(PreDestroy)处理,构成生命周期回调。

JakartaEE还支持超时回调: AroundTimeout。

AOP相关的框架、库还有JBoss AOP、AspectWerkz、Nanning等,它们和AOP联盟(aopalliance)一样,基本不再存活/更新。

  1. JSONB/JSONP vs jackson-json vs guava vs fastjson

JSONB即JSON Binding,用于规范java对象序列化成JSON消息,或JSON消息反序列化成java对象。参考实现为Eclipse Yasson。


JSONB

jackson-json

guava

fastjson

带参构造函数反序列化

jakarta.json.bind.annotation.JsonbCreator

com.fasterxml.jackson.annotation.JsonCreator
com.fasterxml.jackson.annotation.JsonProperty
com.fasterxml.jackson.annotation.JacksonInject

objenesis

com.alibaba.fastjson.annotation.JSONCreator
com.alibaba.fastjson.annotation.JSONField

builder模式

-

com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder

-

com.alibaba.fastjson.annotation.JSONType(builder = )
com.alibaba.fastjson.annotation.JSONPOJOBuilder

指定属性序列化时顺序

jakarta.json.bind.annotation.JsonbPropertyOrder

com.fasterxml.jackson.annotation.JsonPropertyOrder

-

com.alibaba.fastjson.annotation.JSONType(orders = )
com.alibaba.fastjson.annotation.JSONField(ordinal = )

属性别名

jakarta.json.bind.annotation.JsonbProperty

com.fasterxml.jackson.annotation.JsonProperty
com.fasterxml.jackson.annotation.JsonAlias

com.google.gson.annotations.SerializedName

com.alibaba.fastjson.annotation.JSONField(alternateNames = )

忽略属性

jakarta.json.bind.annotation.JsonbTransient

com.fasterxml.jackson.annotation.JsonIgnore
com.fasterxml.jackson.annotation.JsonIgnoreProperties
com.fasterxml.jackson.annotation.JsonIgnoreType

com.google.gson.annotations.Expose(serialize = false, deserialize = false)

com.alibaba.fastjson.annotation.JSONType(ignores = )
com.alibaba.fastjson.annotation.JSONField(serialize = false, deserialize = false)

指定日期格式化方式

jakarta.json.bind.annotation.JsonbDateFormat

com.fasterxml.jackson.annotation.JsonFormat

com.google.gson.GsonBuilder#setDateFormat

com.alibaba.fastjson.annotation.JSONField(format = )

指定数字格式化方式

jakarta.json.bind.annotation.JsonbNumberFormat

com.fasterxml.jackson.annotation.JsonFormat

-

com.alibaba.fastjson.annotation.JSONField(format = )

泛型

-

com.fasterxml.jackson.core.type.TypeReference

com.google.gson.reflect.TypeToken

com.alibaba.fastjson.TypeReference

多态

jakarta.json.bind.annotation.JsonbTypeInfo
jakarta.json.bind.annotation.JsonbSubtype

com.fasterxml.jackson.annotation.JsonTypeInfo
com.fasterxml.jackson.annotation.JsonSubTypes
com.fasterxml.jackson.databind.annotation.JsonTypeResolver

-

com.alibaba.fastjson.annotation.JSONType(seeAlso = {}, typeKey = )

自定义反序列化

jakarta.json.bind.annotation.JsonbTypeDeserializer

com.fasterxml.jackson.databind.annotation.JsonDeserialize

com.google.gson.JsonDeserializer

com.alibaba.fastjson.annotation.JSONType(deserializer = )

自定义序列化

jakarta.json.bind.annotation.JsonbTypeSerializer

com.fasterxml.jackson.databind.annotation.JsonSerialize

com.google.gson.JsonSerializer

com.alibaba.fastjson.annotation.JSONType(serializer = )

包/类属性可见性

jakarta.json.bind.annotation.JsonbVisibility

-

-

-

中间对象转换

jakarta.json.bind.annotation.JsonbTypeAdapter

-

com.google.gson.annotations.JsonAdapter

-

属性名映射策略

jakarta.json.bind.config.PropertyNamingStrategy

com.fasterxml.jackson.databind.annotation.JsonNaming
com.fasterxml.jackson.databind.PropertyNamingStrategy

com.google.gson.FieldNamingStrategy

com.alibaba.fastjson.annotation.JSONType(naming = )
com.alibaba.fastjson.PropertyNamingStrategy

mixin

-

org.springframework.boot.jackson.JsonMixin
com.fasterxml.jackson.annotation.JsonAnyGetter
com.fasterxml.jackson.annotation.JsonAnySetter

-

com.alibaba.fastjson.JSON.addMixInAnnotations(,)

注入上下文对象

-

com.fasterxml.jackson.annotation.JacksonInject

-

-

引用

-

com.fasterxml.jackson.annotation.JsonIdentityInfo
com.fasterxml.jackson.annotation.JsonIdentityReference

-

jsonpath

JSONP即JSON Processing,用于规范JSON文档的解析、生成、修改及查询。参考实现为Eclipse Parsson。


JSONP

jackson-json

guava

fastjson

解析JSON

jakarta.json.stream.JsonParser

com.fasterxml.jackson.core.JsonParser

com.google.gson.stream.JsonReader

com.alibaba.fastjson.parser.DefaultJSONParser

生成JSON

jakarta.json.stream.JsonGenerator

com.fasterxml.jackson.core.JsonGenerator

com.google.gson.stream.JsonWriter

com.alibaba.fastjson.serializer.JSONSerializer

从API来看,JSONB、JSONP与jackson极其相似。

  1. JAX-RS/mvc vs spring-webmvc

JAX-RS即Java RESTful Web Services。参考实现为Eclipse Jersey。 MVC规范基于JAX-RS,所以此处将二者当作一个整体和其它规范/库进行比较。MVC规范的参考实现为Eclipse Krazo。


JAX-RS & MVC

spring-webmvc

备注

控制器

jakarta.mvc.Controller

org.springframework.stereotype.Controller

spring-webmvc的Controller注解支持命名bean

URL映射

jakarta.ws.rs.Path

org.springframework.web.bind.annotation.RequestMapping

spring-webmvc的RequestMapping可以同时指定method, params, headers, consumes, produces

限定为GET方法

jakarta.ws.rs.GET

org.springframework.web.bind.annotation.GetMapping

同上

限定为POST方法

jakarta.ws.rs.POST

org.springframework.web.bind.annotation.DeleteMapping

同上

限定为PUT方法

jakarta.ws.rs.PUT

org.springframework.web.bind.annotation.PutMapping

同上

限定为DELETE方法

jakarta.ws.rs.DELETE

org.springframework.web.bind.annotation.DeleteMapping

同上

限定为PATCH方法

jakarta.ws.rs.PATCH

org.springframework.web.bind.annotation.PatchMapping

同上。注意:非幂等,对资源进行部分修改

限定为OPTIONS方法

jakarta.ws.rs.OPTIONS

-

spring-webmvc在HandlerMapping中识别预检请求,根据跨域配置决定放行还是拒绝

限定为HEAD方法

jakarta.ws.rs.HEAD

-

获取文件大小用。spring-webmvc无对应方式,可通过GetMapping变通实现

限定为TRACE方法

-

-


限定消费的媒体类型

jakarta.ws.rs.Consumes

org.springframework.web.bind.annotation.RequestMapping(consumes = )


限定产生的媒体类型

jakarta.ws.rs.Produces

org.springframework.web.bind.annotation.RequestMapping(produces = )


绑定请求头

jakarta.ws.rs.HeaderParam

org.springframework.web.bind.annotation.RequestHeader

Jakarta MVC的绑定参数如果是复杂对象,需要实现ParamConverterProvider并注册到容器

绑定Cookie

jakarta.ws.rs.CookieParam

org.springframework.web.bind.annotation.CookieValue

同上

绑定session

-

org.springframework.web.bind.annotation.SessionAttribute


绑定简单查询参数

jakarta.ws.rs.QueryParam

org.springframework.web.bind.annotation.RequestParam


绑定矩阵查询参数

jakarta.ws.rs.MatrixParam

org.springframework.web.bind.annotation.MatrixVariable


绑定路径模板参数

jakarta.ws.rs.PathParam

org.springframework.web.bind.annotation.PathVariable


绑定表单参数

jakarta.ws.rs.FormParam

-

MIME类型需为"
application/x-www-form-urlencoded"。Spring MVC无需注解,使用java bean会自动绑定

绑定请求体

java.lang.Object

org.springframework.web.bind.annotation.RequestBody

Jakarta MVC支持将RequestScoped的bean作为属性注入Controller

绑定上传的文件

-

org.springframework.web.bind.annotation.RequestPart

Jakarta MVC无注解绑定文件

绑定请求属性

-

org.springframework.web.bind.annotation.RequestAttribute


设置默认值

jakarta.ws.rs.DefaultValue

org.springframework.web.bind.annotation.*(defaultValue = )

spring-webmvc的RequestHeader、CookieValue、RequestParam、MatrixVariable支持默认值

返回视图

java.lang.String
jakarta.mvc.View

java.lang.String
org.springframework.web.servlet.View

Jakarta MVC的@View注解用于返回固定的默认视图

返回模型和视图

jakarta.mvc.Models

org.springframework.web.servlet.ModelAndView


返回响应码

-

org.springframework.web.bind.annotation.ResponseStatus

Jakarta MVC无对应注解,可通过
jakarta.ws.rs.core.Response实现

返回响应体

java.lang.Object

org.springframework.web.bind.annotation.ResponseBody

Jakarta MVC通过在实现了MessageBodyWriter和MessageBodyReader的类上标记Provider来自动编解码

全局异常处理

jakarta.ws.rs.ext.ExceptionMapper

org.springframework.web.bind.annotation.ExceptionHandler

Jakarta MVC需要用@Provider注解标记实现类,将其注册到容器

编码

jakarta.ws.rs.ext.MessageBodyWriter

org.springframework.http.codec.HttpMessageWriter


解码

jakarta.ws.rs.ext.MessageBodyReader

org.springframework.http.codec.HttpMessageReader

@Encoded仅用于标记无需解码

参数转换

jakarta.ws.rs.ext.ParamConverter

org.springframework.http.converter.HttpMessageConverter


参数校验

jakarta.validation.Valid

org.springframework.validation.annotation.Validated

spring-webmvc也支持规范的注解,但自定义注解支持分组校验;Jakarta MVC支持用MvcBinding,将违规约束放到注入的BindingResult

跨域

jakarta.mvc.security.CsrfProtected

org.springframework.web.bind.annotation.CrossOrigin


本地化

jakarta.mvc.locale.LocaleResolver

org.springframework.web.servlet.LocaleResolver

Jakarta MVC支持注入MvcContext来过程控制

异步

jakarta.ws.rs.container.Suspended

org.springframework.scheduling.annotation.Async


SSE

jakarta.ws.rs.Produces(MediaType.SERVER_SENT_EVENTS)

org.springframework.web.servlet.mvc.method.annotation.ResponseBodyEmitter


在JAX-RS这种RESTful WebService规范出现之前,还有SOAP WebService规范,即JAX-RPC(Java API for XML-based RPC)和JAX-WS(Java API for XML-Based Web Services)。

JAX-RPC要求SEI(Service Endpoint Interface)必须继承java.rmi.Remote,方法必须抛出java.rmi.RemoteException。 而client可以从SEI或WSDL生成java代码,或使用
java.xml.rpc.ServiceFactory.loadService来获取stub,使用起来相当不便。

JAX-WS则定义了一系列注解,用于标记类为SEI的javax.jws.WebService,标记方法的javax.jws.WebMethod,标记参数的javax.jws.WebParam, 标记结果的javax.jws.WebResult和javax.jws.Oneway。 JAX-RPC要事先生成stub,而JAX-WS允许在运行时生成stub。 JAX-WS曾被纳入JavaSE。

  1. JAXB vs XStream vs jackson-dataformat-xml

JAXB即Java Architecture for XML Binding,它是JAX-WS的默认数据绑定技术, JAXB的参考实现为jaxb-impl。

JAXB使用java注解来标记java对象和XML之间的绑定关系,XStream和jackson-dataformat-xml也支持注解形式,此处就不再比较编写XML映射关系来生成代码形式的XMLBeans和JiBX。


JAXB

XStream

jackson-dataformat-xml

绑定attribute

jakarta.xml.bind.annotation.XmlAttribute

com.thoughtworks.xstream.annotations.XStreamAsAttribute

com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty(isAttribute=true)

绑定元素

jakarta.xml.bind.annotation.XmlElement

com.thoughtworks.xstream.annotations.XStreamAlias

com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty

绑定通配attribute

jakarta.xml.bind.annotation.XmlAnyAttribute

-

-

绑定通配元素

jakarta.xml.bind.annotation.XmlAnyElement

-

-

映射元素值

jakarta.xml.bind.annotation.XmlValue


com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlText

映射附件

jakarta.xml.bind.annotation.XmlAttachmentRef

-

-

映射工厂方法到元素

jakarta.xml.bind.annotation.XmlRegistry
jakarta.xml.bind.annotation.XmlElementDecl

-

-

解组对象生成方式

jakarta.xml.bind.annotation.XmlType(factoryClass= , factoryMethod=)

-

-

包映射XML命名空间

jakarta.xml.bind.annotation.XmlSchema

-

-

标记类可编组为XML

jakarta.xml.bind.annotation.XmlRootElement

default

com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement

映射类到XML Schema

jakarta.xml.bind.annotation.XmlType

com.thoughtworks.xstream.annotations.XStreamAliasType

-

指定编组范围

jakarta.xml.bind.annotation.XmlAccessorType

-

-

忽略类/属性/方法

jakarta.xml.bind.annotation.XmlTransient

com.thoughtworks.xstream.annotations.XStreamOmitField

-

属性编组顺序

jakarta.xml.bind.annotation.XmlAccessorOrder
jakarta.xml.bind.annotation.XmlType(propOrder={})

-

-

属性类型映射XML内建类型

jakarta.xml.bind.annotation.XmlSchemaType


-

属性编组为XML ID

jakarta.xml.bind.annotation.XmlID

-

-

属性编组为XML IDREF

jakarta.xml.bind.annotation.XmlIDREF

-

-

属性编组为base64数据

jakarta.xml.bind.annotation.XmlMimeType
jakarta.xml.bind.annotation.XmlInlineBinaryData

-

-

枚举值编组

jakarta.xml.bind.annotation.XmlEnum
jakarta.xml.bind.annotation.XmlEnumValue

-

-

list属性编组为简单类型

jakarta.xml.bind.annotation.XmlList

-

-

多态

jakarta.xml.bind.annotation.XmlSeeAlso
jakarta.xml.bind.annotation.XmlElementRef

com.thoughtworks.xstream.annotations.XStreamInclude

-

混杂内容

jakarta.xml.bind.annotation.XmlMixed

-

-

编解组带包装元素

jakarta.xml.bind.annotation.XmlElementWrapper

com.thoughtworks.xstream.annotations.XStreamImplicit

com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper

CDATA

-

-

com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlCData

自定义编解组

jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter

com.thoughtworks.xstream.annotations.XStreamConverter

-



相关推荐

2023年最新微信小程序抓包教程(微信小程序 抓包)

声明:本公众号大部分文章来自作者日常学习笔记,部分文章经作者授权及其他公众号白名单转载。未经授权严禁转载。如需转载,请联系开百。请不要利用文章中的相关技术从事非法测试。由此产生的任何不良后果与文...

测试人员必看的软件测试面试文档(软件测试面试怎么说)

前言又到了毕业季,我们将会迎来许多需要面试的小伙伴,在这里呢笔者给从事软件测试的小伙伴准备了一份顶级的面试文档。1、什么是bug?bug由哪些字段(要素)组成?1)将在电脑系统或程序中,隐藏着的...

复活,视频号一键下载,有手就会,长期更新(2023-12-21)

视频号下载的话题,也算是流量密码了。但也是比较麻烦的问题,频频失效不说,使用方法也难以入手。今天,奶酪就来讲讲视频号下载的新方案,更关键的是,它们有手就会有用,最后一个方法万能。实测2023-12-...

新款HTTP代理抓包工具Proxyman(界面美观、功能强大)

不论是普通的前后端开发人员,还是做爬虫、逆向的爬虫工程师和安全逆向工程,必不可少会使用的一种工具就是HTTP抓包工具。说到抓包工具,脱口而出的肯定是浏览器F12开发者调试界面、Charles(青花瓷)...

使用Charles工具对手机进行HTTPS抓包

本次用到的工具:Charles、雷电模拟器。比较常用的抓包工具有fiddler和Charles,今天讲Charles如何对手机端的HTTS包进行抓包。fiddler抓包工具不做讲解,网上有很多fidd...

苹果手机下载 TikTok 旧版本安装包教程

目前苹果手机能在国内免拔卡使用的TikTok版本只有21.1.0版本,而AppStore是高于21.1.0版本,本次教程就是解决如何下载TikTok旧版本安装包。前期准备准备美区...

【0基础学爬虫】爬虫基础之抓包工具的使用

大数据时代,各行各业对数据采集的需求日益增多,网络爬虫的运用也更为广泛,越来越多的人开始学习网络爬虫这项技术,K哥爬虫此前已经推出不少爬虫进阶、逆向相关文章,为实现从易到难全方位覆盖,特设【0基础学爬...

防止应用调试分析IP被扫描加固实战教程

防止应用调试分析IP被扫描加固实战教程一、概述在当今数字化时代,应用程序的安全性已成为开发者关注的焦点。特别是在应用调试过程中,保护应用的网络安全显得尤为重要。为了防止应用调试过程中IP被扫描和潜在的...

一文了解 Telerik Test Studio 测试神器

1.简介TelerikTestStudio(以下称TestStudio)是一个易于使用的自动化测试工具,可用于Web、WPF应用的界面功能测试,也可以用于API测试,以及负载和性能测试。Te...

HLS实战之Wireshark抓包分析(wireshark抓包总结)

0.引言Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。Wireshark使用WinPCAP作为接口,直接...

信息安全之HTTPS协议详解(加密方式、证书原理、中间人攻击 )

HTTPS协议详解(加密方式、证书原理、中间人攻击)HTTPS协议的加密方式有哪些?HTTPS证书的原理是什么?如何防止中间人攻击?一:HTTPS基本介绍:1.HTTPS是什么:HTTPS也是一个...

Fiddler 怎么抓取手机APP:抖音、小程序、小红书数据接口

使用Fiddler抓取移动应用程序(APP)的数据接口需要进行以下步骤:首先,确保手机与计算机连接在同一网络下。在计算机上安装Fiddler工具,并打开它。将手机的代理设置为Fiddler代理。具体方...

python爬虫教程:教你通过 Fiddler 进行手机抓包

今天要说说怎么在我们的手机抓包有时候我们想对请求的数据或者响应的数据进行篡改怎么做呢?我们经常在用的手机手机里面的数据怎么对它抓包呢?那么...接下来就是学习python的正确姿势我们要用到一款强...

Fiddler入门教程全家桶,建议收藏

学习Fiddler工具之前,我们先了解一下Fiddler工具的特点,Fiddler能做什么?如何使用Fidder捕获数据包、修改请求、模拟客户端向服务端发送请求、实施越权的安全性测试等相关知识。本章节...

fiddler如何抓取https请求实现手机抓包(100%成功解决)

一、HTTP协议和HTTPS协议。(1)HTTPS协议=HTTP协议+SSL协议,默认端口:443(2)HTTP协议(HyperTextTransferProtocol):超文本传输协议。默认...