网站资料 · 技术情报 · 相似站点

cglib.sourceforge.net 暂未发现付费内容

分类: 编程开发

访问网站

更新时间:2026-10-01 23:38 语言:未知(默认) 网站访问:正常

站内浏览 0 次 访问跳转 0 次
cglib 首页完整截图
编辑评测

网站深度测评

cglib是什么网站?

cglib 是一个 Java 代码生成库的官方网站,核心用途是在运行时动态生成和修改 Java 字节码,常被用来创建代理类、实现方法拦截。

它解决什么问题 Java 自带的动态代理基于接口,只能代理实现了接口的类。cglib 通过生成目标类的子类来代理,因此可以代理没有实现接口的普通类。这在需要为具体类做 AOP 增强、延迟加载或方法拦截时很有用。

谁在什么情况下会用到它

  • 使用 Spring 框架做 AOP 时,若目标类没有接口,Spring 会切换到 cglib 代理。
  • 需要为第三方库的类(无源码、无接口)添加横切逻辑,例如日志、事务、权限校验。
  • 实现 ORM 框架里的实体延迟加载,运行时生成子类覆盖 getter。

需要注意的一点 根据该站页面上的提示,cglib 现在已经迁移到 GitHub 托管,原 SourceForge 地址会自动跳转。所以查找最新版本、源码或提交问题时,应前往其 GitHub 仓库,而不是停留在旧页面。

和其他方案的比较

  • 与 JDK 动态代理相比:JDK 代理要求目标类实现接口,cglib 不要求,但无法代理 final 类和 final 方法。
  • 与 Javassist 相比:两者都能操作字节码,cglib 更偏向生成代理子类这一场景,API 更聚焦;Javassist 提供更底层的字节码编辑能力。
  • 与 Byte Buddy 相比:Byte Buddy 是较新的字节码生成库,API 更现代,但 cglib 在 Spring 等老牌框架中集成度高,很多项目仍在间接使用它。

如果你是在排查 Spring AOP 代理相关的问题,或想为无接口的类做动态增强,可以优先了解 cglib;如果只是做常规的接口代理,JDK 动态代理已经够用。

cglib现在托管在哪里?

cglib 现在托管在 GitHub 上。

原 SourceForge 页面只保留了一个自动跳转提示,说明项目已迁移。如果你要查看源码、提交 issue 或参与开发,应前往 GitHub 上的官方仓库,而不是继续使用 cglib.sourceforge.net。

cglib的自动重定向是如何实现的?

cglib 的 SourceForge 页面本身不做重定向逻辑,它只是用一段很短的 HTML/脚本把访客送到 GitHub 新地址。

实现方式通常就是这两种之一:

  • HTML meta refresh:在 <head> 里放 <meta http-equiv="refresh" content="0; url=https://github.com/cglib/cglib">,浏览器加载后立即跳转。
  • JavaScript 跳转:加载时执行 window.location.replace(...) 或 window.location.href = ...,把当前页替换成 GitHub 地址。

页面上的 “Click here if you aren't redirected automatically” 是兜底链接:当浏览器禁用脚本、meta refresh 被拦截,或网络环境导致自动跳转失败时,用户还能手动点过去。

这类重定向的用途很单一:SourceForge 上的旧项目页不再维护,但历史链接和搜索引擎结果仍指向它,所以保留一个自动跳转页,避免访客停在废弃页面。对使用 cglib 的开发者来说,看到跳转后直接去 GitHub 获取最新代码和文档即可。

如果你在排查“为什么没有自动跳转”,优先检查浏览器是否禁用了 JavaScript、是否拦截了 meta refresh,以及网络是否无法访问目标域名。

cglib与GitHub上的项目是什么关系?

cglib 现在托管在 GitHub 上,SourceForge 上的 cglib 页面只保留了一条跳转提示:项目已迁移,访问者会被自动重定向到 GitHub 仓库。

