Skip to content

Instantly share code, notes, and snippets.

@blackbing
Created July 30, 2020 16:22
Show Gist options
  • Save blackbing/c7ed58de69f7f43de5429a9dbbe1218f to your computer and use it in GitHub Desktop.
Save blackbing/c7ed58de69f7f43de5429a9dbbe1218f to your computer and use it in GitHub Desktop.
prerender lambda@edge
'use strict';
const customUserAgentHeaderName = 'x-is-bot';
exports.handler = (event, context, callback) => {
const request = event.Records[0].cf.request;
const headers = request.headers;
const userAgent = headers['user-agent'][0].value;
headers[customUserAgentHeaderName] = [{
key: 'x-is-bot',
value: checkIfBot(userAgent).toString()
}]
callback(null, request);
};
function checkIfBot(userAgent) {
if (userAgent) {
const botUserAgents = [
'googlebot',
'Yahoo! Slurp',
'bingbot',
'yandex',
'baiduspider',
'facebookexternalhit',
'twitterbot',
'rogerbot',
'linkedinbot',
'embedly',
'quora link preview',
'showyoubot',
'outbrain',
'pinterest/0.',
'developers.google.com/+/web/snippet',
'slackbot',
'vkShare',
'W3C_Validator',
'redditbot',
'Applebot',
'WhatsApp',
'flipboard',
'tumblr',
'bitlybot',
'SkypeUriPreview',
'nuzzel',
'Discordbot',
'Google Page Speed',
'Qwantify',
'pinterestbot',
'Bitrix link preview',
'XING-contenttabreceiver',
'Chrome-Lighthouse'
];
if (botUserAgents.some(function (botUserAgent) {
return userAgent.toLowerCase().indexOf(botUserAgent) !== -1;
})) {
return true;
}
return false;
}
return false;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment