Communitygithub.com

ZJU Literatur-Downloader

Diese Fähigkeit nutzt die legitimierte Anmeldung des Benutzers in der Zhejiang University Library, WebVPN, CAS SSO, Summon, ScienceDirect, Verlagssitzungen oder Chrome, um akademische PDFs und begleitende Materialien legal zu suchen, herunterzuladen, zu organisieren, erneut zu versuchen und zu lesen. Sie wird auf Anfragen wie „Mit ZJU-Bibliothek herunterladen“, „WebVPN PDF herunterladen“, „Wiederholung nach CAS-Fehler“, „ScienceDirect nach Bot-Prüfung fortsetzen“, „Automatisch Zusatzmaterialien herunterladen“, „Volltext und unterstützende Informationen lesen“, „Literatur in Projektordner sortieren“ oder „Nach Zotero-Import Volltext lesen“ aktiviert.

Was ist ZJU Literatur-Downloader?

Diese Fähigkeit ermöglicht es einem KI-Agenten, den authentifizierten Workflow eines Benutzers mit der Zhejiang University (ZJU) Bibliothek zu nutzen, um akademische Literatur legal herunterzuladen. Sie ist für Plattformen wie Claude Code, Cursor oder Codex konzipiert und verwendet Chrome Remote Debugging sowie einen CDP-Proxy, um mit der bereits angemeldeten Chrome-Sitzung des Benutzers zu interagieren. Der Agent durchsucht bevorzugt den ZJU Summon-Dienst, extrahiert PDF- und Volltextlinks und öffnet sie in Hintergrund-Tabs. Der Download erfolgt aus dem authentifizierten Browserkontext, um Paywalls, CAPTCHAs und Bot-Prüfungen zu vermeiden. Die Fähigkeit klassifiziert jeden Download-Status in klare Kategorien wie „heruntergeladen“, „CAS wartet auf Benutzer“ oder „Verlegerüberprüfung erforderlich“, um einen nachvollziehbaren Prüfpfad zu gewährleisten. Enthalten sind spezifische Muster für große Verlage wie ACS, Wiley, Springer Nature und ScienceDirect mit DOI-basierten URL-Vorlagen und Strategien zur Fehlerbehandlung wie IP-nicht-autorisiert oder Summon-Überprüfungen. Die Batch-Größe ist beschränkt, um Massen-Downloads zu vermeiden. Benutzerdaten wie Passwörter oder Sitzungstokens werden weder eingegeben noch exportiert.

Funktioniert mit✓Claude Code✓Codex CLI~Cursor
npx skills add baihe26/zju-literature-downloader

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht ZJU Literatur-Downloader?

Diese Fähigkeit wandelt den verifizierten Workflow in einen wiederholbaren, rechtlich begrenzten Prozess zum Finden, Herunterladen und Lesen von Papieren über den Zugang des Benutzers zur Zhejiang University Library / WebVPN.

Grenzen

Verwenden Sie nur den legitimen institutionellen Zugang des Benutzers. Umgehen Sie keine Paywalls, DRM, CAPTCHA, Cloudflare, Verleger-Bot-Prüfungen oder Zwei-Faktor-Authentifizierung. Wenn eine Seite nach CAPTCHA, QR-Login, SMS/OTP, Cloudflare, Verleger-Bot-Prüfungen oder einer Sicherheitsherausforderung fragt, stoppen Sie und bitten Sie den Benutzer, diese in Chrome zu erledigen.

Vermeiden Sie Massen-Downloads. Arbeiten Sie in kleinen Batches, vorzugsweise nachdem der Benutzer die Papierliste bestätigt hat. Hinterlassen Sie einen klaren Prüfpfad darüber, was wo heruntergeladen wurde und ob unterstützende Informationen gefunden wurden.

Bitten Sie den Benutzer nicht, institutionelle Passwörter, CAS-Anmeldeinformationen, OTP-Codes, Wiederherstellungscodes oder Sitzungstokens in den Chat oder das Terminal einzufügen. Wenn der Benutzer ein Passwort anbietet, lehnen Sie ab und verwenden Sie stattdessen den Handoff-Login-Workflow.

Ausnahme für ZJU CAS gespeicherte Login-Seiten: Wenn der Benutzer ausdrücklich sagt, dass Chrome die ZJU CAS-Anmeldeinformationen bereits ausgefüllt hat und die Berechtigung zum Klicken des Login/Bestätigen-Buttons erteilt, darf der Agent diesen Button einmal auf der ZJU CAS/WebVPN/institutionellen SSO-Seite klicken, ohne Anmeldeinformationen zu lesen, zu kopieren oder einzugeben. Diese Ausnahme gilt nicht für CAPTCHA, QR-Login, SMS/OTP, Verleger-Bot-Prüfungen oder Seiten außerhalb des erwarteten institutionellen Login-Ablaufs.