具体来说:

  • 关系:GitHub 是 cglib 当前的官方代码托管和开发平台,SourceForge 是旧地址,不再作为主站。
  • 对使用者的影响:查最新源码、提交 issue、看版本更新,都应该去 GitHub 仓库,而不是停在 SourceForge 页面。
  • 如果被重定向失败:SourceForge 页面提供了手动跳转入口,说明迁移是官方安排的,不是第三方镜像。

例如需要引入 cglib 依赖或确认最新版本时,直接以 GitHub 仓库为准;老教程里给出的 SourceForge 链接会自动转到新地址,不必担心找错项目。

cglib 现在在哪里托管和下载?

cglib 已不再以 cglib.sourceforge.net 作为主要托管页面。该页面目前只保留一条迁移提示,说明 cglib 已迁移到 GitHub,并会在浏览器支持的情况下自动跳转。因此,访问 cglib.sourceforge.net 时被跳转是正常现象,不是网站故障,也不代表项目停止维护。要获取 cglib 的源码、发布版本或参与项目,应前往 GitHub 上的 cglib 仓库。

为什么打开 cglib.sourceforge.net 会被跳转

SourceForge 上的 cglib 页面已经不再作为项目的主站使用。页面上的提示信息表明:

  • cglib 现在托管在 GitHub;
  • 如果浏览器没有自动跳转,可以手动点击页面上的链接前往 GitHub。

所以出现跳转说明迁移提示生效了。若没有自动跳转,通常与浏览器设置、脚本拦截或网络环境有关,手动点击链接即可。

如何找到 cglib 的当前仓库

由于输入资料只给出了“已迁移到 GitHub”这一信息,没有提供具体仓库地址,可以通过以下方式定位:

  1. 打开 cglib.sourceforge.net,查看页面上的 GitHub 链接;
  2. 若页面未自动跳转,手动点击提示中的链接;
  3. 在 GitHub 上确认仓库名称与项目描述是否对应 cglib(Code Generation Library);
  4. 进入仓库后,通过 Releases 或 Tags 页面获取发布版本,通过源码目录获取代码。

获取源码与发布版本的入口

需求 在 GitHub 仓库中的位置
查看源码 仓库根目录及 src 等源码目录
下载发布版本 Releases 页面或 Tags 页面
查看提交历史 Commits 页面
提交问题或建议 Issues 页面

常见卡点

  • 页面没有自动跳转:手动点击页面上的 GitHub 链接即可,跳转依赖浏览器执行页面脚本。
  • 不确定 GitHub 上哪个仓库是官方的:以 SourceForge 迁移提示中指向的链接为准,不要仅凭搜索结果中的同名仓库判断。
  • 找不到下载包:优先查看仓库的 Releases 或 Tags,而不是只浏览根目录。
  • 构建工具中引用的旧坐标:如果项目通过 Maven、Gradle 等构建工具依赖 cglib,坐标本身通常不变,但版本更新应以 GitHub 仓库发布的信息为准。

结论

cglib.sourceforge.net 现在只是一个迁移提示页,真正的项目托管位置在 GitHub。遇到跳转不必担心,按页面提示前往 GitHub 仓库,即可获取源码、发布版本和项目动态。

cglib 使用中的常见问题与排查方法

打开 cglib.sourceforge.net 会被自动跳转到 GitHub,是因为 cglib 已经迁移托管平台,SourceForge 上的页面只保留了一个跳转提示。这个现象本身不是故障,而是项目地址变更的结果。使用 cglib 时真正容易出问题的,是代理失败、依赖引入和 JDK 兼容性这几类情况,下面按现象逐项说明。

为什么访问 cglib.sourceforge.net 会跳转

该站点页面上的原文提示是:cglib is now hosted on github,并附带一句“如果没有自动跳转请点击这里”。也就是说,SourceForge 域名不再作为 cglib 的主托管地,继续访问会被引导到 GitHub。

