ZJU Literature Downloader
Esta habilidad convierte el flujo de trabajo verificado en un proceso repetible y legal para encontrar, descargar y leer artículos a través del acceso a la Biblioteca de la Universidad de Zhejiang / WebVPN del usuario.
Límites
Utilice exclusivamente el acceso institucional legítimo del usuario. No eluda paywalls, DRM, CAPTCHA, Cloudflare, comprobaciones de bots de editoriales ni la autenticación de dos factores. Si una página solicita CAPTCHA, inicio de sesión QR, SMS/OTP, Cloudflare, comprobaciones de bots de editoriales o un desafío de seguridad, deténgase y pida al usuario que lo complete en Chrome.
Evite descargas masivas. Trabaje en lotes pequeños, preferiblemente después de que el usuario confirme la lista de artículos. Deje un rastro de auditoría claro de lo que se descargó, de dónde y si se encontró información complementaria.
No pida al usuario que pegue contraseñas institucionales, credenciales CAS, códigos OTP, códigos de recuperación ni tokens de sesión en el chat o terminal. Si el usuario ofrece una contraseña, rechácela y utilice el flujo de trabajo de inicio de sesión delegado en su lugar.
Excepción para páginas de inicio de sesión guardado de ZJU CAS: si el usuario indica explícitamente que Chrome ya ha rellenado las credenciales de ZJU CAS y autoriza hacer clic en el botón de inicio de sesión/confirmación, el agente puede hacer clic en ese botón una vez en la página ZJU CAS/WebVPN/institucional SSO sin leer, copiar ni escribir ninguna credencial. Esta excepción no se aplica a CAPTCHA, inicio de sesión QR, SMS/OTP, comprobaciones de bots de editoriales ni a ninguna página fuera del flujo de inicio de sesión institucional esperado.
No inspeccione ni exporte cookies, contraseñas, almacenamiento local, perfiles de navegador ni archivos de sesión. Utilice únicamente el contexto de página ya autenticada del navegador.
Precondiciones
Antes de intentar descargas, confirme estas condiciones:
- Chrome está abierto en la máquina del usuario.
- El usuario ha iniciado sesión personalmente en la Biblioteca de la Universidad de Zhejiang / WebVPN en Chrome.
- Páginas comunes:
https://libweb.zju.edu.cn/,https://webvpn.zju.edu.cn/,https://zju.summon.serialssolutions.com/.
- Páginas comunes:
- La depuración remota de Chrome está permitida para la instancia actual del navegador.
- Pida al usuario que abra
chrome://inspect/#remote-debugging. - Debe activar
Permitir depuración remota para esta instancia del navegador.
- Pida al usuario que abra
- El entorno puede ejecutar Node.js 22+.
- Intente
node --version. - Si
nodeno está en PATH en Codex Desktop, intente%LOCALAPPDATA%\OpenAI\Codex\bin\node.exe.
- Intente
- El proxy CDP de acceso web está disponible o se puede iniciar.
- Ruta típica de Claude Code:
%USERPROFILE%\.claude\skills\web-access-main\scripts\check-deps.mjs. - Ruta típica de agente compartido:
%USERPROFILE%\.agents\skills\web-access-main\scripts\check-deps.mjs. - En configuraciones solo de Codex, verifique también
%USERPROFILE%\.codex\skills\web-access-main\scripts\check-deps.mjs.
- Ruta típica de Claude Code:
- El usuario ha aprobado la carpeta de salida objetivo.
Si Claude Code indica que esta habilidad no está instalada, instálela o cópiela en:
$env:USERPROFILE\.claude\skills\zju-literature-downloader
Codex y otras configuraciones de agente pueden usar .codex\skills o .agents\skills; trate las tres ubicaciones como objetivos de instalación, no como versiones diferentes de la habilidad.
Alcance del Lote
Se admiten lotes pequeños cuando el usuario proporciona una lista definitiva de DOI/título/PMID.
Límites recomendados:
- lote normal: 5-10 artículos
- lote práctico superior: 15-20 artículos, con pausas y un manifiesto
- deténgase inmediatamente si aparecen comprobaciones de editoriales, CAPTCHA, caducidad de WebVPN o avisos de descarga inusuales
No convierta una búsqueda amplia por palabra clave en una descarga automática ilimitada. No descargue números completos de revistas, volúmenes ni conjuntos de resultados grandes.
Categorías de Estado
Clasifique cada artículo en uno de estos estados y mantenga el estado en el manifiesto:
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
Use cas_waiting_user cuando el navegador esté visiblemente en el CAS / autenticación unificada de identidad de la Universidad de Zhejiang. Use institutional_login_waiting_user cuando el artículo aún esté en un selector de institución, paso CARSI/Shibboleth/OpenAthens o SSO equivalente antes de CAS. Ambos son estados no finales; mantenga cas_waiting_user para manifiestos compatibles con versiones anteriores.
Use si_only_downloaded cuando uno o más archivos oficiales de información complementaria se hayan verificado pero el PDF del artículo principal siga sin estar disponible a través del acceso autorizado del usuario. No llame a esto downloaded.
Use summon_unreachable cuando el SPA de Summon devuelva repetidamente ERR_EMPTY_RESPONSE o no pueda cargarse después de un reintento simple. Use browser_pdf_viewer_fallback_needed cuando Chrome muestre visiblemente el PDF pero fetch() del contexto del navegador no pueda recuperar sus bytes. Ninguno de estos estados significa que el artículo no esté disponible; ambos especifican la alternativa legítima siguiente.
Use publisher_verification_waiting_user o sciencedirect_robot_check cuando una página de editorial muestre "¿Eres un robot?", CAPTCHA, Cloudflare, verificación de bot u otro desafío antiautomatización. No trate esto como un fallo final, pero no intente resolverlo automáticamente.
Iniciar Control de Chrome
Use el proxy CDP de acceso web cuando esté disponible.
En 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 no encontrado" }
& $node $checkDeps
Luego pruebe:
Invoke-WebRequest -UseBasicParsing -Uri "http://127.0.0.1:3456/targets" -TimeoutSec 10
Si esto se cuelga o falla:
- Pida al usuario que confirme la casilla de depuración remota.
- Verifique
%TEMP%\cdp-proxy.log. - No intente leer archivos de sesión de Chrome.
API Principal del Proxy CDP
El proxy de acceso web habitual es http://127.0.0.1:3456.
| Endpoint | Método | Propósito |
|---|---|---|
/health | GET | Estado del proxy y conexión con Chrome |
/targets | GET | Listar pestañas abiertas de Chrome |
/new?url=... | GET | Crear una nueva pestaña en segundo plano |
/navigate?target=...&url=... | GET | Navegar en una pestaña existente |
/close?target=... | GET | Cerrar una pestaña |
/info?target=... | GET | Obtener título, URL y readyState de la página |
/eval?target=... | POST body=JS | Ejecutar JavaScript en una pestaña y devolver { value: ... } |
/clickAt?target=... | POST body=selector CSS | Hacer clic en el centro de un elemento visible |
Use /navigate en lugar de /new para URLs de Summon que contengan fragmentos #!. Si se elimina un fragmento #!, Chrome puede abrir about:blank o una página incorrecta. Si curl no está disponible, use Invoke-WebRequest de PowerShell para comprobaciones simples o fetch() de Node.js para llamadas al proxy.
Flujo de Búsqueda Recomendado
Prefiera la ruta de descubrimiento de la biblioteca antes que las páginas de editorial directas. Es más estable y tiene menos probabilidades de desencadenar protección antibot.
- Busque por DOI o título exacto en ZJU Summon:
https://zju.summon.serialssolutions.com/search?#!/search?pn=1&ho=t&include.ft.matches=f&l=en&q=<DOI o título codificado en URL>
- Abra las URLs de Summon a través de
scripts/cdp_open_url.mjso, de lo contrario, codifique completamente la URL anidada al llamar al proxy CDP. Summon usa#!; si el fragmento#se elimina, Chrome puede abrirabout:blanko la página incorrecta. - Lea la página de resultados con
/eval. - Extraiga enlaces cuyo texto visible o
aria-labelsea:PDF在线全文Full TextView PDF- entradas de texto completo específicas de la editorial.
- Prefiera el enlace
PDFdel resultado cuando esté presente. - Abra el enlace PDF en una nueva pestaña en segundo plano a través del proxy CDP.
- Si la editorial muestra un desafío de seguridad, pida al usuario que lo complete manualmente.
- Una vez que el PDF sea visible en Chrome, use
scripts/browser_pdf_downloader.mjspara guardarlo desde el contexto autenticado del navegador.
Notas de Campo de Summon
Al extraer PDF, texto completo en línea o enlaces de editorial de Summon:
- Omita valores
hrefvacíos. La primera coincidencia de texto completo en línea puede ser un conmutador de faceta en lugar de un enlace real. - Trate a Summon como un SPA lento: espere unos 6 segundos después de la navegación, luego reintente la extracción de enlaces hasta 3 veces con pausas cortas.
- Si Summon redirige a
login.serialssolutions.com/sso/logine indica que la IP está fuera del rango autorizado, registreip_not_authorized. En ese caso, el usuario puede necesitar el cliente ZJU RVPN/SSLVPN, no solo WebVPN en una página del navegador, porque las pestañas de Chrome controladas por CDP pueden seguir usando la IP de la red local. - Si Summon no tiene PDF pero tiene un enlace de texto completo en línea, siga esa ruta antes de construir una URL de editorial manualmente.
- Si la página muestra consistentemente
ERR_EMPTY_RESPONSEo no se renderiza después de una navegación nueva y las esperas normales del SPA, registresummon_unreachable. No haga bucles en Summon: intente la página de aterrizaje de la editorial del DOI o una ruta OA confirmada una vez, aún usando la sesión de navegador autorizada del usuario cuando sea necesario.
Patrones Específicos de Editoriales
Utilícelos como sugerencias de reparación basadas en DOI solo después de confirmar la identidad del artículo. No reivindique acceso si la página o el PDF no están realmente verificados.
ACS Publications
Para el prefijo DOI 10.1021/...:
https://pubs.acs.org/doi/pdf/<doi>
La información complementaria de ACS a menudo sigue:
https://pubs.acs.org/doi/suppl/<doi>/suppl_file/<código-revista>_si_001.pdf
El ejemplo verificado 10.1021/acs.biomac.4c00102 usó bm4c00102_si_001.pdf.
Comience desde la página de aterrizaje del artículo de ACS siempre que sea posible. Un breve mensaje chino 请稍候... puede desaparecer por sí solo; espere unos 5-10 segundos e inspeccione la página una vez antes de clasificarla como un desafío de editorial. Una página de resumen legible no prueba que el PDF principal esté autorizado: si todavía muestra Available to Purchase o Access through Institution, registre el estado de inicio de sesión institucional o compra correspondiente y deje cualquier selección de inicio de sesión al usuario.
Los enlaces de información complementaria de ACS que se muestran en la página del artículo pueden llevar legítimamente a descargas de ACS Figshare / ndownloader.figstatic.com incluso cuando el PDF principal no está autorizado. Siga los enlaces oficiales visibles, verifique el SI PDF resultante y registre si_only_downloaded hasta que el artículo principal también esté verificado. No adivine un nombre de archivo de suplemento más allá de un enlace de la página del artículo, y no trate un SI accesible como permiso para recuperar el artículo principal con paywall.
Wiley
Para prefijos DOI como 10.1002/... o 10.1111/..., primero navegue a la página de artículo autenticada de Wiley, luego obtenga desde el origen de esa página:
<location.origin>/doi/pdfdirect/<doi>?download=true
No codifique onlinelibrary.wiley.com: Summon puede autenticar a través de un subdominio como advanced.onlinelibrary.wiley.com, y las recuperaciones de origen cruzado pueden fallar. También evite navegar la pestaña directamente a pdfdirect, porque el navegador puede iniciar una descarga y dejar el contexto de la página inutilizable. Prefiera fetch() del contexto de la página.
Springer Nature
Para prefijos DOI como 10.1007/... y 10.1186/...:
https://link.springer.com/content/pdf/<doi>.pdf
Esto suele funcionar después de que se resuelve el inicio de sesión institucional. Use fetch del contexto del navegador si la descarga directa del shell devuelve 401, 403 o una página de inicio de sesión HTML.
Nature Communications
Para patrones de DOI OA como 10.1038/s41467-..., intente:
https://www.nature.com/articles/<id-artículo>.pdf
Extraiga <id-artículo> del sufijo del DOI y aún verifique la cabecera y el texto del PDF.
bioRxiv
Para el prefijo DOI 10.1101/..., intente:
https://www.biorxiv.org/content/<doi>v1.full.pdf
Si la versión 1 devuelve 404, intente la página del artículo o una versión posterior. Verifique que el título coincida.
Frontiers
Para el prefijo DOI 10.3389/..., intente:
https://www.frontiersin.org/articles/<doi>/pdf
Si falla, abra primero la página del artículo y use su enlace PDF visible.
RSC Publishing
Para el prefijo DOI 10.1039/..., no asuma que ZJU tiene acceso autorizado al texto completo. Si los enlaces PDF devuelven 404 o páginas de compra, inspeccione la página del artículo y registre no_authorized_pdf_found o purchase_required en lugar de reintentar agresivamente.
Verificación de Editoriales y ScienceDirect
ScienceDirect y algunas plataformas de editoriales pueden mostrar "¿Eres un robot?", CAPTCHA, Cloudflare, verificación de bot o comprobaciones similares después de navegaciones repetidas directas por DOI o apertura automatizada de pestañas. Estas páginas son desafíos de seguridad y antiautomatización, no confirmaciones de inicio de sesión ordinarias.
Reduzca la probabilidad de desencadenarlos utilizando un patrón de acceso conservador:
- Prefiera los enlaces de ZJU Summon / WebVPN / biblioteca
在线全文antes de la navegación directadoi.org -> editorial. - Procese ScienceDirect y otras editoriales sensibles un artículo a la vez.
- Mantenga un rastro de auditoría visible en el manifiesto; no abra muchas pestañas de editoriales en paralelo.
- Espere a que cada página se estabilice antes de buscar
Download PDF,View PDFoPDF. - Reutilice la misma pestaña después de que el usuario complete un paso de verificación en lugar de abrir nuevas pestañas repetidamente.
- Evite bucles de reintento. Un intento automático fallido es suficiente antes de pasar la página al usuario.
Cuando aparezca una página de verificación de editorial:
- Detenga las acciones automatizadas en esa pestaña.
- Registre el artículo en
publisher_verification.tsvo el manifiesto principal con el estadopublisher_verification_waiting_user; usesciencedirect_robot_checkpara la página "¿Eres un robot?" de ScienceDirect. - Informe al usuario qué artículo y pestaña necesitan atención manual.
- No haga clic en CAPTCHA, Cloudflare, "¿Eres un robot?", comprobaciones de bots ni controles de desafío similares automáticamente.
- Después de que el usuario diga que la verificación está completa, continúe normalmente.