Exportieren oder inspizieren Sie keine Cookies, Passwörter, lokalen Speicher, Browserprofile oder Sitzungsdateien. Verwenden Sie nur den bereits authentifizierten Seitenkontext des Browsers.

Voraussetzungen

Bestätigen Sie vor dem Versuch von Downloads die folgenden Bedingungen:

  1. Chrome ist auf dem Rechner des Benutzers geöffnet.
  2. Der Benutzer hat sich persönlich in Chrome bei der Zhejiang University Library / WebVPN angemeldet.
    • Häufige Seiten: https://libweb.zju.edu.cn/, https://webvpn.zju.edu.cn/, https://zju.summon.serialssolutions.com/.
  3. Chrome Remote Debugging ist für die aktuelle Browserinstanz erlaubt.
    • Bitten Sie den Benutzer, chrome://inspect/#remote-debugging zu öffnen.
    • Sie müssen "Allow remote debugging for this browser instance" aktivieren.
  4. Die Umgebung kann Node.js 22+ ausführen.
    • Versuchen Sie node --version.
    • Wenn node unter Codex Desktop nicht im PATH ist, versuchen Sie %LOCALAPPDATA%\OpenAI\Codex\bin\node.exe.
  5. Der CDP-Proxy für den Webzugriff ist verfügbar oder kann gestartet werden.
    • Typischer Claude Code-Pfad: %USERPROFILE%\.claude\skills\web-access-main\scripts\check-deps.mjs.
    • Typischer gemeinsamer Agentenpfad: %USERPROFILE%\.agents\skills\web-access-main\scripts\check-deps.mjs.
    • In Codex-Only-Setups auch prüfen: %USERPROFILE%\.codex\skills\web-access-main\scripts\check-deps.mjs.
  6. Der Benutzer hat das Ziel-Ausgabeverzeichnis genehmigt.

Wenn Claude Code meldet, dass diese Fähigkeit nicht installiert ist, installieren oder kopieren Sie sie nach:

$env:USERPROFILE\.claude\skills\zju-literature-downloader

Codex und andere Agent-Setups können stattdessen .codex\skills oder .agents\skills verwenden; behandeln Sie die drei Speicherorte als Installationsziele, nicht als verschiedene Fähigkeitsversionen.

Batch-Umfang

Kleine Batches werden unterstützt, wenn der Benutzer eine eindeutige DOI-/Titel-/PMID-Liste angibt.

Empfohlene Grenzen:

  • normaler Batch: 5-10 Papiere
  • oberer praktischer Batch: 15-20 Papiere, mit Pausen und einem Manifest
  • sofort anhalten, wenn Verleger-Prüfungen, CAPTCHA, WebVPN-Ablauf oder ungewöhnliche Download-Aufforderungen auftreten

Wandeln Sie eine breite Stichwortsuche nicht in unbegrenztes automatisches Herunterladen um. Laden Sie keine ganzen Zeitschriftenausgaben, Bände oder große Ergebnismengen herunter.

Statuskategorien

Klassifizieren Sie jedes Papier in einen dieser Status und behalten Sie den Status im Manifest:

downloaded
downloaded_with_si
si_only_downloaded
cas_waiting_user
institutional_login_waiting_user
cas_resolved_retry_needed
publisher_verification_waiting_user
sciencedirect_robot_check
retry_after_user_verification
do_not_auto_retry
url_needs_repair
summon_no_link
summon_unreachable
browser_pdf_viewer_fallback_needed
publisher_blocked_waiting_user
no_authorized_pdf_found
failed_after_retry
ip_not_authorized
purchase_required

Verwenden Sie cas_waiting_user, wenn der Browser sichtbar auf der Zhejiang University CAS / Unified Identity Authentication ist. Verwenden Sie institutional_login_waiting_user, wenn das Papier noch bei einem Institutionenselektor, CARSI/Shibboleth/OpenAthens-Handoff oder einem ähnlichen SSO-Schritt vor CAS ist. Beide sind nicht endgültige Zustände; behalten Sie cas_waiting_user für abwärtskompatible Manifeste.

Verwenden Sie si_only_downloaded, wenn eine oder mehrere offizielle Supporting-Information-Dateien verifiziert wurden, der Hauptartikel-PDF jedoch über den autorisierten Zugang des Benutzers nicht verfügbar bleibt. Bezeichnen Sie dies nicht als downloaded.