需要下载或查看源码时,直接使用 GitHub 上的仓库,不要依赖 SourceForge 的旧链接。旧链接可能仍能跳转,但不适合作为长期引用地址。

无法代理 final 类或 final 方法

这是 cglib 最常见的失败场景,根源在于它的工作方式:cglib 通过生成目标类的子类来实现代理,而 Java 语言不允许继承 final 类、也不允许覆盖 final 方法。

典型表现:

  • 对 final 类做代理时,抛出类似“Cannot subclass final class”的异常。
  • 类本身可继承,但目标方法是 final,代理对象调用该方法时不会进入拦截逻辑,而是直接执行原方法。

排查思路:

  1. 确认目标类是否被声明为 final。
  2. 确认需要拦截的方法是否被声明为 final(包括 private 方法,它们同样无法被覆盖)。
  3. 如果无法修改目标类,改用基于接口的 JDK 动态代理,或调整设计把需要增强的逻辑放到可覆盖的方法上。

选择条件很明确:目标类型是接口实现、且只关心接口方法时,JDK 动态代理更合适;需要代理普通类的方法时,才需要 cglib 这类子类化方案。

依赖没有正确引入

cglib 不是 JDK 自带库,缺少依赖时会在运行期报 NoClassDefFoundError 或 ClassNotFoundException,指向 net.sf.cglib 包下的类。

处理方式:

  • 确认构建配置中声明了 cglib 依赖,并且版本与项目使用的 JDK 匹配。
  • 如果项目通过 Spring 等框架间接使用 cglib,注意框架可能自带了一份重新打包的 cglib(包名通常不同),此时不要重复引入造成冲突。
  • 出现类冲突时,用依赖树命令检查是否存在多个来源的 cglib 相关类。

不同 JDK 版本下的兼容性

cglib 依赖字节码生成,JDK 版本变化会影响它的可用性,尤其是模块化之后对底层 API 的访问限制变严。

需要注意的点:

  • 较新的 JDK 上,cglib 访问 JDK 内部类可能被模块系统拒绝,表现为 IllegalAccessError 或反射相关的异常。
  • 遇到这类问题时,通常需要升级 cglib 到支持当前 JDK 的版本,或改用框架自身维护的字节码方案。
  • 具体哪个版本支持哪个 JDK,以 GitHub 仓库的发布说明为准,不要凭经验推断。

与框架集成时的类加载器问题

在应用服务器、OSGi 容器或自定义类加载器环境中,cglib 生成的代理类需要能访问目标类。如果两者由不同的类加载器加载,可能出现 ClassNotFoundException 或类型转换失败。

排查方向:

  • 确认代理类和目标类处于同一个类加载器可见范围。
  • 检查是否存在热部署导致的类加载器泄漏,旧代理类未被释放会持续占用内存。
  • 框架集成场景下,优先使用框架提供的代理配置入口,而不是手动创建 Enhancer。

快速对照表

现象 常见原因 处理方向
访问 sourceforge 域名被跳转 项目已迁移 改用 GitHub 仓库
Cannot subclass final class 目标类为 final 改接口代理或调整设计
final 方法未被拦截 方法不可覆盖 移除 final 或换增强点
NoClassDefFoundError 依赖缺失或冲突 检查依赖树与版本
IllegalAccessError JDK 模块限制 升级 cglib 版本
类加载相关异常 类加载器不一致 统一加载范围,避免手动 Enhancer

判断优先级时,先看异常信息指向的是“不能继承”还是“找不到类”,前者是设计约束,后者是环境配置,两者的修复路径完全不同。

cglib 和 Java 动态代理有什么关系?

cglib 是一个代码生成库,它通过在运行时生成目标类的子类来实现方法拦截,因此可以对没有实现任何接口的普通类做代理。这与 JDK 动态代理必须基于接口的机制形成互补:有接口时 JDK 动态代理够用,没有接口时通常就需要 cglib 这类方案。Spring AOP 等框架正是根据目标类是否实现接口,在两种代理方式之间选择。

