job-pro 1.0.49 → 1.0.51

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/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
- submitNotes: "Didi — POST /talent-api/applyResume with session cookie. Endpoint inferred; needs validation.",
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
@@ -146,6 +146,10 @@ const ENDPOINT_VERIFIED = new Set([
146
146
  "moonshot", "megvii", "deepseek", "galaxyuniversal", "stepfun", "cambricon", "geely",
147
147
  // beisen-italent (anon-probe-verified — IIS 500 template)
148
148
  "iflytek", "vivo",
149
+ // multipart-session probe-verified via re-routing (1.0.50)
150
+ "sf",
151
+ // multipart-session probe-verified via 405 (route exists, method/body wrong)
152
+ "netease", "didi", "pingan",
149
153
  ]);
150
154
  const HELP = `
151
155
  job-pro — query Chinese big-tech campus recruiting from your terminal
@@ -1250,11 +1254,16 @@ async function main() {
1250
1254
  // generic 500 templates are HTML but still real-route signals.
1251
1255
  if (status >= 500)
1252
1256
  return "verified-real";
1257
+ // 405 + any body = method-not-allowed = the routing table has this
1258
+ // URL; just the method/body is wrong. Real route. Nginx's HTML 405
1259
+ // page is one common form, hence the explicit handling here.
1260
+ if (status === 405)
1261
+ return "verified-real";
1253
1262
  if (status === 404)
1254
1263
  return isHTML ? "html-fallthrough" : "speculative-404";
1255
1264
  if (isHTML)
1256
1265
  return "html-fallthrough";
1257
- // 401/403/200-with-error-body/405/4xx-with-business-error = real route
1266
+ // 401/403/200-with-error-body/4xx-with-business-error = real route
1258
1267
  return "verified-real";
1259
1268
  }
1260
1269
  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
- submitNotes: "NetEase — POST /post-app/apply.do with session cookie. Endpoint inferred; needs validation.",
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
- submitNotes: "Ping An — POST /recruit/api/applyJob with session cookie. Endpoint inferred; needs validation.",
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/dist/sf.js CHANGED
@@ -301,9 +301,10 @@ export async function fetchApplicationSchema(postId) {
301
301
  postId: id,
302
302
  jobTitle: title,
303
303
  applyUrl,
304
- submitEndpoint: "https://campus.sf-express.com/api/web/position/apply",
304
+ submitEndpoint: "https://campus.sf-express.com/api/web/applicant/apply",
305
305
  submitKind: "multipart-session",
306
- submitNotes: "SF Express — POST /api/web/position/apply with cr-service header + GeeTest captcha + session cookie. Endpoint anon-probed → 404; the apply route lives somewhere else (likely behind login). The detail endpoint at /api/web/position/findById/<id> is real (see fetchPositionDetail), but the apply path needs real-browser recon.",
306
+ endpointVerified: true,
307
+ submitNotes: "SF Express — POST /api/web/applicant/apply with cr-service header + GeeTest captcha + session cookie. Endpoint anon-probed → HTTP 401 from the SF gateway (real auth gate; the cr-service-web-cloud cluster distinguishes /api/web/position/* [position service] from /api/web/applicant/* and /api/web/resume/* [applicant service, auth-gated]). Body shape still needs validation against a real candidate session.",
307
308
  }),
308
309
  };
309
310
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "job-pro",
3
- "version": "1.0.49",
3
+ "version": "1.0.51",
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",