Verwenden Sie summon_unreachable, wenn die Summon-SPA wiederholt ERR_EMPTY_RESPONSE zurückgibt oder nach einem einzigen frischen Wiederholungsversuch nicht geladen werden kann. Verwenden Sie browser_pdf_viewer_fallback_needed, wenn Chrome das PDF sichtbar anzeigt, aber fetch() im Browserkontext seine Bytes nicht abrufen kann. Keiner dieser Status bedeutet, dass das Papier nicht verfügbar ist; beide spezifizieren den nächsten legitimen Fallback.

Verwenden Sie publisher_verification_waiting_user oder sciencedirect_robot_check, wenn eine Verlegerseite "Sind Sie ein Roboter?", CAPTCHA, Cloudflare, Bot-Verifikation oder eine andere Anti-Automatisierungs-Herausforderung zeigt. Behandeln Sie dies nicht als endgültigen Fehler, aber versuchen Sie nicht, es automatisch zu lösen.

Chrome-Steuerung starten

Verwenden Sie den CDP-Proxy für den Webzugriff, wenn verfügbar.

Auf Windows PowerShell:

$node = "node"
if (-not (Get-Command node -ErrorAction SilentlyContinue)) {
  $node = "$env:LOCALAPPDATA\OpenAI\Codex\bin\node.exe"
}
$checkDepsCandidates = @(
  "$env:USERPROFILE\.claude\skills\web-access-main\scripts\check-deps.mjs",
  "$env:USERPROFILE\.agents\skills\web-access-main\scripts\check-deps.mjs",
  "$env:USERPROFILE\.codex\skills\web-access-main\scripts\check-deps.mjs"
)
$checkDeps = $checkDepsCandidates | Where-Object { Test-Path $_ } | Select-Object -First 1
if (-not $checkDeps) { throw "web-access-main/scripts/check-deps.mjs not found" }
& $node $checkDeps

Dann testen:

Invoke-WebRequest -UseBasicParsing -Uri "http://127.0.0.1:3456/targets" -TimeoutSec 10

Wenn dies hängt oder fehlschlägt:

  • Bitten Sie den Benutzer, das Remote-Debugging-Kontrollkästchen zu bestätigen.
  • Überprüfen Sie %TEMP%\cdp-proxy.log.
  • Versuchen Sie nicht, Chrome-Sitzungsdateien zu lesen.

Kern-CDP-Proxy-API

Der übliche Webzugriffsproxy ist http://127.0.0.1:3456.

EndpunktMethodeZweck
/healthGETProxy-Integrität und Chrome-Verbindungsstatus
/targetsGETOffene Chrome-Tabs auflisten
/new?url=...GETNeuen Hintergrund-Tab erstellen
/navigate?target=...&url=...GETExistierenden Tab navigieren
/close?target=...GETTab schließen
/info?target=...GETSeitentitel, URL und readyState abrufen
/eval?target=...POST body=JSJavaScript in einem Tab ausführen und { value: ... } zurückgeben
/clickAt?target=...POST body=CSS selectorAuf die Mitte eines sichtbaren Elements klicken

Verwenden Sie /navigate statt /new für Summon-URLs, die #!-Fragmente enthalten. Wenn ein #!-Fragment entfernt wird, öffnet Chrome möglicherweise about:blank oder eine falsche Seite. Wenn curl nicht verfügbar ist, verwenden Sie PowerShell Invoke-WebRequest für einfache Prüfungen oder Node.js fetch() für Proxy-Aufrufe.

Empfohlener Such-Workflow

Bevorzugen Sie den Entdeckungsweg der Bibliothek vor direkten Verlegerseiten. Er ist stabiler und löst seltener Bot-Schutz aus.

  1. Suchen Sie nach DOI oder exaktem Titel im ZJU Summon:
    • https://zju.summon.serialssolutions.com/search?#!/search?pn=1&ho=t&include.ft.matches=f&l=en&q=<URL-codierte DOI oder Titel>
  2. Öffnen Sie Summon-URLs über scripts/cdp_open_url.mjs oder kodieren Sie die verschachtelte URL vollständig, wenn Sie den CDP-Proxy aufrufen. Summon verwendet #!; wenn das #-Fragment entfernt wird, öffnet Chrome möglicherweise about:blank oder die falsche Seite.
  3. Lesen Sie die Ergebnis-Seite mit /eval.
  4. Extrahieren Sie Links, deren sichtbarer Text oder aria-label ist:
    • PDF
    • 在线全文
    • Full Text
    • View PDF
    • verlagsspezifische Volltexteinträge.
  5. Bevorzugen Sie den PDF-Link des Ergebnisses, falls vorhanden.
  6. Öffnen Sie den PDF-Link in einem neuen Hintergrund-Tab über den CDP-Proxy.
  7. Wenn der Verlag eine Sicherheitsherausforderung zeigt, bitten Sie den Benutzer, diese manuell zu erledigen.
  8. Sobald das PDF in Chrome sichtbar ist, verwenden Sie scripts/browser_pdf_downloader.mjs, um es aus dem authentifizierten Browserkontext zu speichern.