cglib 的代理机制

cglib(Code Generation Library)的核心能力是动态生成字节码。用于代理时,它的基本思路是:

  1. 读取目标类的字节码信息;
  2. 生成一个继承目标类的子类;
  3. 在子类中覆盖需要拦截的方法,把调用转发给回调(如 MethodInterceptor);
  4. 由这个子类实例代替原对象对外提供服务。

因为代理对象是目标类的子类,所以调用方感知不到差别,方法调用会先进入拦截逻辑,再由拦截逻辑决定是否调用父类(原始)实现。

与 JDK 动态代理的关键差异

维度 JDK 动态代理 cglib
实现基础 接口 继承目标类、生成子类
前提条件 目标类必须实现接口 目标类不能是 final,被代理方法不能是 final/private
代理对象类型 实现了目标接口的类 目标类的子类
典型使用方 JDK 自带 java.lang.reflect.Proxy Spring AOP(目标无接口时)等框架

一个直观例子:如果有一个 UserService 类没有实现任何接口,用 JDK 动态代理就无法直接为它创建代理;而 cglib 可以生成 UserService 的子类,在子类里插入日志、事务等逻辑,再调用父类方法。

适用场景与限制

适合用 cglib 的情况:

  • 目标类没有实现接口,但仍需要方法级拦截;
  • 使用 Spring AOP 且未强制走 JDK 代理;
  • 需要覆盖具体类的方法行为。

需要注意的限制:

  • final 类无法被继承,因此不能被 cglib 代理;
  • final 方法和 private 方法无法被覆盖,拦截不到;
  • 生成子类和字节码有一定开销,通常配合缓存使用。

关于 cglib.sourceforge.net

如果你打开 cglib.sourceforge.net 被自动跳转,是因为 cglib 已不再托管在 SourceForge,页面本身只保留了跳转提示:cglib is now hosted on github。也就是说,该域名现在的作用是引导访问者前往 GitHub 上的新托管地址,而不是继续提供下载。需要获取源码或版本信息时,应以 GitHub 上的仓库为准。

cglib 是什么?为什么打开 cglib.sourceforge.net 会被跳转

cglib(Code Generation Library)是一个 Java 字节码生成库,用来在运行时动态生成类、方法以及代理对象。它最广为人知的用途是作为 Spring AOP、Hibernate 等框架的底层代理实现之一。如果你现在访问 cglib.sourceforge.net,页面不会展示项目文档,而是提示项目已经迁移到 GitHub,并自动跳转过去——也就是说,这个域名目前只是一个旧地址的入口,不再是 cglib 的主站。

cglib 能做什么

cglib 工作在字节码层面,通过继承目标类并覆写方法来生成代理,因此不需要目标类实现接口。这一点和 JDK 动态代理形成互补:JDK 代理要求目标类至少实现一个接口,而 cglib 代理的是普通类。

典型用途包括:

  • AOP 代理:在方法调用前后织入事务、日志、权限等横切逻辑。
  • ORM 延迟加载:为实体类生成子类,拦截 getter 以按需查询数据库。
  • Bean 复制与映射:在运行时生成属性读写代码,比纯反射更快。
  • 测试替身:为具体类生成 mock 或 stub。

为什么访问旧域名会被重定向

cglib.sourceforge.net 属于 SourceForge 时代的托管地址。页面上的说明是:cglib 现在托管在 GitHub,如果没有自动跳转可以手动点击链接。这意味着:

  • 旧域名仍能解析,但内容已不在 SourceForge 维护。
  • 文档、源码、issue 和版本发布都以 GitHub 仓库为准。
  • 如果你在旧教程或依赖配置里看到这个域名,它指向的是历史信息,不代表当前项目状态。

