SPB Git forge
38commits 1branches 0releases
338.7 MBsize
maindefault branch
3 h agolast push
HTML 53.9% TypeScript 44.5% JavaScript 0.6% SQL 0.5%
3.1 KB · 63 lines yaml
Raw Blame History
1# Equinix — IBX data center pages + global press-release feed2id: equinix3name: Equinix4domain: www.equinix.com5kind: operator6mode: hybrid7priority: 18license: "Publicly accessible operator pages; factual data only; © Equinix, Inc."9attribution: "Equinix"10homepage: https://www.equinix.com/data-centers11notes: >12  www.equinix.com is behind Akamai: the bot user-agent gets HTTP 403, a browser identity (level 2, still direct HTTP)13  is served normally. Level 1 is kept as the start so the runtime escalates only when blocked; Scrapfly (L4) is the14  last resort and is not reached for IBX pages (0 credits in dry runs). Per-IBX pages publish address + coordinates +15  colocation space + certifications, but no MW figure — none is invented.16  NEWSROOM DISABLED (2026-09-11): press releases live on newsroom.equinix.com (RSS17  https://newsroom.equinix.com/press-releases-global?pagetemplate=rss, URLs /YYYY-MM-DD-<slug>). Those pages are18  served normally (HTTP 200, ~20 KB text) but embed Cloudflare's "/cdn-cgi/challenge-platform/" beacon, which the19  shared looksBlockedOrEmpty() heuristic treats as a bot wall → every article escalated to Scrapfly (30 credits each,20  120 credits in the first dry run). Until the heuristic is tightened (only treat the marker as blocked on short21  pages), the feed is left out rather than burning premium credits on open pages.22coverage: { global: true, operators: ["Equinix"] }23fetch:24  level: 125  maxLevel: 426  rpm: 2027  concurrency: 228  respectRobots: true29  maxCreditsPerRun: 6030  maxCreditsPerDay: 120   # premium credits per UTC day for this connector (all runs, all workers)31discovery:32  sitemap: ["/sitemap-core.xml"]33  rss: ["https://newsroom.equinix.com/press-releases-global?pagetemplate=rss"]   # fetcher heuristic fixed 2026-09-11: challenge-platform beacon on content-rich pages no longer escalates34  include:35    - "^https://www\\.equinix\\.com/data-centers/"36    - "^https://newsroom\\.equinix\\.com/"37  exclude:38    - "\\?"39    - "/data-centers/(colocation|design|data-center-excellence|services|solutions)"40  classify:41    - { pattern: "/data-centers/[a-z-]+-colocation/[a-z-]+-colocation/[a-z0-9-]+-data-centers/[a-z]{2,3}\\d{1,2}[a-z]?$", group: facility_pages, pageType: facility_page, priority: 60 }42    - { pattern: "/data-centers/[a-z-]+-colocation/[a-z-]+-colocation/[a-z0-9-]+-data-centers$", group: index, pageType: facility_index, priority: 20 }43    - { pattern: "/data-centers/[a-z-]+-colocation(/[a-z-]+-colocation)?$", group: index, pageType: facility_index, priority: 10 }44    - { pattern: "/data-centers/", group: index, pageType: facility_index, priority: 5 }45  maxUrlsPerRun: 200046schedule:47  facility_pages: weekly48  newsroom: daily49  index: monthly50  sitemap: weekly51  rss: daily52extractors:53  facility:54    # selected by URL only: classifyPage() may mislabel deep facility URLs (e.g. "closure"), the URL is authoritative55    match: ["/data-centers/[a-z-]+-colocation/[a-z-]+-colocation/[a-z0-9-]+-data-centers/[a-z]{2,3}\\d{1,2}[a-z]?$"]56    kind: facility57    parser: equinix_facility_v158defaults:59  operatorName: Equinix60  operatorKind: colocation61  facilityType: colocation62parserVersion: v163