Summon-Feldnotizen

Beim Extrahieren von PDF, Online-Volltext oder Verlag-Links aus Summon:

  1. Überspringen Sie leere href-Werte. Die erste Online-Volltext-Übereinstimmung kann ein Facetten-Umschalter und kein echter Link sein.
  2. Behandeln Sie Summon als langsame SPA: warten Sie etwa 6 Sekunden nach der Navigation, wiederholen Sie dann die Link-Extraktion bis zu 3 Mal mit kurzen Pausen.
  3. Wenn Summon zu login.serialssolutions.com/sso/login weiterleitet und sagt, dass die IP außerhalb des autorisierten Bereichs liegt, notieren Sie ip_not_authorized. In diesem Fall benötigt der Benutzer möglicherweise den ZJU RVPN/SSLVPN-Client, nicht nur WebVPN in einer Browser-Seite, da CDP-gesteuerte Chrome-Tabs möglicherweise weiterhin die lokale Netzwerk-IP verwenden.
  4. Wenn Summon kein PDF, aber einen Online-Volltext-Link hat, folgen Sie diesem Weg, bevor Sie manuell eine Verleger-URL konstruieren.
  5. Wenn die Seite konsequent ERR_EMPTY_RESPONSE zeigt oder nach einer frischen Navigation und den normalen SPA-Wartezeiten nicht rendert, notieren Sie summon_unreachable. Schleifen Sie nicht zu Summon: versuchen Sie einmal die DOI-Verleger-Landing-Page oder einen bestätigten OA-Weg, immer noch unter Verwendung der autorisierten Browser-Sitzung des Benutzers, wo erforderlich.

Verlagsspezifische Muster

Verwenden Sie diese als DOI-basierte Reparatur-Hinweise nur nach Bestätigung der Papieridentität. Beanspruchen Sie keinen Zugriff, wenn die Seite oder das PDF nicht tatsächlich verifiziert ist.

ACS Publications

Für DOI-Präfix 10.1021/...:

https://pubs.acs.org/doi/pdf/<doi>

ACS Supporting Information folgt oft:

https://pubs.acs.org/doi/suppl/<doi>/suppl_file/<journal-code>_si_001.pdf

Das verifizierte Beispiel 10.1021/acs.biomac.4c00102 verwendete bm4c00102_si_001.pdf.

Beginnen Sie nach Möglichkeit immer von der ACS-Artikel-Landing-Page. Eine kurze chinesische 请稍候...-Zwischenseite kann sich von selbst klären; warten Sie etwa 5-10 Sekunden und inspizieren Sie die Seite einmal, bevor Sie sie als Verleger-Herausforderung klassifizieren. Eine lesbare Abstract-Seite beweist nicht, dass das Haupt-PDF autorisiert ist: Wenn es immer noch "Available to Purchase" oder "Access through Institution" anzeigt, notieren Sie den entsprechenden institutionellen Login- oder Kauf-Status und überlassen Sie die Auswahl der Anmeldung dem Benutzer.

ACS-Supporting-Information-Links, die auf der Artikelseite angezeigt werden, können legitimerweise zu ACS Figshare / ndownloader.figstatic.com-Downloads führen, auch wenn das Haupt-PDF nicht autorisiert ist. Folgen Sie sichtbaren offiziellen Links, verifizieren Sie das resultierende SI-PDF und notieren Sie si_only_downloaded, bis auch der Hauptartikel verifiziert ist. Erraten Sie keinen Belegdateinamen über einen Artikelseiten-Link hinaus und behandeln Sie zugängliche SI nicht als Erlaubnis, das Paywall-geschützte Hauptpapier abzurufen.

Wiley

Für DOI-Präfixe wie 10.1002/... oder 10.1111/... navigieren Sie zuerst zur authentifizierten Wiley-Artikelseite, rufen Sie dann von dieser Seite aus dem eigenen Origin ab:

<location.origin>/doi/pdfdirect/<doi>?download=true