使用前需要知道的前提

cglib 依赖字节码操作,通常以 jar 形式引入项目。需要注意几点:

  1. JDK 版本兼容性:cglib 通过 ASM 操作字节码,不同 JDK 版本对字节码格式有要求,升级 JDK 时可能遇到兼容问题。较新的 Java 项目往往改用 Byte Buddy 或 JDK 自带的动态代理。
  2. 无法代理 final 类和方法:因为 cglib 靠继承实现代理,被 final 修饰的类或方法无法覆写。
  3. 构造器会被调用:生成子类实例时会走父类构造逻辑,如果目标类构造器有副作用,需要留意。
  4. 框架已封装:多数情况下你不会直接调用 cglib,而是通过 Spring 等框架间接使用。只有需要自定义代理或做底层扩展时才直接依赖它。

该去哪里找 cglib

既然旧站只做跳转,获取 cglib 的正确入口是 GitHub 上的项目仓库。在那里可以找到源码、发布版本和问题追踪。如果你的项目仍在使用 cglib,建议确认所用版本与当前 JDK 是否匹配,并评估是否迁移到维护更活跃的字节码库。

一句话总结:cglib 是 Java 运行时生成代理类的老牌字节码库,cglib.sourceforge.net 只是它的历史入口,实际内容已迁移到 GitHub。

cglib 与 JDK 动态代理有什么区别?

cglib 和 JDK 动态代理是 Java 中两种主流的代理实现方式,核心区别在于:JDK 动态代理基于接口,要求目标类必须实现接口;cglib 基于继承,通过生成目标类的子类来实现代理,因此可以代理没有实现接口的普通类。 选型时先看目标类是否实现接口——有接口且只需按接口调用,JDK 动态代理足够;没有接口或需要代理类的具体方法,才考虑 cglib。同时要接受 cglib 的继承限制:无法代理 final 类和 final 方法。

两者的工作机制

JDK 动态代理

JDK 自带 java.lang.reflect.Proxy 和 InvocationHandler。运行时为一组接口生成一个实现了这些接口的代理类,方法调用被转发到 InvocationHandler.invoke()。

  • 输入:目标类实现的接口列表 + 调用处理器。
  • 动作:JVM 在运行时生成代理类字节码。
  • 结果:得到一个可强转为接口类型的代理对象,调用接口方法时进入处理器逻辑。

因为代理类实现的是接口,所以只能通过接口类型引用它,目标类自己的非接口方法不在代理范围内。

cglib

cglib(Code Generation Library)是一个字节码生成库,底层依赖 ASM。它为目标类生成一个子类,在子类中覆写父类方法,把调用拦截到 MethodInterceptor.intercept()。

  • 输入:目标类(Class 对象)+ 方法拦截器。
  • 动作:运行时生成目标类的子类字节码。
  • 结果:得到一个目标类的子类实例,调用被覆写的方法时进入拦截逻辑。

由于是继承关系,代理对象可以按目标类类型使用,能覆盖目标类中所有可被继承的方法。

关键差异对比

维度 JDK 动态代理 cglib
实现基础 接口 继承(生成子类)
目标类要求 必须实现至少一个接口 无需实现接口,但类和方法不能是 final
可代理范围 接口中声明的方法 目标类中可被覆写的非 final 方法
代理对象类型 接口类型 目标类的子类类型
依赖 JDK 内置,无需额外依赖 需要引入 cglib(及其 ASM 依赖)
典型限制 无法代理没有接口的类 无法代理 final 类、final 方法、static 方法、private 方法

怎么选

按下面的顺序判断即可:

  1. 目标类是否实现了接口?
    • 是,且调用方只依赖接口 → 优先 JDK 动态代理,零额外依赖,行为可预期。
    • 是,但需要代理接口之外的方法 → 考虑 cglib。
    • 否 → 只能用 cglib(或其它字节码方案)。
  2. 目标类或关键方法是否为 final?
    • 是 → cglib 无法覆写,需改用接口方案或调整设计。
  3. 是否愿意引入额外依赖?
    • 不想引入 → JDK 动态代理。
    • 可以引入 → cglib 适用范围更广。

