我需要定期检查我的网站上的“ link-rot”。复数形式已经表明,这是一项无法手动完成的工作(在许多站点甚至需要检查的更多链接),所以我想要一个工具来协助我。

必须具备:


必须在Linux上运行
必须允许定义过滤器(对于URL /服务器名称/域不检查; RegEx很好,简单的“子字符串”仍然可以)
必须允许对输出进行过滤(至少要“仅显示错误和警告”;越精细越好)

强烈推荐:


GUI和CLI界面(因此,我可以使用一个不错的界面手动运行它,也可以从Cron自动运行它-在这种情况下,如果可能,GUI应该能够加载“结果”)
一些统计信息
高效:


不应多次检查相同的URL(但是,如果损坏的报告每个找到的页面都报告它)
不应多次分析同一页面1



精确(尽可能少的“假阴性”)

很高兴:

能够指定要忽略的URL参数2

通过邮件发送(格式化的)报告(如果从Cron运行)3

能够扫描站点具有身份验证要求4

能够排除文件类型被扫描5


我已经尝试过:



gUrlChecker:看到GUI似乎可以满足所有要求。但是它忽略了所有过滤器设置(跳过主机/ URL;如果包括如何执行此示例,欢迎您回答-也许我做错了,或者我使用的gUrlChecker版本有错误)

LinkChecker:远不止许多“假阴性”(例如,报告A重定向到A,即重定向到自身;多次检查同一页面,并多次报告其错误,报告明显可访问的“无法访问的页面”(301、401) (没有“授权”),不对输出进行过滤(尽管显示“仅错误和警告”是可以接受的,但我希望它显示例如“仅错误”)。再次,这可能是同时解决的错误:作为gUrlChecker,我已经从Ubuntu仓库中安装了该仓库,这些仓库并不总是具有最新版本(哎呀,确实:仓库中的7.x,项目站点上的9.3 –将再次使用最新版本进行测试)


1:如果例如在扫描的站点上,页面A,B和C链接到Z(仍在扫描的服务器本身,即没有外部链接),则Z应该只扫描一次,而不是3我经历过的次数,例如使用LinkChecker

2:如果站点例如以多种语言提供相同的内容,则扫描所有语言是没有意义的变体(前提是它们上的链接相同)。所以我可以希望忽略lang=XX参数,并让链接检查器将a.phpa.php?lang=ena.php?lang=de视为同一页面。当然,如果lang参数是可选的,则RegEx必备过滤器可能会解决此问题;)

3:当然可以捕获Cron STDERR,所以该邮件的重点在于“格式化的” ”。那可能例如

4:即那些要求访问用户名/密码的站点(HTTP响应代码401);是ODF计算表(然后可以使用OpenOffice / LibreOffice对其进行“过滤”)。我只是注意到LinkChecker添加了v7.9,gUrlChecker也能够做到这一点。这主要与要扫描的站点有关,而不必与外部链接有关(如果同时支持,则应单独配置)。

5:如果链接检查器是能够扫描PDF,MSWord,任何文档的内容,应该可以将其关闭:一个网站可能包含“旧文档版本”以供参考,其中“过时的链接”被视为“正常”。排除可以通过mime类型或文件扩展名进行。

#1 楼

由于没有建议,因此我最终使用了LinkChecker。虽然我列出的大多数问题仍然存在,但使用作者网站上的最新版本要比运行存储库中提供的版本更好。

LinkChecker GUI和CLI(源:LinkChecker;单击图像查看较大的变体)

它如何满足我的要求

必须拥有



必须运行在Linux上:是的。

必须允许定义过滤器:部分。预过滤(即从支票中排除内容)在某种程度上是可能的,尽管并不总是直观的。我找不到在GUI中过滤结果列表的方法。

必须允许过滤输出:再次部分地,请参见上一项。一旦结果列表存在,就无法进行进一步的过滤。

强烈推荐



GUI和CLI界面:是(请参见上面的屏幕截图) 。甚至提供了Web界面(CGI)。

一些统计信息:不像我希望的那样详细,但是有些统计信息可用(请参阅GUI屏幕快照的右下角)

有效:有点。仍然有太多“重复项”

精确(尽可能少的“假阴性”):在这里我正在努力。还是有点烦人,我无法摆脱所有这些。对于“经验丰富的用户”来说可能是可能的-但是对于“初学者”来说绝对不直观

很高兴拥有指定要忽略的URL参数:在这里,我仅取得了部分成功。肯定有一些技巧,但我找不到它:可以定义要忽略的URL的模式,但是在某个时候,我已经停止尝试如何使用参数来进行操作:带有URL模式的“选项”窗口(单击较大的变体)


通过邮件发送(格式化的)报告(如果从Cron运行):由于GUI的效果不尽人意,因此我对此不作进一步检查。 />
能够扫描具有身份验证要求的站点:尚未经过全面测试,但这似乎可能–可以在linkcheckerrc文件中进行配置:

[authentication]
# Different user/password pairs for different URLs can be provided.
[…]


排除文件类型的能力不会被扫描:我没有处理这个问题,因为LinkChecker似乎没有遇到它可以扫描的任何PDF或其他文件格式。我正在寻找,LinkChecker距我很近-很有可能离我越近。如果您遇到了更符合我需求的东西,我期待其他选择:)

评论


您是否尝试过Xenu将侦探与酒联系起来?

– Nivatius
18-09-18在7:35

@Nivatius不,我只对本机解决方案感兴趣,因此Wine毫无疑问。

– Izzy♦
'18 Sep 19'在19:15