npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

login-zju

v1.0.9

Published

Server-side library helping your application login to ZJU services

Readme

login-ZJU

A light-weight server-side library helping your application login to ZJU services.

npm version Downloads License: MIT

Install

npm install login-zju

Usage

import { ZJUAM,ServiceName } from 'login-zju';

const am = new ZJUAM("username", "password");
const service = new ServiceName(am); // e.g. new ZDBK(am);

// then you can literally fetch the URL and login-ZJU will handle 
// login or cookie management for you.

const res = await service.fetch("/some/api",{
    method: "GET",
}); // Just like the native fetch API

console.log(await res.text());

This is mainly used for server-side applications.

Current Implemented Services

| Title | Domain | Class name | 上次成功时间 | Note | | -------- | -------------------- | ----------- | ----------- | ---- | | 统一身份认证 | zjuam.zju.edu.cn | ZJUAM | 2026/4/14 | - | | 智云课堂 | classroom.zju.edu.cn | CLASSROOM | 2026/4/14 | - | | 本科教学管理信息服务平台 | zdbk.zju.edu.cn | ZDBK | 2026/4/14 | - | | 表单填报助手 | form.zju.edu.cn | FORM | 2025/11/14 | - | | 学在浙大(zju_web) | courses.zju.edu.cn | COURSES | 2026/4/14 | | | 校园卡二维码页面 | yqfkgl.zju.edu.cn | YQFKGL | 2025/11/26 | 用于https://yqfkgl.zju.edu.cn/_web/_customizes/ykt/index3.jsp,不排除其它path下会有其它登录流程 | | 浙大先生开放平台 | open.zju.edu.cn | OPEN | 2025/11/26 | 其实就是HiAgent | | CC98 | cc98.org | CC98 | 2025/12/6 | 传参为账号密码 | | ETA 三全育人平台 | eta.zju.edu.cn | ETA | 2025/12/24 | 不会自动处理加解密,可以使用eta.encode和eta.decode | | 图书馆移动端 | api/m.lib.zju.edu.cn | APILIB | 2026/4/14 | 有一部分API需要用到bor_id,该信息可以通过apiLib.bor_id获取 | | 预约图书馆座位系统 | booking.lib.zju.edu.cn | BOOKINGLIB | 2026/4/14 | 请求body中不需要带上authorization字段,所以token设置成了private的 | | 教在浙大 | alt.zju.edu.cn | ALT | 2026/4/14 | 它有一个签名header,但是实际后端不检验 |

鉴于部分服务可能会变更登录流程,如果发现登录流程炸了,可以提交一个issue或者发布一个PR。

Login to ZJU

import { ZJUAM } from 'login-zju';

const me = new ZJUAM("username", "password");

me.fetch("https://zjuam.zju.edu.cn/path")

Login to other services

If the service is implemented:

import { ZJUAM, ZDBK } from 'login-zju';

const am = new ZJUAM("username", "password");
const ZDBK = new ZDBK(am);

ZDBK.fetch("/some/api")

If not implemented:

import { ZJUAM } from 'login-zju';

const am = new ZJUAM("username", "password");

const callbackURL = await am.service("service_url")

// fetch(callbackURL) and you can get logged in. You may need to implement further cookie handler yourself.