一个具体场景:你有一个 OrderService 类,没有实现任何接口,想在方法前后加日志。JDK 动态代理做不到,因为它需要一个接口来生成代理类;cglib 可以生成 OrderService 的子类并覆写方法,从而插入日志逻辑。反过来,如果 OrderService 实现了 IOrderService 接口,且调用方都通过接口引用,那么用 JDK 动态代理更简单,也不必引入 cglib。

关于 cglib 的获取

cglib 项目已不再托管在 SourceForge。打开 cglib.sourceforge.net 会被重定向到 GitHub 上的托管地址,源码和发布包都在那里获取。因此在新项目里引用 cglib 时,应使用 GitHub 上维护的版本坐标,而不是旧的 SourceForge 地址。

常见卡点

  • 以为 cglib 能代理一切:final 类、final 方法、static 方法、private 方法都无法被覆写,代理会失效或直接报错。
  • 用接口类型接收 cglib 代理:cglib 生成的是子类,按接口强转不一定符合预期,注意引用类型。
  • 忽略构造器:cglib 通过子类实例化,目标类的构造器会被调用,构造器里的副作用需要考虑。
  • 版本与依赖:cglib 依赖 ASM,版本不匹配时可能出现字节码相关的异常,引入时留意依赖树。

网站信息概览

依据当前可见线索,长期注册记录并非孤立存在,基础设施也有专业服务支撑,因此更可能具备稳定维护流程,而非一次性部署。现有迹象表明,多项搜索或分享字段同时缺失时,平台可能自行截取标题、正文和图片,最终展示更不稳定,也可能削弱用户的点击判断。

域名与注册信息

截至本次评测,域名年龄约为 27 年。状态中包含防转移保护,未发现 hold 或删除流程标记。从公开技术信号来看,注册商为 GoDaddy.com, LLC,属于常见的主流域名服务商。顶级域为 .net,本身不提供额外的身份信号。

DNS 与邮件配置

综合当前可观察字段,名称服务器由 constellix.com 提供,使用专业 DNS 托管。结合现有公开信息推测,解析和提供商证据显示流量经过 Cloudflare CDN。依据当前可见线索,MX 记录使用 sourceforge.net 企业邮箱服务。域名设置了 CAA,证书签发机构受到 DNS 记录约束。可见邮件策略包含 SPF 和 DMARC,DKIM 是否启用尚待进一步确认。

TLS 与证书

公钥算法为 EC,密钥长度 256 位。TLS 握手提供了完整的证书链数据。证书可验证域名控制权,但现有数据不能确认组织身份。综合当前可观察字段,证书由 Let's Encrypt 签发,采用常见的自动化短周期证书服务。证书总有效期约 89 天,符合短周期自动续期模式。

HTTP 响应

常用安全响应头尚缺少 HSTS、X-Content-Type-Options、Referrer-Policy、Permissions-Policy、点击劫持防护。未发现 X-Powered-By,后端框架信息未通过该字段公开。现有迹象表明,响应中的 cf-ray 表明流量经过 CDN 或缓存代理。HTTP 字段未显示敏感内部网络标识。Server 头为 cloudflare,未暴露具体版本号。

技术栈分析

从当前可见信息判断,已识别的搭建技术包括 Cloudflare,但版本保持隐藏。这样的配置能降低被快速匹配已知版本问题的便利性,但不能替代及时更新。

SEO 与社交分享

页面缺少描述标签,搜索平台可能自行截取正文。首页缺少移动设备视口声明。页面没有声明首选 URL。社交分享时平台需要自行提取页面内容。Title 信息完整,共 31 个字符。

