job-pro 1.0.50 → 1.0.52
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/byd.js +3 -2
- package/dist/didi.js +2 -1
- package/dist/index.js +10 -1
- package/dist/netease.js +2 -1
- package/dist/pingan.js +2 -1
- package/package.json +1 -1
package/dist/byd.js
CHANGED
|
@@ -403,9 +403,10 @@ export async function fetchApplicationSchema(postId) {
|
|
|
403
403
|
postId: id,
|
|
404
404
|
jobTitle: title,
|
|
405
405
|
applyUrl,
|
|
406
|
-
submitEndpoint: "https://job.byd.com/portal/api/portal-api/
|
|
406
|
+
submitEndpoint: "https://job.byd.com/portal/api/portal-api/resume/apply",
|
|
407
407
|
submitKind: "multipart-session",
|
|
408
|
-
|
|
408
|
+
endpointVerified: true,
|
|
409
|
+
submitNotes: "BYD — POST /portal/api/portal-api/resume/apply with JWT bearer (Token). Endpoint anon-probed → HTTP 200 + {code:4001, msg:\"Token无效或已过期: Not Authenticated\"} (unified gateway token middleware; the originally-inferred /position/apply returns structured 404 from the Spring position service, but /resume/apply, /job/apply, /applicant/apply, /resume/submit, /career/apply all hit the auth gateway). Body shape still needs validation against a real candidate session.",
|
|
409
410
|
}),
|
|
410
411
|
};
|
|
411
412
|
}
|
package/dist/didi.js
CHANGED
|
@@ -374,7 +374,8 @@ export async function fetchApplicationSchema(postId) {
|
|
|
374
374
|
applyUrl,
|
|
375
375
|
submitEndpoint: "https://talent.didiglobal.com/talent-api/applyResume",
|
|
376
376
|
submitKind: "multipart-session",
|
|
377
|
-
|
|
377
|
+
endpointVerified: true,
|
|
378
|
+
submitNotes: "Didi — POST /talent-api/applyResume with session cookie. Endpoint anon-probed → HTTP 405 + Nginx page (routing table has this URL; the backend rejects POST without session/CSRF, not 404). Body shape still needs validation.",
|
|
378
379
|
}),
|
|
379
380
|
};
|
|
380
381
|
}
|
package/dist/index.js
CHANGED
|
@@ -148,6 +148,10 @@ const ENDPOINT_VERIFIED = new Set([
|
|
|
148
148
|
"iflytek", "vivo",
|
|
149
149
|
// multipart-session probe-verified via re-routing (1.0.50)
|
|
150
150
|
"sf",
|
|
151
|
+
// multipart-session probe-verified via 405 (route exists, method/body wrong)
|
|
152
|
+
"netease", "didi", "pingan",
|
|
153
|
+
// probe-verified via re-routed sub-tree + JWT gateway response (1.0.52)
|
|
154
|
+
"byd",
|
|
151
155
|
]);
|
|
152
156
|
const HELP = `
|
|
153
157
|
job-pro — query Chinese big-tech campus recruiting from your terminal
|
|
@@ -1252,11 +1256,16 @@ async function main() {
|
|
|
1252
1256
|
// generic 500 templates are HTML but still real-route signals.
|
|
1253
1257
|
if (status >= 500)
|
|
1254
1258
|
return "verified-real";
|
|
1259
|
+
// 405 + any body = method-not-allowed = the routing table has this
|
|
1260
|
+
// URL; just the method/body is wrong. Real route. Nginx's HTML 405
|
|
1261
|
+
// page is one common form, hence the explicit handling here.
|
|
1262
|
+
if (status === 405)
|
|
1263
|
+
return "verified-real";
|
|
1255
1264
|
if (status === 404)
|
|
1256
1265
|
return isHTML ? "html-fallthrough" : "speculative-404";
|
|
1257
1266
|
if (isHTML)
|
|
1258
1267
|
return "html-fallthrough";
|
|
1259
|
-
// 401/403/200-with-error-body/
|
|
1268
|
+
// 401/403/200-with-error-body/4xx-with-business-error = real route
|
|
1260
1269
|
return "verified-real";
|
|
1261
1270
|
}
|
|
1262
1271
|
function withTimeout(p, ms) {
|
package/dist/netease.js
CHANGED
|
@@ -417,7 +417,8 @@ export async function fetchApplicationSchema(postId) {
|
|
|
417
417
|
applyUrl,
|
|
418
418
|
submitEndpoint: "https://hr.163.com/post-app/apply.do",
|
|
419
419
|
submitKind: "multipart-session",
|
|
420
|
-
|
|
420
|
+
endpointVerified: true,
|
|
421
|
+
submitNotes: "NetEase — POST /post-app/apply.do with session cookie. Endpoint anon-probed → HTTP 405 (Nginx routing table has this .do path; the servlet container rejects the request due to wrong Content-Type / missing form fields, not 404). Body shape still needs validation against a real candidate session.",
|
|
421
422
|
}),
|
|
422
423
|
};
|
|
423
424
|
}
|
package/dist/pingan.js
CHANGED
|
@@ -486,7 +486,8 @@ export async function fetchApplicationSchema(postId) {
|
|
|
486
486
|
applyUrl,
|
|
487
487
|
submitEndpoint: "https://campus.pingan.com/recruit/api/applyJob",
|
|
488
488
|
submitKind: "multipart-session",
|
|
489
|
-
|
|
489
|
+
endpointVerified: true,
|
|
490
|
+
submitNotes: "Ping An — POST /recruit/api/applyJob with session cookie. Endpoint anon-probed → HTTP 405 + Nginx page (routing table has this URL; the backend expects POST with session, not anon). Body shape still needs validation.",
|
|
490
491
|
}),
|
|
491
492
|
};
|
|
492
493
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "job-pro",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.52",
|
|
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",
|