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:
- Chrome ist auf dem Rechner des Benutzers geöffnet.
- 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/.
- Häufige Seiten:
- Chrome Remote Debugging ist für die aktuelle Browserinstanz erlaubt.
- Bitten Sie den Benutzer,
chrome://inspect/#remote-debuggingzu öffnen. - Sie müssen "Allow remote debugging for this browser instance" aktivieren.
- Bitten Sie den Benutzer,
- Die Umgebung kann Node.js 22+ ausführen.
- Versuchen Sie
node --version. - Wenn
nodeunter Codex Desktop nicht im PATH ist, versuchen Sie%LOCALAPPDATA%\OpenAI\Codex\bin\node.exe.
- Versuchen Sie
- 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.
- Typischer Claude Code-Pfad:
- 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.
| Endpunkt | Methode | Zweck |
|---|---|---|
/health | GET | Proxy-Integrität und Chrome-Verbindungsstatus |
/targets | GET | Offene Chrome-Tabs auflisten |
/new?url=... | GET | Neuen Hintergrund-Tab erstellen |
/navigate?target=...&url=... | GET | Existierenden Tab navigieren |
/close?target=... | GET | Tab schließen |
/info?target=... | GET | Seitentitel, URL und readyState abrufen |
/eval?target=... | POST body=JS | JavaScript in einem Tab ausführen und { value: ... } zurückgeben |
/clickAt?target=... | POST body=CSS selector | Auf 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.
- 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>
- Öffnen Sie Summon-URLs über
scripts/cdp_open_url.mjsoder kodieren Sie die verschachtelte URL vollständig, wenn Sie den CDP-Proxy aufrufen. Summon verwendet#!; wenn das#-Fragment entfernt wird, öffnet Chrome möglicherweiseabout:blankoder die falsche Seite. - Lesen Sie die Ergebnis-Seite mit
/eval. - Extrahieren Sie Links, deren sichtbarer Text oder
aria-labelist:PDF在线全文Full TextView PDF- verlagsspezifische Volltexteinträge.
- Bevorzugen Sie den
PDF-Link des Ergebnisses, falls vorhanden. - Öffnen Sie den PDF-Link in einem neuen Hintergrund-Tab über den CDP-Proxy.
- Wenn der Verlag eine Sicherheitsherausforderung zeigt, bitten Sie den Benutzer, diese manuell zu erledigen.
- 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:
- Überspringen Sie leere
href-Werte. Die erste Online-Volltext-Übereinstimmung kann ein Facetten-Umschalter und kein echter Link sein. - 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.
- Wenn Summon zu
login.serialssolutions.com/sso/loginweiterleitet und sagt, dass die IP außerhalb des autorisierten Bereichs liegt, notieren Sieip_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. - Wenn Summon kein PDF, aber einen Online-Volltext-Link hat, folgen Sie diesem Weg, bevor Sie manuell eine Verleger-URL konstruieren.
- Wenn die Seite konsequent
ERR_EMPTY_RESPONSEzeigt oder nach einer frischen Navigation und den normalen SPA-Wartezeiten nicht rendert, notieren Siesummon_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:
- Bevorzugen Sie ZJU Summon / WebVPN / Bibliotheks-
在线全文-Links vor direkterdoi.org -> Verleger-Navigation. - Verarbeiten Sie ScienceDirect und andere sensible Verleger einzeln.
- Führen Sie einen sichtbaren Prüfpfad im Manifest; öffnen Sie nicht viele Verleger-Tabs parallel.
- Warten Sie, bis jede Seite geladen ist, bevor Sie nach
Download PDF,View PDFoderPDFsuchen. - Wiederverwenden Sie denselben Tab, nachdem der Benutzer einen Verifikationsschritt abgeschlossen hat, anstatt wiederholt neue Tabs zu öffnen.
- Vermeiden Sie Wiederholungsschleifen. Ein fehlgeschlagener automatischer Versuch ist ausreichend, bevor die Seite an den Benutzer übergeben wird.
Wenn eine Verleger-Verifikationsseite erscheint:
- Stoppen Sie automatisierte Aktionen auf diesem Tab.
- Notieren Sie das Papier in
publisher_verification.tsvoder dem Hauptmanifest mit Statuspublisher_verification_waiting_user; verwenden Siesciencedirect_robot_checkfür ScienceDirects "Sind Sie ein Roboter?"-Seite. - Teilen Sie dem Benutzer mit, welches Papier und welcher Tab manuelle Aufmerksamkeit benötigen.
- Klicken Sie nicht automatisch auf CAPTCHA, Cloudflare, "Sind Sie ein Roboter?", Bot-Prüfungen oder ähnliche Herausforderungssteuerungen.
- Nachdem der Benutzer sagt, dass die Verifikation abgeschlossen ist, setzen Sie den Workflow mit demselben Tab und demselben Status als
retry_after_user_verificationfort.