peteujah / broken-links-scanner
一个用于扫描网站以识别断链并提取相关信息的PHP库。
1.0.0
2024-09-21 16:17 UTC
Requires
- php: ^7.0
- ext-curl: *
Suggests
- ext-curl: Required for performing HTTP requests when scanning websites.
README
一个用于扫描网站以识别断链并提取相关信息的PHP库。请确保已安装所需的PHP扩展,尤其是 cURL
,以便扫描器能正常工作。
通过Composer安装非常简单
composer require peterujah/broken-links-scanner
CLI用法
选项
--url
(必需):扫描的起始URL(例如,http://luminova.ng/docs/
或http://luminova.ng/
)。--host
(必需):扫描URL的主机名(例如,luminova.ng
)。--path
(可选):保存扫描结果的路径。--output
(可选):控制断链输出的标志。使用1
打印,或0
禁止输出(默认:0
)。--timeout
(可选):等待扫描完成的秒数(默认:0
)。--limit
(可选):要执行的扫描的最大次数。使用0
扫描所有URL(默认:0
)。
示例用法
要开始扫描,请运行以下命令
php broken --url="https://luminova.ng/" --host="luminova.ng" [--timeout=10] [--path="/scanner/logs"] [--output=0] [--limit=0]
示例:使用扫描器扫描网站的断链
使用必要的参数初始化 Scanner
并注册您的自定义类。
1. 基本用法
require_once __DIR__ . '/vendor/autoload.php'; use \Peterujah\BrokenLinks\Scanner; // Define the starting URL for the scan $url = 'https://luminova.ng/'; $host = 'luminova.ng'; $maxScan = 10; // Set to 0 to scan all URLs. // Initialize the BrokenLinks class $scanner = new Scanner($url, $host, $maxScan); // Optionally set the path to save scanned URLs $scanner->setPath($path);
2. 开始扫描并获取结果
如果未设置路径,您可以直接获取输出
if ($scanner->start() && $scanner->isCompleted()) { // Get results from the scan $brokenLinks = $scanner->getBrokenLinks(); $visitedUrls = $scanner->getVisitedUrls(); $errors = $scanner->getErrors(); $allUrls = $scanner->getUrls(); // Output the scanned data echo "Broken Links:\n"; print_r($brokenLinks); echo "\nVisited URLs:\n"; print_r($visitedUrls); echo "\nErrors Encountered:\n"; print_r($errors); echo "\nAll Extracted URLs:\n"; print_r($allUrls); } else { echo "Failed to complete the scan.\n"; }
3. 使用 wait
方法
要等待扫描完成,您可以使用指定超时的 wait
方法
$timeout = 30; try { $scanner->wait($timeout, function (BrokenLinks $scanner) { $brokenLinks = $scanner->getBrokenLinks(); echo "Broken Links:\n"; print_r($brokenLinks); }); } catch (RuntimeException $e) { echo "Error: " . $e->getMessage() . "\n"; }
注意:使用
wait
方法时,无需再次调用start
方法。
类方法文档
__construct
- 描述:使用指定的URL和主机名初始化扫描器的新实例。
- 参数
string $url
:扫描的起始URL(例如,https://luminova.ng/docs/
)。string $host
:要扫描的URL的主机名(例如,luminova.ng
)。int $maxScan
:要执行的扫描的最大次数(默认为0
,表示无限制)。
isCompleted(): bool
- 描述:检查扫描过程是否已完成。
- 返回
bool
:如果扫描已完成,则返回true
;否则,返回false
。
getBrokenLinks(): array
- 描述:检索扫描期间识别的断链列表。
- 返回
array
:包含断链的数组。
getVisitedUrls(): array
- 描述:检索扫描期间访问的URL列表。
- 返回
array
:包含访问URL的数组。
getErrors(): array
- 描述:检索扫描过程中遇到的错误消息。
- 返回
array
:包含错误消息的数组。
getUrls(): array
- 描述:检索扫描期间提取的URL列表。
- 返回
array
:包含提取URL的数组。
setPath(string $path): self
- 描述:设置扫描URL将保存的文件路径。
- 参数
string $path
:保存扫描URL的文件路径。
- 返回
self
: 返回当前类的实例,以便进行方法链式调用。
cli(bool $cli): self
- 描述:设置是否在命令行界面(CLI)中显示扫描结果。
- 参数
bool $cli
:true
表示在 CLI 模式下运行;否则,false
。
- 返回
self
: 返回当前类的实例,以便进行方法链式调用。
start(): bool
- 描述:启动链接扫描过程。
- 返回
bool
: 如果扫描成功完成,则返回true
;否则返回false
。
- 抛出异常
RuntimeException
: 如果提供的 URL 无效,则抛出异常。
wait(int $timeout, ?callable $onComplete = null): void
- 描述:等待扫描过程完成或直到达到指定的超时时间。如果提供了回调函数,则在完成时执行它。
- 参数
int $timeout
: 最大等待秒数。如果0
,则无限期等待,直到扫描完成。callable|null $onComplete
: 可选的回调函数,在扫描完成时执行。
- 抛出异常
RuntimeException
: 如果在完成之前超时,则抛出异常。