job-pro 1.0.61 → 1.0.63
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/feishu.js +7 -5
- package/dist/index.js +8 -0
- 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/feishu.js
CHANGED
|
@@ -109,15 +109,17 @@ export function buildFeishuApplySchema(args) {
|
|
|
109
109
|
post_id: args.postId,
|
|
110
110
|
job_title: args.jobTitle,
|
|
111
111
|
apply_url: `${args.applyUrlPrefix}/${encodeURIComponent(args.postId)}/detail`,
|
|
112
|
-
submit_endpoint: `https://${args.host}/api/v1/
|
|
112
|
+
submit_endpoint: `https://${args.host}/api/v1/user/applications`,
|
|
113
113
|
submit_method: "POST",
|
|
114
114
|
submit_kind: "feishu-3-step",
|
|
115
|
+
endpoint_verified: true,
|
|
115
116
|
submit_notes: "Feishu apply is a 3-step token flow: POST /api/v1/attachment/upload/tokens → " +
|
|
116
117
|
"PUT presigned URL on lf-package-cn.feishucdn.com → POST /api/v1/attachment/exchange/tokens → " +
|
|
117
|
-
"POST /api/v1/
|
|
118
|
-
"
|
|
119
|
-
"
|
|
120
|
-
"
|
|
118
|
+
"POST /api/v1/user/applications with { post_id, attachment_id, applicant_info }. " +
|
|
119
|
+
"Endpoint extracted from atsx-throne/hire-fe-prod/saas-career/4026.f23f1edc.js " +
|
|
120
|
+
"(/user/applications path) and anon-probed → HTTP 405 = real REST route in Feishu's " +
|
|
121
|
+
"routing table (method/csrf requirements differ from anon POST). Requires candidate " +
|
|
122
|
+
"session cookies (capture via extension/, drop under ~/.jobpro/<adapter>.session.json).",
|
|
121
123
|
questions: standard,
|
|
122
124
|
};
|
|
123
125
|
}
|
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];
|
|
@@ -166,6 +167,13 @@ const ENDPOINT_VERIFIED = new Set([
|
|
|
166
167
|
"oppo",
|
|
167
168
|
// probe-verified via JS-bundle extraction (1.0.60)
|
|
168
169
|
"trip",
|
|
170
|
+
// Feishu family: /api/v1/user/applications discovered via SPA chunk 4026
|
|
171
|
+
// (1.0.62). Promotes all 8 Feishu adapters since they share backend.
|
|
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",
|
|
169
177
|
]);
|
|
170
178
|
const HELP = `
|
|
171
179
|
job-pro — query Chinese big-tech campus recruiting from your terminal
|
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.63",
|
|
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",
|