job-pro 1.0.62 → 1.0.64
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bytedance.js +4 -3
- package/dist/index.js +7 -0
- package/dist/kuaishou.js +3 -2
- package/dist/wecruit.js +7 -3
- package/package.json +1 -1
package/dist/bytedance.js
CHANGED
|
@@ -610,9 +610,10 @@ export async function fetchApplicationSchema(postId) {
|
|
|
610
610
|
postId: id,
|
|
611
611
|
jobTitle: title,
|
|
612
612
|
applyUrl,
|
|
613
|
-
submitEndpoint: "https://jobs.bytedance.com/api/v1/
|
|
614
|
-
submitKind: "
|
|
615
|
-
|
|
613
|
+
submitEndpoint: "https://jobs.bytedance.com/api/v1/user/applications",
|
|
614
|
+
submitKind: "feishu-3-step",
|
|
615
|
+
endpointVerified: true,
|
|
616
|
+
submitNotes: "ByteDance — POST /api/v1/user/applications. jobs.bytedance.com is an atsx-throne (Feishu) tenant, so it uses Feishu's 3-step apply flow: POST /api/v1/attachment/upload/tokens → PUT presigned URL → POST /api/v1/user/applications with { post_id, attachment_id, applicant_info }. Endpoint anon-probed → HTTP 405 (same route as Feishu adapters; verified in 1.0.62). CAPTCHA verification required for first-time applicants; session cookies via extension.",
|
|
616
617
|
}),
|
|
617
618
|
};
|
|
618
619
|
}
|
package/dist/index.js
CHANGED
|
@@ -130,6 +130,7 @@ const SUBMIT_KIND_BY_FAMILY = {
|
|
|
130
130
|
const SUBMIT_KIND_OVERRIDES = {
|
|
131
131
|
unitree: "external", // Bespoke family, but WeChat-QR — no API submit.
|
|
132
132
|
lilith: "cdp-real-browser", // Feishu tenant, but needs ByteDance _signature bypass.
|
|
133
|
+
bytedance: "feishu-3-step", // Bespoke family but jobs.bytedance.com is atsx-throne.
|
|
133
134
|
};
|
|
134
135
|
function submitKindFor(adapterKey, family) {
|
|
135
136
|
return SUBMIT_KIND_OVERRIDES[adapterKey] ?? SUBMIT_KIND_BY_FAMILY[family];
|
|
@@ -169,6 +170,12 @@ const ENDPOINT_VERIFIED = new Set([
|
|
|
169
170
|
// Feishu family: /api/v1/user/applications discovered via SPA chunk 4026
|
|
170
171
|
// (1.0.62). Promotes all 8 Feishu adapters since they share backend.
|
|
171
172
|
"xiaomi", "nio", "minimax", "zhipu", "iqiyi", "agibot", "zerooneai", "baichuan",
|
|
173
|
+
// bytedance: atsx-throne tenant, same /api/v1/user/applications (1.0.63)
|
|
174
|
+
"bytedance",
|
|
175
|
+
// Beisen Wecruit family: anon probe with X-Requested-With (1.0.63)
|
|
176
|
+
"sensetime", "horizonrobotics",
|
|
177
|
+
// kuaishou: /recruit/campus/e/api/v1/ sub-tree discovered (1.0.64)
|
|
178
|
+
"kuaishou",
|
|
172
179
|
]);
|
|
173
180
|
const HELP = `
|
|
174
181
|
job-pro — query Chinese big-tech campus recruiting from your terminal
|
package/dist/kuaishou.js
CHANGED
|
@@ -487,9 +487,10 @@ export async function fetchApplicationSchema(postId) {
|
|
|
487
487
|
postId: id,
|
|
488
488
|
jobTitle: title,
|
|
489
489
|
applyUrl,
|
|
490
|
-
submitEndpoint: "https://campus.kuaishou.cn/
|
|
490
|
+
submitEndpoint: "https://campus.kuaishou.cn/recruit/campus/e/api/v1/apply/internship/apply",
|
|
491
491
|
submitKind: "multipart-session",
|
|
492
|
-
|
|
492
|
+
endpointVerified: true,
|
|
493
|
+
submitNotes: "Kuaishou — POST /recruit/campus/e/api/v1/apply/internship/apply with session cookie. Endpoint extracted from main.e3c87842.js bundle (the /recruit/campus/e/api/v1/ sub-tree has /apply/internship/apply, /apply/operate/apply, /apply/check, /apply/add/record, /resume/upload, /files/upload etc — all probe to 401 + {code:40008,message:\"user.not.login\"} = real REST routes). The /rest/campus-recruit/ prefix in earlier inference was wrong; the real backend mounts at /recruit/campus/e/api/v1/. Requires SSO login via /recruit/campus/e/login/cas.",
|
|
493
494
|
}),
|
|
494
495
|
};
|
|
495
496
|
}
|
package/dist/wecruit.js
CHANGED
|
@@ -410,11 +410,15 @@ export function createAdapter(cfg) {
|
|
|
410
410
|
submit_endpoint: `${SITE_ROOT}/wecruit/delivery/resume/${encodeURIComponent(ch.channelId)}`,
|
|
411
411
|
submit_method: "POST",
|
|
412
412
|
submit_kind: "beisen-wecruit",
|
|
413
|
+
endpoint_verified: true,
|
|
413
414
|
submit_notes: "Beisen Wecruit apply flow: POST /wecruit/resume/upload/file/save/<SU> → " +
|
|
414
415
|
"POST /wecruit/resume/info/add/<SU> → POST /wecruit/delivery/resume/<SU> with " +
|
|
415
|
-
"{ post_id, resume_attachment_id, channel_id }.
|
|
416
|
-
"(
|
|
417
|
-
"
|
|
416
|
+
"{ post_id, resume_attachment_id, channel_id }. Endpoint verified by reading " +
|
|
417
|
+
"/pb/js/vendor.js (Beisen Wecruit's vendor bundle) which lists /delivery/resume/, " +
|
|
418
|
+
"/resume/info/add/, /resume/upload/file/save/ etc as quoted paths. Anon-probe with " +
|
|
419
|
+
"X-Requested-With:XMLHttpRequest header → HTTP 200 + {type:\"error\",state:\"809\"," +
|
|
420
|
+
"msg:\"您尚未登录...\"} = real auth gate (without that header, Nginx returns the SPA HTML). " +
|
|
421
|
+
"Requires candidate session (WeChat OAuth or phone OTP via /pb/<channel>/login.html).",
|
|
418
422
|
questions,
|
|
419
423
|
},
|
|
420
424
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "job-pro",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.64",
|
|
4
4
|
"description": "Query Chinese big-tech campus recruiting from your terminal. 50 companies, all 50 live. 46 via each company's own API; the 4 with no public canonical feed (Hikvision, CICC, Cainiao, WeBank) surfaced via Liepin as a clearly-labeled third-party fallback. No signup, no token, no server.",
|
|
5
5
|
"homepage": "https://job.ha7ch.com",
|
|
6
6
|
"repository": "https://github.com/HA7CH/job-pro",
|