主机和电子邮件

DNSconstellix.com
主机Cloudflare
电子邮件sourceforge.net
位置 United States 国旗United States 2606:4700::6812:c95

用户评价(0)

  • 暂无评价。

页面、搜索与分享信息

页面描述未检测到
规范链接未检测到
语言未知(默认)
Twitter Card未检测到

未知

未发现 robots.txt

暂未发现 Sitemaps

域名登记事实 RDAP / WHOIS

注册商GoDaddy.com, LLC
注册时间1999-08-08
到期时间2027-08-08
域名状态client delete prohibited、client renew prohibited、client transfer prohibited、client update prohibited
名称服务器ns11.constellix.com、ns21.constellix.com、ns31.constellix.com、ns41.constellix.net、ns51.constellix.net、ns61.constellix.net
DNSSECunsigned

DNS 记录

类型名称值TTL优先级
Aprojects.sourceforge.net.cdn.cloudflare.net104.18.12.149300—
Aprojects.sourceforge.net.cdn.cloudflare.net104.18.13.149300—
AAAAprojects.sourceforge.net.cdn.cloudflare.net2606:4700::6812:c95300—
AAAAprojects.sourceforge.net.cdn.cloudflare.net2606:4700::6812:d95300—
MXsourceforge.netmx.sourceforge.net360010
NSsourceforge.netns11.constellix.com86400—
NSsourceforge.netns21.constellix.com86400—
NSsourceforge.netns31.constellix.com86400—
NSsourceforge.netns41.constellix.net86400—
NSsourceforge.netns51.constellix.net86400—
NSsourceforge.netns61.constellix.net86400—
TXTsourceforge.netSourceForge, Inc.300—
TXTsourceforge.netabuseipdb-verification=dvyMFAir300—
TXTsourceforge.netbrave-ledger-verification=09845b65316c1613c72337595c391c4675fff6ae8923768232dc3f6c661af14b300—
TXTsourceforge.netca3-1594c24430d2487fad7bceaec2fa251f300—
TXTsourceforge.netca3-33e180a2afaa4c86951f4a8ad123e300300—
TXTsourceforge.netca3-8b7801430b214be99a3325aab5d0d899300—
TXTsourceforge.netgoogle-site-verification=HugCfmT_JOUQaz6xbszx1O9W3ccm_Dh5GiageK7egmM300—
TXTsourceforge.nettollbit-domain-verification=bae1f5123238c200f3429dba2556501be81cc1ab0b0f0692146e362a49979895300—
TXTsourceforge.netv=spf1 include:sparkpostmail.com include:servers.mcsv.net ip4:216.105.38.0/26 -all300—
TXTsourceforge.netyandex-verification: eddadce308154a90300—
CNAMEcglib.sourceforge.netprojects.sourceforge.net.cdn.cloudflare.net300—
CAAsourceforge.net0 iodef "mailto:[email protected]"300—
CAAsourceforge.net0 issue "amazon.com"300—
CAAsourceforge.net0 issue "digicert.com"300—
CAAsourceforge.net0 issue "letsencrypt.org"300—
CAAsourceforge.net0 issue "sectigo.com"300—
DMARC_dmarc.sourceforge.netv=DMARC1; p=quarantine; rua=mailto:[email protected],mailto:[email protected]; ruf=mailto:[email protected]; fo=1; sp=none;384—

TLS 与证书

定性结果配置正常
支持协议TLSv1.2、TLSv1.3
协商协议TLSv1.3
证书主题sourceforge.net
颁发者Let's Encrypt
有效期至2026-11-10T19:22 · 记录时剩余 39 天
验证事实证书信任:通过 · 域名匹配:通过

HTTP 响应标头

标头值
content-typetext/html
cache-controlmax-age=60
servercloudflare
content-security-policyupgrade-insecure-requests
set-cookie已脱敏

已识别技术

Cloudflare