wikimedia / deadlinkchecker

检查给定链接是否死链或活跃的库

v1.8.3.7 2023-09-19 20:51 UTC

README

维护者: Cyberpower678

需求: PHP 7.3 或更高版本

这是一个PHP库,用于通过cURL检测互联网上的URL是否活跃或已死。它包括以下功能:

  • 支持HTTP、HTTPS、FTP、MMS和RTSP URL
  • 支持TOR
  • 支持国际化域名
  • 软404错误进行基本检测
  • 为了优化性能,它最初仅执行只获取页眉的页面请求(CURLOPT_NOBODY)。如果该请求失败,它随后尝试执行正常的完整页面请求。
  • 并发检查URL批处理以提高效率

概述

checkIfDead库是一个PHP库,旨在评估网页和暗网上的URL状态。它通过接收一个或多个URL作为输入,并发检查它们来提高响应时间。

它可以处理正确和错误的URL格式,并在错误输入上进行基本合理性检查和错误纠正。所有输入都通过净化器规范化,以确保cURL库能够正确与目标通信。

默认情况下,库将模拟网络浏览器请求并跟随重定向到目的地。

安装

使用composer:将以下内容添加到您项目的composer.json文件中

{
  "require": {
     "wikimedia/deadlinkchecker": "dev-master"
  }
}

然后运行 'composer update'。

或者使用git

$ git clone https://github.com/wikimedia/DeadlinkChecker.git

基本用法

检查单个链接
$deadLinkChecker = new checkIfDead();
$url = 'https://en.wikipedia.org';
$exec = $deadLinkChecker->isLinkDead( $url );
echo var_export( $exec );

打印

false
检查链接数组
$deadLinkChecker = new checkIfDead();
$urls = [ 'https://en.wikipedia.org/nothing', 'https://en.wikipedia.org' ];
$exec = $deadLinkChecker->areLinksDead( $urls );
echo var_export( $exec );

打印

array (
  'https://en.wikipedia.org/nothing' => true,
  'https://en.wikipedia.org' => false,
)

请注意,如果它们无法确定链接是否活跃或已死,这些函数将返回 null

高级用法

您可以通过向构造函数传递参数来控制页面请求超时前需要多长时间。要将只获取页眉的页面请求的超时设置为10秒,将完整页面请求的超时设置为20秒,请使用以下代码

$deadLinkChecker = new checkIfDead( 10, 20 );

除了控制查询超时外,还可以向库传递自定义用户代理,如下所示

$deadLinkChecker = new checkIfDead( 10, 20, "Custom Agent" );

默认情况下,相同域名的多个URL将排队依次查询以尊重主机。但是,可以禁用此功能,以便所有URL都并发查询,如下所示

$deadLinkChecker = new checkIfDead( 10, 20, "Custom Agent", false );

您可以增加输出的详细程度,以跟踪库在执行时的操作。

$deadLinkChecker = new checkIfDead( 10, 20, "Custom Agent", true, true );

最后,因为库支持TOR请求,环境需要一个可工作的SOCKS5代理来发出请求。库使用系统默认值查找SOCKS5代理,但可以手动指定代理。

$deadLinkChecker = new checkIfDead( 10, 20, "Custom Agent", true, false, "proxy.host", proxy_port );

获取检查的最后一批URL的详细信息

在检查一批URL之后,您可以使用 $deadLinkChecker->getErrors() 获取在过程中遇到的cURL错误,以及使用 $deadLinkChecker->getRequestDetails() 获取在上一个批处理中检查的所有URL的cURL请求详细信息。

其他函数

清理脏URL并允许它们被规范化,以便正确地与不同的HTTP客户端匹配

$deadLinkChecker->sanitizeURL( "https://example.com/", $stripFragment );

默认情况下,$stripFragment为false。当设置为true时,URL片段将被删除。

由于PHP有解析包含UTF-8字符的URL失败的倾向,您可以使用库的parseURL方法。

$deadLinkChecker->parseURL( $url );

许可证

此代码遵循GNU GPLv3+协议进行分发