{
  "test": "traps",
  "title": "Crawler traps",
  "data_version": "1.0.0",
  "seed": 20261102,
  "page": "/crawl/traps/",
  "needs": "HTTP only",
  "difficulty": "Hard",
  "what_it_tests": "Twelve articles, a session ID that mints ten new URLs on every page, and a calendar whose next link never runs out.",
  "expect": {
    "articles": 12,
    "start_url": "/crawl/traps/",
    "article_url_pattern": "/crawl/traps/a/<slug>/",
    "traps": {
      "session_ids": {
        "parameter": "sid",
        "links_per_page": 10,
        "url_pattern": "<path>?sid=<16 hex digits>",
        "behaviour": "The test page and every article link to ten copies of themselves with a sid parameter. Each copy links to ten more, for ever. The content is identical and rel=canonical names the clean path.",
        "expect": "Drop the sid parameter, or obey rel=canonical. None of these URLs is a new record."
      },
      "calendar": {
        "start": "/crawl/traps/calendar/2026/11/",
        "url_pattern": "/crawl/traps/calendar/YYYY/MM/",
        "months": 119988,
        "behaviour": "Every month has a previous and a next link and no events. Outside 0001/01 to 9999/12 the address is a 404.",
        "expect": "Stop following prev and next. Nothing in the calendar is a record."
      }
    },
    "good_crawler": {
      "records": 12,
      "requests_at_most": 30,
      "note": "The test page, twelve articles and a few calendar months is about twenty requests."
    }
  },
  "records": [
    {
      "url": "/crawl/traps/a/why-your-kettle-scales-up-faster-in-a-hard-water-town/",
      "title": "Why your kettle scales up faster in a hard-water town",
      "author": "Hal Brennick",
      "words": 1179
    },
    {
      "url": "/crawl/traps/a/three-ways-to-stop-a-desk-lamp-from-wobbling/",
      "title": "Three ways to stop a desk lamp from wobbling",
      "author": "Isla Corran",
      "words": 608
    },
    {
      "url": "/crawl/traps/a/sharpening-a-bread-knife-without-ruining-the-serrations/",
      "title": "Sharpening a bread knife without ruining the serrations",
      "author": "Jory Fenn",
      "words": 734
    },
    {
      "url": "/crawl/traps/a/what-a-tent-s-hydrostatic-head-rating-tells-you/",
      "title": "What a tent's hydrostatic head rating tells you",
      "author": "Kit Ollerton",
      "words": 1292
    },
    {
      "url": "/crawl/traps/a/choosing-a-planter-that-won-t-drown-the-roots/",
      "title": "Choosing a planter that won't drown the roots",
      "author": "Hal Brennick",
      "words": 1218
    },
    {
      "url": "/crawl/traps/a/how-loud-is-a-quiet-extractor-really/",
      "title": "How loud is a quiet extractor, really?",
      "author": "Isla Corran",
      "words": 976
    },
    {
      "url": "/crawl/traps/a/storing-records-upright-and-why-it-matters/",
      "title": "Storing records upright, and why it matters",
      "author": "Jory Fenn",
      "words": 1215
    },
    {
      "url": "/crawl/traps/a/a-week-with-a-standing-desk-the-honest-notes/",
      "title": "A week with a standing desk: the honest notes",
      "author": "Kit Ollerton",
      "words": 1357
    },
    {
      "url": "/crawl/traps/a/repairing-a-frayed-towel-hem-in-ten-minutes/",
      "title": "Repairing a frayed towel hem in ten minutes",
      "author": "Hal Brennick",
      "words": 858
    },
    {
      "url": "/crawl/traps/a/picking-a-jigsaw-size-for-a-long-weekend/",
      "title": "Picking a jigsaw size for a long weekend",
      "author": "Isla Corran",
      "words": 939
    },
    {
      "url": "/crawl/traps/a/the-case-for-a-heavier-frying-pan/",
      "title": "The case for a heavier frying pan",
      "author": "Jory Fenn",
      "words": 1297
    },
    {
      "url": "/crawl/traps/a/camp-stove-fuel-compared-on-a-cold-morning/",
      "title": "Camp stove fuel, compared on a cold morning",
      "author": "Kit Ollerton",
      "words": 901
    }
  ]
}
