Checks whether a hyperlink is alive (200 OK) or dead.
npm install --save link-checkA link is said to be 'alive' if an HTTP HEAD or HTTP GET for the given URL
eventually ends in a 200 OK response. To minimize bandwidth, an HTTP HEAD
is performed. If that fails (e.g. with a 405 Method Not Allowed), an HTTP
GET is performed. Redirects are followed.
In the case of mailto: links, this module validates the e-mail address using
node-email-verifier.
Given a link and a callback, attempt an HTTP HEAD and possibly an HTTP GET.
Parameters:
urlstring containing a URL.optsoptional options object containing any of the following optional fields:anchorsarray of anchor strings (e.g.[ "#foo", "#bar" ]) for checking anchor links (e.g.<a href="#foo">Foo</a>).baseUrlthe base URL for relative links.timeouttimeout in zeit/ms format. (e.g."2000ms",20s,1m). Default10s.user_agentthe user-agent string. Default${name}/${version}(e.g.link-check/4.5.5)aliveStatusCodesan array of numeric HTTP Response codes which indicate that the link is alive. Entries in this array may also be regular expressions. Example:[ 200, /^[45][0-9]{2}$/ ]. Default[ 200 ].headersa string based attribute value object to send custom HTTP headers. Example:{ 'Authorization' : 'Basic Zm9vOmJhcg==' }.retryOn429a boolean indicating whether to retry on a 429 (Too Many Requests) response. When true, if the response has a 429 HTTP code and includes an optionalretry-afterheader, a retry will be attempted after the delay indicated in theretry-afterheader. If noretry-afterheader is present in the response or theretry-afterheader value is not valid according to RFC7231 (value must be in seconds), a default retry delay of 60 seconds will apply. This default can be overriden by thefallbackRetryDelayparameter.retryCountthe number of retries to be made on a 429 response. Default2.fallbackRetryDelaythe delay in zeit/ms format. (e.g."2000ms",20s,1m) for retries on a 429 response when noretry-afterheader is returned or when it has an invalid value. Default is60s.
callbackfunction which accepts(err, result).erran Error object when the operation cannot be completed, otherwisenull.resultan object with the following properties:linkthelinkprovided as inputstatusa string set to eitheraliveordead.statusCodethe HTTP status code. Set to0if no HTTP status code was returned (e.g. when the server is down).errany connection error that occurred, otherwisenull.
'use strict';
import linkCheck from 'link-check';
linkCheck('http://example.com', function (err, result) {
if (err) {
console.error(err);
return;
}
console.log(`${result.link} is ${result.status}`);
});With basic authentication:
'use strict';
import linkCheck from 'link-check';
linkCheck('http://example.com', { headers: { 'Authorization': 'Basic Zm9vOmJhcg==' } }, function (err, result) {
if (err) {
console.error(err);
return;
}
console.log(`${result.link} is ${result.status}`);
});npm testSee LICENSE.md