# spider-detector

> A tiny node module to detect spiders/crawlers quickly and comes with optional middleware for ExpressJS

Latest version **2.1.0** (published 2024-08-29) · MIT license · 0 weekly downloads

## Install

```sh
npm install spider-detector
pnpm add spider-detector
yarn add spider-detector
bun add spider-detector
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.1.0 |
| Published | 2024-08-29 |
| First published | 2014-12-30 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | >=8.15.0 |
| Dependencies | 0 |
| Unpacked size | 7.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 37 |
| Author | Michael Heuberger |
| Maintainers | michael.heuberger |
| Keywords | crawler, detector, spider, bot, middleware, single page app, expressjs |

## Links

- npm: https://www.npmjs.com/package/spider-detector
- Repository: https://github.com/binarykitchen/spider-detector
- Homepage: https://github.com/binarykitchen/spider-detector#readme
- Issues: https://github.com/binarykitchen/spider-detector/issues
- npm.io page: https://npm.io/package/spider-detector

## Alternatives

- [@sindresorhus/slugify](https://npm.io/package/@sindresorhus/slugify.md) — 3.7M weekly downloads
- [solid-js](https://npm.io/package/solid-js.md) — 2.7M weekly downloads
- [expo-glass-effect](https://npm.io/package/expo-glass-effect.md) — 2.5M weekly downloads
- [nanoassert](https://npm.io/package/nanoassert.md) — 780.8K weekly downloads
- [@ffmpeg/ffmpeg](https://npm.io/package/@ffmpeg/ffmpeg.md) — 529.5K weekly downloads

## Recent versions

- 2.1.0 (latest) — 2024-08-29
- 2.0.1 — 2023-06-29
- 2.0.0 — 2019-10-01
- 1.0.19 — 2019-01-01
- 1.0.18 — 2017-10-09
- 1.0.17 — 2017-04-20
- 1.0.16 — 2017-04-13
- 1.0.15 — 2016-04-03
- 1.0.14 — 2015-08-08
- 1.0.13 — 2015-08-07
- 1.0.12 — 2015-06-14
- 1.0.11 — 2015-05-16
- 1.0.10 — 2015-05-09
- 1.0.9 — 2015-05-09
- 1.0.8 — 2015-04-04
- … 7 more at https://npm.io/package/spider-detector/versions

## README

# spider-detector

[![Build Status](https://travis-ci.org/binarykitchen/spider-detector.svg?branch=master)](https://travis-ci.org/binarykitchen/spider-detector) [![npm version](https://badge.fury.io/js/spider-detector.svg)](https://badge.fury.io/js/spider-detector)

A tiny node module to detect spiders/crawlers quickly and comes with optional middleware for ExpressJS

It might be useful when you have a single page app but want to deliver static pages for spiders.

## Install

```
npm install spider-detector // or `yarn install spider-detector`
```

## Direct Example

```js
const detector = require('spider-detector')
detector.isSpider('baiduspider') // return true
```

## ExpressJS example

```js
const detector = require('spider-detector')
const express = require('express')
const app = express()

app.use(detector.middleware())

app.get('/*', function(req, res) {
  if (req.isSpider()) {
    // do something else, i.E. send a static page
  } else {
    // send single page app
  }
})
```

## Why? There are already modules out there

Well, I wanted one which does not use `readFileSync` and comes with optional middleware. Furthermore some hackers do not classify Googlebot as a spider anymore which poses a problem sometimes, see next question.

## What about Googlebot?

Yep, Googlebot is able to deal with single page apps but this feature is pretty unstable. Especially under AngularJS when hash fragments are disabled with `$locationProvider.html5Mode(true)`. That's why - against all odds - I have classified `googlebot` as a spider in this module.

---
_Source: https://npm.io/package/spider-detector · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