Hardcodieren Sie nicht onlinelibrary.wiley.com: Summon kann über eine Subdomain wie advanced.onlinelibrary.wiley.com authentifizieren, und Cross-Origin-Abrufe können fehlschlagen. Vermeiden Sie es auch, den Tab direkt zu pdfdirect zu navigieren, da der Browser einen Download starten und den Seitenkontext unbrauchbar machen kann. Bevorzugen Sie Seitenkontext-fetch().

Springer Nature

Für DOI-Präfixe wie 10.1007/... und 10.1186/...:

https://link.springer.com/content/pdf/<doi>.pdf

Dies funktioniert normalerweise, nachdem der institutionelle Login gelöst wurde. Verwenden Sie Browserkontext-Fetch, wenn ein direkter Shell-Download 401, 403 oder eine HTML-Login-Seite zurückgibt.

Nature Communications

Für OA-DOI-Muster wie 10.1038/s41467-..., versuchen Sie:

https://www.nature.com/articles/<article-id>.pdf

Extrahieren Sie <article-id> aus dem DOI-Suffix und verifizieren Sie dennoch den PDF-Header und -Text.

bioRxiv

Für DOI-Präfix 10.1101/..., versuchen Sie:

https://www.biorxiv.org/content/<doi>v1.full.pdf

Wenn Version 1 404 zurückgibt, versuchen Sie die Artikelseite oder eine spätere Version. Überprüfen Sie, ob der Titel übereinstimmt.

Frontiers

Für DOI-Präfix 10.3389/..., versuchen Sie:

https://www.frontiersin.org/articles/<doi>/pdf

Wenn dies fehlschlägt, öffnen Sie zuerst die Artikelseite und verwenden Sie deren sichtbaren PDF-Link.

RSC Publishing

Für DOI-Präfix 10.1039/... nehmen Sie nicht an, dass ZJU autorisierten Volltextzugriff hat. Wenn PDF-Links 404 oder Kaufseiten zurückgeben, inspizieren Sie die Artikelseite und notieren Sie no_authorized_pdf_found oder purchase_required, anstatt aggressiv erneut zu versuchen.

Verleger-Verifikation und ScienceDirect

ScienceDirect und einige Verlegerplattformen können nach wiederholter direkter DOI-Navigation oder automatisiertem Tab-Öffnen "Sind Sie ein Roboter?", CAPTCHA, Cloudflare, Bot-Verifikation oder ähnliche Prüfungen anzeigen. Diese Seiten sind Sicherheits- und Anti-Automatisierungs-Herausforderungen, keine gewöhnlichen Login-Bestätigungen.

Reduzieren Sie die Wahrscheinlichkeit, sie auszulösen, indem Sie ein konservatives Zugriffsmuster verwenden:

  1. Bevorzugen Sie ZJU Summon / WebVPN / Bibliotheks-在线全文-Links vor direkter doi.org -> Verleger-Navigation.
  2. Verarbeiten Sie ScienceDirect und andere sensible Verleger einzeln.
  3. Führen Sie einen sichtbaren Prüfpfad im Manifest; öffnen Sie nicht viele Verleger-Tabs parallel.
  4. Warten Sie, bis jede Seite geladen ist, bevor Sie nach Download PDF, View PDF oder PDF suchen.
  5. Wiederverwenden Sie denselben Tab, nachdem der Benutzer einen Verifikationsschritt abgeschlossen hat, anstatt wiederholt neue Tabs zu öffnen.
  6. Vermeiden Sie Wiederholungsschleifen. Ein fehlgeschlagener automatischer Versuch ist ausreichend, bevor die Seite an den Benutzer übergeben wird.

Wenn eine Verleger-Verifikationsseite erscheint:

  1. Stoppen Sie automatisierte Aktionen auf diesem Tab.
  2. Notieren Sie das Papier in publisher_verification.tsv oder dem Hauptmanifest mit Status publisher_verification_waiting_user; verwenden Sie sciencedirect_robot_check für ScienceDirects "Sind Sie ein Roboter?"-Seite.
  3. Teilen Sie dem Benutzer mit, welches Papier und welcher Tab manuelle Aufmerksamkeit benötigen.
  4. Klicken Sie nicht automatisch auf CAPTCHA, Cloudflare, "Sind Sie ein Roboter?", Bot-Prüfungen oder ähnliche Herausforderungssteuerungen.
  5. Nachdem der Benutzer sagt, dass die Verifikation abgeschlossen ist, setzen Sie den Workflow mit demselben Tab und demselben Status als retry_after_user_verification fort.

Verwandte Skills