ZJU Literature Downloader
이 스킬은 검증된 워크플로우를 반복 가능하고 법적으로 범위가 한정된 프로세스로 전환하여 사용자의 Zhejiang University Library / WebVPN 접속 권한을 통해 논문을 찾고, 다운로드하고, 읽을 수 있도록 합니다.
경계
사용자의 합법적인 기관 접속 권한만 사용하십시오. 유료 결제 차단(페이월), DRM, CAPTCHA, Cloudflare, 발행사 봇 검사 또는 이중 인증을 우회하지 마십시오. 페이지에서 CAPTCHA, QR 로그인, SMS/OTP, Cloudflare, 발행사 봇 검사 또는 보안 문제를 요구하는 경우 중단하고 사용자에게 Chrome에서 직접 완료하도록 요청하십시오.
대량 다운로드를 피하십시오. 사용자가 논문 목록을 확인한 후에 소규모 배치로 작업하십시오. 무엇을, 어디서 다운로드했는지, 부가 자료가 발견되었는지 여부에 대한 명확한 감사 추적(audit trail)을 남기십시오.
사용자에게 기관 비밀번호, CAS 자격 증명, OTP 코드, 복구 코드 또는 세션 토큰을 채팅이나 터미널에 붙여넣도록 요청하지 마십시오. 사용자가 비밀번호를 제공하는 경우 거절하고 대신 핸드오프-로그인 워크플로우를 사용하십시오.
ZJU CAS 저장된 로그인 페이지 예외: 사용자가 Chrome이 이미 ZJU CAS 자격 증명을 채웠고 로그인/확인 버튼을 클릭하는 것을 명시적으로 승인한 경우, 에이전트는 ZJU CAS/WebVPN/기관 SSO 페이지에서 해당 버튼을 한 번 클릭할 수 있습니다. 이때 자격 증명을 읽거나, 복사하거나, 입력하지 않습니다. 이 예외는 CAPTCHA, QR 로그인, SMS/OTP, 발행사 봇 검사 또는 예상되는 기관 로그인 흐름 외부의 페이지에는 적용되지 않습니다.
쿠키, 비밀번호, 로컬 저장소, 브라우저 프로필 또는 세션 파일을 검사하거나 내보내지 마십시오. 브라우저의 이미 인증된 페이지 컨텍스트만 사용하십시오.
사전 조건
다운로드를 시도하기 전에 다음 조건을 확인하십시오:
- 사용자 컴퓨터에서 Chrome이 열려 있어야 합니다.
- 사용자가 Chrome에서 Zhejiang University Library / WebVPN에 직접 로그인했어야 합니다.
- 일반적인 페이지:
https://libweb.zju.edu.cn/,https://webvpn.zju.edu.cn/,https://zju.summon.serialssolutions.com/.
- 일반적인 페이지:
- 현재 브라우저 인스턴스에 대해 Chrome 원격 디버깅이 허용되어야 합니다.
- 사용자에게
chrome://inspect/#remote-debugging을 열도록 요청하십시오. - 'Allow remote debugging for this browser instance'를 활성화해야 합니다.
- 사용자에게
- 환경이 Node.js 22+를 실행할 수 있어야 합니다.
node --version을 시도하십시오.- Codex Desktop에서
node가 PATH에 없는 경우%LOCALAPPDATA%\OpenAI\Codex\bin\node.exe를 시도하십시오.
- 웹 액세스 CDP 프록시를 사용할 수 있거나 시작할 수 있어야 합니다.
- 일반적인 Claude Code 경로:
%USERPROFILE%\.claude\skills\web-access-main\scripts\check-deps.mjs. - 일반적인 공유 에이전트 경로:
%USERPROFILE%\.agents\skills\web-access-main\scripts\check-deps.mjs. - Codex 전용 설정에서는
%USERPROFILE%\.codex\skills\web-access-main\scripts\check-deps.mjs도 확인하십시오.
- 일반적인 Claude Code 경로:
- 사용자가 대상 출력 폴더를 승인했어야 합니다.
Claude Code에서 이 스킬이 설치되지 않았다고 표시되면 다음 위치에 설치하거나 복사하십시오:
$env:USERPROFILE\.claude\skills\zju-literature-downloader
Codex 및 기타 에이전트 설정은 대신 .codex\skills 또는 .agents\skills를 사용할 수 있습니다. 세 위치를 서로 다른 스킬 버전이 아닌 설치 대상으로 취급하십시오.
배치 범위
사용자가 명확한 DOI/제목/PMID 목록을 제공하는 경우 소규모 배치가 지원됩니다.
권장 제한:
- 일반 배치: 5-10편의 논문
- 실제 최대 배치: 15-20편의 논문, 일시 중지 및 매니페스트 포함
- 발행사 확인, CAPTCHA, WebVPN 만료 또는 비정상적인 다운로드 프롬프트가 나타나면 즉시 중단하십시오.
광범위한 키워드 검색을 무제한 자동 다운로드로 전환하지 마십시오. 전체 저널 호, 볼륨 또는 대규모 결과 세트를 다운로드하지 마십시오.
상태 범주
모든 논문을 다음 상태 중 하나로 분류하고 매니페스트에 상태를 유지하십시오:
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
브라우저가 Zhejiang University CAS / 통합 신원 인증 화면에 있을 때 cas_waiting_user를 사용하십시오. 논문이 아직 기관 선택기, CARSI/Shibboleth/OpenAthens 핸드오프 또는 CAS 이전의 해당 SSO 단계에 있을 때 institutional_login_waiting_user를 사용하십시오. 둘 다 최종 상태가 아닙니다. 하위 호환성을 위해 매니페스트에서 cas_waiting_user를 유지하십시오.
하나 이상의 공식 부가 정보 파일이 확인되었지만 기본 논문 PDF가 사용자의 승인된 액세스를 통해 계속 사용할 수 없는 경우 si_only_downloaded를 사용하십시오. 이것을 downloaded라고 부르지 마십시오.
Summon SPA가 반복적으로 ERR_EMPTY_RESPONSE를 반환하거나 단일 새로고침 후에도 로드할 수 없는 경우 summon_unreachable을 사용하십시오. Chrome이 PDF를 시각적으로 표시하지만 브라우저 컨텍스트 fetch()가 바이트를 검색할 수 없는 경우 browser_pdf_viewer_fallback_needed를 사용하십시오. 어느 상태도 논문을 사용할 수 없음을 의미하지 않습니다. 둘 다 다음 합법적인 대체 방법을 지정합니다.
발행사 페이지에 "Are you a robot?", CAPTCHA, Cloudflare, 봇 확인 또는 기타 자동화 방지 문제가 표시될 때 publisher_verification_waiting_user 또는 sciencedirect_robot_check를 사용하십시오. 이것을 최종 실패로 취급하지 말고 자동으로 해결하려고 시도하지 마십시오.
Chrome 제어 시작
가능한 경우 웹 액세스 CDP 프록시를 사용하십시오.
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
그런 다음 테스트하십시오:
Invoke-WebRequest -UseBasicParsing -Uri "http://127.0.0.1:3456/targets" -TimeoutSec 10
이 명령이 중단되거나 실패하면:
- 사용자에게 원격 디버깅 확인란을 확인하도록 요청하십시오.
%TEMP%\cdp-proxy.log를 확인하십시오.- Chrome 세션 파일을 읽으려고 시도하지 마십시오.
핵심 CDP 프록시 API
일반적인 웹 액세스 프록시는 http://127.0.0.1:3456입니다.
| 엔드포인트 | 메서드 | 목적 |
|---|---|---|
/health | GET | 프록시 상태 및 Chrome 연결 상태 |
/targets | GET | 열려 있는 Chrome 탭 목록 |
/new?url=... | GET | 새 백그라운드 탭 생성 |
/navigate?target=...&url=... | GET | 기존 탭 탐색 |
/close?target=... | GET | 탭 닫기 |
/info?target=... | GET | 페이지 제목, URL 및 readyState 가져오기 |
/eval?target=... | POST body=JS | 탭에서 JavaScript 실행 및 { value: ... } 반환 |
/clickAt?target=... | POST body=CSS 선택자 | 보이는 요소의 중앙 클릭 |
#! 조각을 포함하는 Summon URL에는 /new보다 /navigate를 사용하십시오. #! 조각이 제거되면 Chrome이 about:blank 또는 잘못된 페이지를 열 수 있습니다. curl을 사용할 수 없으면 간단한 확인을 위해 PowerShell Invoke-WebRequest를 사용하고 프록시 호출에는 Node.js fetch()를 사용하십시오.
권장 검색 워크플로우
직접 발행사 페이지보다 도서관 검색 경로를 선호하십시오. 더 안정적이고 봇 보호를 트리거할 가능성이 적습니다.
- ZJU Summon에서 DOI 또는 정확한 제목으로 검색:
https://zju.summon.serialssolutions.com/search?#!/search?pn=1&ho=t&include.ft.matches=f&l=en&q=<URL 인코딩된 DOI 또는 제목>
scripts/cdp_open_url.mjs를 통해 또는 CDP 프록시를 호출할 때 중첩 URL을 완전히 URL 인코딩하여 Summon URL을 여십시오. Summon은#!을 사용합니다.#조각이 제거되면 Chrome이about:blank또는 잘못된 페이지를 열 수 있습니다./eval로 결과 페이지를 읽으십시오.- 표시 텍스트 또는
aria-label이 다음 중 하나인 링크를 추출하십시오:PDF在线全文Full TextView PDF- 발행사별 전문 텍스트 항목.
- 가능하면 결과의
PDF링크를 선호하십시오. - CDP 프록시를 통해 새 백그라운드 탭에서 PDF 링크를 여십시오.
- 발행사가 보안 문제를 표시하면 사용자에게 수동으로 완료하도록 요청하십시오.
- PDF가 Chrome에 표시되면
scripts/browser_pdf_downloader.mjs를 사용하여 인증된 브라우저 컨텍스트에서 저장하십시오.
Summon 필드 노트
Summon에서 PDF, 온라인 전문 또는 발행사 링크를 추출할 때:
- 빈
href값은 건너뛰십시오. 첫 번째 온라인 전문 일치 항목은 실제 링크가 아니라 패싯 토글일 수 있습니다. - Summon을 느린 SPA로 취급하십시오. 탐색 후 약 6초 동안 기다린 다음 짧은 일시 중지와 함께 최대 3번까지 링크 추출을 재시도하십시오.
- Summon이
login.serialssolutions.com/sso/login으로 리디렉션하고 IP가 승인된 범위를 벗어났다고 표시하면ip_not_authorized를 기록하십시오. 이 경우 사용자는 브라우저 페이지의 WebVPN뿐만 아니라 ZJU RVPN/SSLVPN 클라이언트가 필요할 수 있습니다. CDP로 제어되는 Chrome 탭은 여전히 로컬 네트워크 IP를 사용할 수 있기 때문입니다. - Summon에 PDF가 없지만 온라인 전문 링크가 있는 경우 발행사 URL을 수동으로 구성하기 전에 해당 경로를 따르십시오.
- 페이지가 지속적으로
ERR_EMPTY_RESPONSE를 표시하거나 한 번의 새 탐색 및 일반적인 SPA 대기 후에도 렌더링되지 않으면summon_unreachable을 기록하십시오. Summon에서 반복하지 마십시오. DOI의 발행사 방문 페이지 또는 확인된 OA 경로를 한 번 시도하되 여전히 필요한 경우 사용자의 승인된 브라우저 세션을 사용하십시오.
발행사별 패턴
논문 신원을 확인한 후에만 DOI 기반 수리 힌트로 사용하십시오. 페이지 또는 PDF가 실제로 확인되지 않은 경우 액세스를 주장하지 마십시오.
ACS Publications
DOI 접두사 10.1021/...의 경우:
https://pubs.acs.org/doi/pdf/<doi>
ACS 부가 정보는 종종 다음을 따릅니다:
https://pubs.acs.org/doi/suppl/<doi>/suppl_file/<journal-code>_si_001.pdf
확인된 예시 10.1021/acs.biomac.4c00102는 bm4c00102_si_001.pdf를 사용했습니다.
가능하면 항상 ACS 기사 방문 페이지에서 시작하십시오. 짧은 중국어 请稍候... 중간 페이지는 저절로 사라질 수 있습니다. 약 5-10초 기다렸다가 발행사 문제로 분류하기 전에 페이지를 한 번 검사하십시오. 읽을 수 있는 초록 페이지가 기본 PDF가 승인되었음을 증명하지는 않습니다. 여전히 Available to Purchase 또는 Access through Institution이 표시되면 적절한 기관 로그인 또는 구매 상태를 기록하고 로그인 선택은 사용자에게 맡기십시오.
기사 페이지에 표시된 ACS 부가 정보 링크는 기본 PDF가 승인되지 않은 경우에도 합법적으로 ACS Figshare / ndownloader.figstatic.com 다운로드로 이어질 수 있습니다. 보이는 공식 링크를 따르고 결과 SI PDF를 확인하고 기본 기사도 확인될 때까지 si_only_downloaded를 기록하십시오. 기사 페이지 링크 이상의 보충 파일 이름을 추측하지 말고 접근 가능한 SI를 유료 본 논문을 검색할 수 있는 권한으로 취급하지 마십시오.
Wiley
10.1002/... 또는 10.1111/...과 같은 DOI 접두사의 경우 먼저 인증된 Wiley 기사 페이지로 이동한 다음 해당 페이지의 자체 출처에서 가져오십시오:
<location.origin>/doi/pdfdirect/<doi>?download=true
onlinelibrary.wiley.com을 하드코딩하지 마십시오. Summon은 advanced.onlinelibrary.wiley.com과 같은 하위 도메인을 통해 인증할 수 있으며 교차 출처 가져오기는 실패할 수 있습니다. 또한 탭을 pdfdirect로 직접 탐색하지 마십시오. 브라우저가 다운로드를 시작하고 페이지 컨텍스트를 사용할 수 없게 만들 수 있기 때문입니다. 페이지 컨텍스트 fetch()를 선호하십시오.
Springer Nature
10.1007/... 및 10.1186/...과 같은 DOI 접두사의 경우:
https://link.springer.com/content/pdf/<doi>.pdf
이것은 일반적으로 기관 로그인이 해결된 후에 작동합니다. 직접 셸 다운로드가 401, 403 또는 HTML 로그인 페이지를 반환하는 경우 브라우저 컨텍스트 가져오기를 사용하십시오.
Nature Communications
10.1038/s41467-...와 같은 OA DOI 패턴의 경우 다음을 시도하십시오:
https://www.nature.com/articles/<article-id>.pdf
DOI 접미사에서 <article-id>를 추출하고 PDF 헤더와 텍스트를 계속 확인하십시오.
bioRxiv
DOI 접두사 10.1101/...의 경우 다음을 시도하십시오:
https://www.biorxiv.org/content/<doi>v1.full.pdf
버전 1이 404를 반환하면 기사 페이지 또는 이후 버전을 시도하십시오. 제목이 일치하는지 확인하십시오.
Frontiers
DOI 접두사 10.3389/...의 경우 다음을 시도하십시오:
https://www.frontiersin.org/articles/<doi>/pdf
실패하면 먼저 기사 페이지를 열고 표시된 PDF 링크를 사용하십시오.
RSC Publishing
DOI 접두사 10.1039/...의 경우 ZJU가 정식 텍스트 액세스를 승인했다고 가정하지 마십시오. PDF 링크가 404 또는 구매 페이지를 반환하면 적극적으로 재시도하는 대신 기사 페이지를 검사하고 no_authorized_pdf_found 또는 purchase_required를 기록하십시오.
발행사 확인 및 ScienceDirect
ScienceDirect 및 일부 발행사 플랫폼은 반복적인 직접 DOI 탐색 또는 자동화된 탭 열기 후에 "Are you a robot?", CAPTCHA, Cloudflare, 봇 확인 또는 유사한 검사를 표시할 수 있습니다. 이러한 페이지는 보안 및 자동화 방지 문제이지 일반 로그인 확인이 아닙니다.
보수적인 액세스 패턴을 사용하여 트리거 가능성을 줄이십시오:
- 직접
doi.org -> 발행사탐색보다 ZJU Summon / WebVPN / 도서관在线全文링크를 선호하십시오. - ScienceDirect 및 기타 민감한 발행사는 한 번에 한 기사씩 처리하십시오.
- 매니페스트에 표시되는 감사 추적을 유지하십시오. 많은 발행사 탭을 병렬로 열지 마십시오.
Download PDF,View PDF또는PDF를 찾기 전에 각 페이지가 안정될 때까지 기다리십시오.- 반복적으로 새 탭을 여는 대신 사용자가 확인 단계를 완료한 후 동일한 탭을 재사용하십시오.
- 재시도 루프를 피하십시오. 페이지를 사용자에게 넘기기 전에 한 번의 자동 시도 실패로 충분합니다.
발행사 확인 페이지가 나타나면:
- 해당 탭에서 자동화된 작업을 중단하십시오.
publisher_verification.tsv또는 기본 매니페스트에publisher_verification_waiting_user상태로 기록하고 ScienceDirect의 "Are you a robot?" 페이지에는sciencedirect_robot_check를 사용하십시오.- 수동 주의가 필요한 논문과 탭을 사용자에게 알리십시오.
- CAPTCHA, Cloudflare, "Are you a robot?", 봇 검사 또는 유사한 문제 컨트롤을 자동으로 클릭하지 마십시오.
- 사용자가 확인이 완료되었음을 확인하면 탭을 다시 방문하고
/info및/eval로 내용을 확인하십시오. 사용자가 직접 페이지와 상호 작용했기 때문에 이제 발행사가 다운로드를 허용할 수 있습니다.
ScienceDirect 전략
ScienceDirect는 반복 DOI 호출에 특히 민감합니다. ZJU Summon 경로를 사용한 후에도 발생할 수 있습니다.
- Summon 결과의 온라인 전문 링크를 사용하십시오(있는 경우).
- DOI
https://doi.org/<doi>로 이동하지 마십시오. 대신 발행사 URL을 직접 구성하십시오. - ScienceDirect 링크가
https://www-sciencedirect-com-s.zju.summon.serialssolutions.com/...와 같은 Summon 프록시 URL인 경우/navigate를 사용하여 두 번 탐색하지 마십시오. 페이지가 이미 대상 URL에 있을 수 있습니다. - ScienceDirect가 "Are you a robot?"을 표시하면
sciencedirect_robot_check를 기록하고 사용자에게 알리십시오. 사용자가 스스로 해결할 수 있습니다. - 사용자가 봇 확인을 완료한 후 동일한 탭을 재사용하십시오. 동일한 URL로 새 탭을 열면 새 세션과 새 확인이 트리거됩니다.
부가 정보 처리
부가 정보(SI, Supplemental, Supporting Information)는 논문 자체의 다운로드 가능성과 별개로 처리해야 합니다.
- 발행사 기사 페이지에 표시된 공식 링크를 따르십시오.
- 부가 정보가 사용자의 액세스 없이 다운로드 가능한 경우에도 물리적 파일을 가져오십시오.
- 가져온 SI 파일에 대한 감사 추적을 유지하십시오.
- 액세스 가능한 SI를 유료 본 논문에 대한 액세스 증거로 취급하지 마십시오.
- 기본 PDF를 확인할 수 없는 경우 상태를
si_only_downloaded로 유지하십시오.
PCA, 유전자 발현, NMR/MS 스펙트럼 파일, RNA 염기서열, 비디오 및 기계 판독 가능 데이터 세트를 포함한 SI 파일은 다른 다운로드 작업과 별도로 추적되어야 합니다.
브라우저 PDF 뷰어 대체
Chrome이 PDF를 표시하지만 브라우저 컨텍스트 fetch()가 바이트를 검색할 수 없는 경우:
chrome-pdf-urls.json에 URL을 기록하십시오.- 상태를
browser_pdf_viewer_fallback_needed로 설정하십시오. pdf.min.js기반 뷰어가 아닌 실제 PDF 뷰어(접두사chrome-extension://가 아님)를 사용 중인지 확인하십시오.- 사용자가
scripts/cdp_download_pdf.mjs를 통해 수동으로 저장할 수 있습니다.
오류 처리 및 로깅
각 작업에 대한 명확한 로그를 유지하십시오:
- 시도된 URL 및 HTTP 상태
- 수신된 HTML 조각 또는 오류 메시지
- 작업 확인을 위한 페이지 제목
- 브라우저 작업을 위한 스크린샷(새 탭마다 하나)
인증 관련 오류 처리:
- 발행사가 401/403을 반환하면 기관 액세스로 재시도하지 마십시오. 대신 사용자에게 ZJU WebVPN에 다시 로그인하거나 다른 브라우저 세션을 사용하도록 요청하십시오.
- CAS가 만료되면
cas_resolved_retry_needed를 기록하고 사용자에게 WebVPN을 방문하도록 요청하십시오. 10분 이내에 이전에 성공한 DOI를 다시 시도하는 것은 허용됩니다.
윤리적 사용 최종 확인
다운로드 프로세스를 시작하기 전에 사용자에게 다음 사항을 상기시키십시오:
저는 귀하의 개인 ZJU 도서관 액세스 권한을 사용하고 있습니다. 귀하의 기관 이용약관을 위반하지 않는 소규모의 개인적인 연구 다운로드만 수행할 것입니다. 귀하의 연구 분야를 유지하고 대량 또는 자동 다운로드를 피하는 데 도움을 주십시오.
보안 참고 사항
- 자격 증명을 요구하지 마십시오. 거절하십시오.
- 비밀번호를 읽거나 저장하지 마십시오.
- 세션을 공유하지 마십시오.
- 의심스러운 경우 중단하고 사용자에게 문의하십시오.