Skip to content

[Bug] Springer 全文抓取静默失败:institutional-login 404 + 登录按钮文案不匹配 + 误抓补充材料(ESM)冒充正文 #15

Description

@lwz20210407

概述 / Summary

在配置了机构(南京理工大学 / CARSI)的情况下,Springer Nature 付费正文全部无法抓取:CLI 报告 success / verified_match=True,但实际落盘的是免费的补充材料(Supplementary / ESM),不是正文。排查后定位到 3 个相互独立的问题(1 个死链、1 个文案不匹配、1 个 PDF 选链逻辑缺陷)。开放获取的 Elsevier(JMRT) 与 MDPI 正常,说明问题特定于 Springer 授权路径。

Even after a successful institutional (CARSI) login, every Springer Nature paywalled full text fails: the CLI reports success / verified_match=True, but the file actually saved is the free Supplementary Material (ESM), not the article. Root-caused to 3 independent issues below. Elsevier(JMRT) and MDPI open-access downloads work fine, so this is Springer-specific.

环境 / Environment

  • instsci 0.1.1
  • cloakbrowser 0.3.31
  • Python 3.11.15, Windows 11
  • 机构 / Institution: Nanjing University of Science and Technology(CARSI,carsi_idp_name 已配置)

复现用 DOI / DOIs to reproduce

  • 10.1007/s11837-026-08536-7 (JOM)
  • 10.1007/s10853-026-13266-x (J. Mater. Sci.)
instsci papers dois.txt --publisher springer \
  --institution "Nanjing University of Science and Technology" \
  --output ./runs/springer --carsi-portal-preauth --retry

Bug 1 — carsi-login --publisher springer 打开的是 404 死链

instsci/data/publisher_carsi.json 里 springer 的 login_url 已失效:

"springer": { "login_url": "https://link.springer.com/institutional-login", ... }

验证:

$ curl -s -o /dev/null -w "%{http_code}" -L "https://link.springer.com/institutional-login"
404

CLI 日志:

instsci.carsi: Browser URL: https://link.springer.com/institutional-login
  Login timed out after 5 minutes.
Federated login failed.

浏览器停在 Springer 的 “Page not found — Sorry, the page you requested is unavailable.”,机构登录流程根本无法开始。

建议:Springer 现已取消该独立入口,机构登录改为在文章页点 “Log in via an institution”,或走 WAYF(https://wayf.springernature.com/...)。建议把 login_url 改为文章页 + 点击机构登录按钮的流程,或直接指向当前 WAYF 端点。


Bug 2 — 机构登录按钮文案已改成 “Log in via an institution”,与内置 marker 不匹配

instsci/publisher_profiles.pySPRINGER_PROFILE

sso_text_markers=(
    "institutional login",
    "log in through your institution",
    "access through your institution",
    "openathens",
),

而 SpringerLink 当前文章页(付费)右侧 “Access this article” 卡片里的按钮文案是 “Log in via an institution”(见附图),上述任何 marker 都不是它的子串,导致自动流程点不到这个按钮 → 无法进入机构登录 → 拿不到授权。data/publisher_carsi.json 里的 search_selectorinput#institution ...)在新版 WAYF 页面同样可能失效。

建议:把 "log in via an institution" 加入 sso_text_markers,并按当前 WAYF 页面更新 search_selector / result_selector


Bug 3 —(最关键)抓到免费补充材料(ESM)冒充正文,且被误判为 verified

即便手动完成机构登录、文章页显示已获授权,papers / publisher-batch 落盘的仍是补充材料:

  • DOI 10.1007/s11837-026-08536-7 落盘文件 7 页、1,248,192 字节,首页文本为:

    Supplementary Material for: Deformation behavior and constitutive model modification with friction correction of TC4 Titanium alloy during hot compression

  • 无 Abstract、无 References —— 明显不是正文(正文含 Abstract/Introduction/.../References)。
  • manifest.csv 记为 status=success, verified_match=True。补充材料里含标题/DOI 文本,骗过了校验。

推测原因:SPRINGER_PROFILE 的 PDF 选链偏好命中了页面上的免费 ESM download 链接,而未优先走授权的
https://link.springer.com/content/pdf/{doi}.pdf(付费正文)。

建议

  1. 正文优先严格使用 content/pdf/{doi}.pdf,仅当其被授权返回(非 HTML 付费墙)时才算成功;
  2. 校验环节增加“非补充材料”判定:命中首页/文件名含 Supplementary Material forESMMOESM/MediaObjects/ 等应判 unverified,不得记 success
  3. verified_match 不应仅凭标题/DOI 文本命中,应结合正文结构(Abstract/References/页数)判断。

影响 / Impact

Springer Nature 一整个 provider 在付费场景下静默失败(返回补充材料且标 success),使用者若不逐页核对会误以为拿到了正文。建议至少先修 Bug 3 的误判(宁可报 unverified 也不要假 success)。

(附:文章页 “Access this article → Log in via an institution” 按钮截图见评论。)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions