Sign Up for Free

RunKit +

Try any Node.js package right in your browser

This is a playground to test code. It runs a full Node.js environment and already has all of npm’s 1,000,000+ packages pre-installed, including express-ssrer with all npm packages installed. Try it out:

var expressSsrer = require("express-ssrer")

This service is provided by RunKit and is not affiliated with npm, Inc or the package authors.

express-ssrer v2.0.6

Express middleware for ssrer.

express-ssrer

Express middleware for SSRer.

Overview

ssrer 用の express middleware で、ユーザエージェントから crawler/bot を検知し、ssrer へ転送し、結果を返却します。

SPAのSSRを使った、SEOに最適です。

ssrer support version

2.0.0以降をサポート

Features

  • [x] Bot判定
  • [x] GETのみ許可 (option)
  • [x] HTMLファイルのみ転送 拡張子判定
  • [x] レスポンス ステータス/ヘッダーをエミュレート puppeteer
  • [x] ssrer オプション フルサポート
  • [x] ssrer へのHTTPリクエストヘッダーを上書きサポート
  • [x] ssexpress-botrer オプション フルサポート

Install

NPM install

npm install --save express-ssrer

QuickStart

Demo server with ssrer server

Brower -- http:8080 -- > demo server(demo.js) -- https:3000 -- > ssrer server
                              ↑                                     ┃
                              ┃            http:8080                ┃
                              ┗━  Headless browser(puppeteer)━━━━━━ ┛
  1. Docker インストール

  2. ssrer を起動

  3. demo サーバーを起動

npm run dressup

Access url : http://localhost:8080

Settings

{
  "url": "https://localhost:3000",
  "getOnly": true, // HTTP Method GET のみ転送
  "emulateResponseStatus": true, // レスポンスステータスを、puppeteerのレスポンスにエミューレート
  "emulateResponseHeader": false, // レスポンスヘッダーを、puppeteerのレスポンスにエミューレート
  "logger": { // カスタムログ
    "debug": (...messages) => { // デバッグ出力
      console.debug(messages);
    },
    "error": (...messages) => {  // エラー出力
      console.error(messages);
    },
  },
  "ssrer": { // ssrerへのアクセスパラメーター(querystring)
      "width": 1280,
      "height": 800,
      "timeout": 5000,
      "waitUntil": "networkidle2",
      "cache": true,
      "disableRequests": false
  },
  "override": { // ssrer へのHTTPSリクエストの上書き
      "headers": {
          // SSRER Server へのアクセスする ユーザエージェントを変更可能
          "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.167 Safari/537.36",
          // SSRER Server が API認証の場合に設定
          "X-AUTH-SSRER-DEVELOPER-API-KEY": "D2CCC657YL4X",
          "X-AUTH-SSRER-DEVELOPER-API-SECRET": "DT3E2EW5NHESMTYECCUUUQL7GKB7FUVR",
          "X-AUTH-SSRER-DEVELOPER-NAME": "demo",
      }
  },
  excludeURLs: [ // SSRERのアクセスを除外するURLs
    '/exclude'
  ],
  includeExtensions: [ // SSRERのアクセスを含める拡張子
    '.xhtml'
  ],
  "expressBot": {} // express-bot 設定
}
RunKit is a free, in-browser JavaScript dev environment for prototyping Node.js code, with every npm package installed. Sign up to share your code.
Sign Up for Free