Improve citation extraction, reflist targeting, and URL rule matching in eswiki, frwiki, jawiki, enwiki
Fix Spanish Wikipedia citation parsing for references where the visible citation is rendered outside an empty <cite> marker, preserving the original <cite> for source-type detection while selecting the rendered citation node for icon placement when needed. Subcitation lookup is now scoped to the current <cite>’s sibling segment, with fallback to the full reference text only when that match is unambiguous, preventing later subcitations from inheriting the first subcitation’s URL or classification.
Improve reflist and dashboard discovery by supporting MediaWiki/Parsoid reference lists such as ol.mw-references and ol[typeof="mw:Extension/references"], preserving wrapper-level containers such as div.reflist and div.refbegin, and deriving each citation’s owning reflist via closest() so dashboards attach to the correct list across wiki-specific structures, including Japanese Wikipedia reflist wrappers. Citation ownership is also resolved through the top-level li[id^="cite_note-"] note container so nested citation lists and wrapper text are not treated as separate sources.
Fix French Wikipedia citation targeting by recognizing citations wrapped as <a class="external"><cite>...</cite></a> and citations where <cite> contains only the title inside an outer .ouvrage; icons are now inserted at the full citation wrapper instead of inside the title or link. The plain-link <li> fallback also skips references already handled through parsed <cite> markup to avoid duplicated icon containers.
Always collect external links from the rendered citation DOM, even when COinS metadata is present, and merge those URLs into rft_id instead of treating DOM extraction as a last-resort fallback. This preserves COinS metadata while capturing additional rendered links, extends plain-link handling to multiple external links, and chooses a stable primary URL for suggestion workflows when a citation has multiple rft_id values.
Add support for the exclude rule parameter as a whitelist for broad url and url_str matches: whitespace-separated entries are interpreted as excluded subdomains or excluded URL substrings for that rule, and are honored both during per-citation matching and during rule prefiltering. The generic rule matcher now also treats exclude as a control field rather than an unknown match key.