naukri-ninja
Version:
Naukri automation tool to fetch, filter , and apply for jobs automatically using gen ai.
166 lines (151 loc) • 9.69 kB
JavaScript
const { getFormattedDate, localStorage } = require("./utils/helper");
const commonHeaders = {
accept: "application/json",
"accept-language": "en-IN,en-GB;q=0.9,en-US;q=0.8,en;q=0.7",
appid: "121",
"cache-control": "no-cache",
clientid: "d3skt0p",
"content-type": "application/json",
gid: "LOCATION,INDUSTRY,EDUCATION,FAREA_ROLE",
pragma: "no-cache",
priority: "u=1, i",
"user-agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Edg/139.0.0.0",
nkparam:
"jH9QnltH+MuGKLwVCzx6nuqLOex1fiLfmrNahP7GLA0SQihJC6d0hDFoJXV65lyEzWcAjLQ7SuUTKBlHw4Artw==",
"sec-ch-ua":
'"Chromium";v="139", "Google Chrome";v="139", "Not-A.Brand";v="99"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Windows"',
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"x-requested-with": "XMLHttpRequest",
systemid: "Naukri",
"Referer-Policy": "strict-origin-when-cross-origin",
};
const getHeaders = (isAuthenticated, isCookieRequired) => {
const authorization = localStorage.getItem("authorization");
const headers = {
...commonHeaders,
...(isAuthenticated && {
authorization: `Bearer ${authorization}`,
Cookie: `nauk_at=${authorization})}`,
}),
...(isCookieRequired &&
false && {
cookie:
'_t_ds=1beede871734549822-111beede87-01beede87; J=0; PS=055474c5913207df0833da5505f0939499f983faf0fa15fe03810eecac297038719f715d2eb9dbc0ebdf31417b362f0d; _ga=GA1.1.1388380775.1734549825; _ga_7TYVEWTVRG=GS1.1.1740493309.1.1.1740493404.0.0.0; _ga_JCSR1LRE3X=GS1.1.1740493309.1.1.1740493404.0.0.0; _ga_T749QGK6MQ=GS2.1.s1756365934$o31$g1$t1756365951$j43$l0$h0; ACTIVE=1759774314; g_state={"i_l":2,"i_p":1759860799879}; nauk_rt=9429223a690c4b95b60d433b146a0591; nauk_sid=9429223a690c4b95b60d433b146a0591; nauk_otl=9429223a690c4b95b60d433b146a0591; NKWAP=06f957e61bb11685b9ea922eb6a996bb2cd7f3fb40c29a18ff003c62a2e1a36431b890266d0ecd01~055474c5913207df0833da5505f0939499f983faf0fa15fe03810eecac297038719f715d2eb9dbc0ebdf31417b362f0d~1~0; MYNAUKRI[UNID]=3cdda6110f2c49d6a28568a4ae56f656; nauk_ps=default; __gads=ID=b2c6fb293a0153e8:T=1743445614:RT=1759774427:S=ALNI_MZ8dAm8cGp4kbfrCe5RXwmJsWu-zg; __gpi=UID=000010825b096814:T=1743445614:RT=1759774427:S=ALNI_MZvPZ40hLG2xMjV4x3oykq_FuA5ZQ; __eoi=ID=56818efb5621024f:T=1759124867:RT=1759774427:S=AA-AfjaOl3zqlIwKvnX9lM5x2q0W; test=naukri.com; nauk_cs=default; _gcl_au=1.1.811142471.1773895596; _fbp=fb.1.1773896258136.988599158443800048; nauk_at=eyJraWQiOiIzIiwidHlwIjoiSldUIiwiYWxnIjoiUlM1MTIifQ.eyJkZXZpY2VUeXBlIjoiZDNza3QwcCIsInVkX3Jlc0lkIjoyMjUwODgzNTgsInN1YiI6IjE4NTQ3MTQ0MyIsInVkX3VzZXJuYW1lIjoiZjE1ODMzMzY0NzQuOTY1My4xNjc4MzA1NjE4IiwidWRfaXNFbWFpbCI6dHJ1ZSwiaXNzIjoiSW5mb0VkZ2UgSW5kaWEgUHZ0LiBMdGQuIiwidXNlckFnZW50IjoiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzE0MS4wLjAuMCBTYWZhcmkvNTM3LjM2IEVkZy8xNDEuMC4wLjAiLCJpcEFkcmVzcyI6IjI0MDE6NDkwMDpjMGI5OjVhM2Y6N2M1MTo5ZjQ3OmRlNTU6ODIzNCIsInVkX2lzVGVjaE9wc0xvZ2luIjpmYWxzZSwidXNlcklkIjoxODU0NzE0NDMsInN1YlVzZXJUeXBlIjoiIiwidXNlclN0YXRlIjoiQVVUSEVOVElDQVRFRCIsInVkX2lzUGFpZENsaWVudCI6ZmFsc2UsInVkX2VtYWlsVmVyaWZpZWQiOnRydWUsInVzZXJUeXBlIjoiam9ic2Vla2VyIiwic2Vzc2lvblN0YXRUaW1lIjoiMjAyNS0xMC0wNlQyMzo0MzozNSIsInVkX2VtYWlsIjoiYW5raXRhdXlAZ21haWwuY29tIiwidXNlclJvbGUiOiJ1c2VyIiwiZXhwIjoxNzc0NTk1NDEwLCJ0b2tlblR5cGUiOiJhY2Nlc3NUb2tlbiIsImlhdCI6MTc3NDU5MTgxMCwianRpIjoiOTQyOTIyM2E2OTBjNGI5NWI2MGQ0MzNiMTQ2YTA1OTEiLCJwb2RJZCI6InByb2QtODVkYjY5ZmQ0OC1xcHQ1bSJ9.hy0hZIilvkvkFYvuZHZw3ChUZ8rZVc8zzPEKb-sahzewozELtRBwcmwhLie1aKAVsMJ2obwNSMMurEEdrkBGUgR0m-6RGum5aWrYOn3aGjHgR7X_ggLuoA0nRDu1WjEEWFS9JLZBQ7pllEb6iIqXQ2btnnp59AhoLrXtvs2TMc5caj_MTVRuYNdvoFLGVPiflZEbZCWBOZUbeshowdA_ePWmhNlYXNuLhyX7bLKL9NTF4rmq6tovWYyI_wzCbPp_AAcgnfhW1XECELrfmZ8vQnCKBfdTclojzpJDTb8Ajy4t2qx1HXBaPEjlS0X1v8IHxA-vm6E8eKxYezaPmLlmGQ; is_login=1; failLoginCount=0; HOWTORT=cl=1774591829127&r=https%3A%2F%2Fwww.naukri.com%2Fmnjuser%2Fhomepage; bm_mi=A3D6BD51E3724283D55FFF86EE856D8D~YAAQjwFAF/VCBgGdAQAA22XqLR+1VZ3jLPB3Z/1NLR2PDggiKPk9M8Sy+MY2gj6or+0kR3eUKyN7d0h3m2y3yUfNU3QnKw5HFZRUgz/f1YV0kup4t26qwT/9huxkV7eiz+rhGrPv3K69XJfdz+DBJ7YKsUozsvUh633FbcZ3uVTW/lNvwpoQTufaQq6AEU80olnXd+uKxmhc0TpvVBkWzaA1GloNr7AZ2qy9DvX47x/E+MCCa9Lhu2Ao71bVAVUrqwRfqbTB8H6o//aYDni8D8+0zRxRPJtCYa4hoSc8rJUz+0BlTH/m79JTQo15yzkPXx0XPWzmkYsSlHmQOThJL7G6EFdiIqpy3R07HlVWedov5dgLp2ehhguln8eZ+gVYUIkP9S1RSxuvWBwJHJEDG3wmWSrMEMguN3LaIT6uYVggJrQJvBd77zAuNdpITrLThB6JrpkTj7sSRPeX2gA=~1; _ga_K2YBNZVRLL=GS2.1.s1774591812$o122$g1$t1774591829$j43$l0$h0; ak_bmsc=6E2375D830CEC4F1643EB3F9A63C4E73~000000000000000000000000000000~YAAQjwFAF/JEBgGdAQAAlmjqLR9pL3wfpkxNwDh44o258i/Jw2HafYSWnFcdGVR1ya2qMKK7Fp2N4ikkQrojUK/Ni/ezPw8nWte3pm+Vvef99zHdWCPvy6h/6Kpgqq4VZ2jSglM57JAkNv5ewj7hM333xyOomSzsty/eusCIJibZHIw9wsDkkU2fIh2iCiMj/uGalQmQQM7GFvmPaNDLfR7DyVB6WmPukdP7kZGPpYx9Zpj3erfeA/HTCN1fNiFRIALgeqCY8iKkACJZZFyAe1mBFGyiZ5O9cc3gBDdzyBdqD4UpuX/aFm1IDHbDZlmP61KrKexq160Vh7zLH/SuGjK7GVJthNsopZCqdB9w9iRmKo7UrmXAfuzv598Pv0CAPuuPdx8w0IAzxbCkc1DAhCCYzYZ3rWSB+dQHC3bNXOqU8vKX2SuR3V9UHdV+zEDfNdXtF01GSia6jBtYhxurweOAjoVnepBey5K1G4nVthKY9bUi7KxtR6NIUIc9MLmaKakmaqzS1GZfGnFzlsiT4d6Qioykqajjh/Mqs80A6COVcPNdKSxGj6Ruf6bXYfpakOZWVs0vbzAnUh650vXC0MDhLSLJRo5Ws3uVGGMSCjdBZlWrLUrYyN6S8MFiuu3Bsfc=; bm_sv=1B266965F205DDE71F8E3B8909C7AA50~YAAQjwFAF7NHBgGdAQAA1GzqLR+uVCBpMARnzJ5DR4KEceY1NXO+2H3g9stqMiM0NGroLIm+V5AIO9ecVPoHNmjSrB7578TFtZrF8kplYNsRhqnVYAJRatAs3VU7t/AjT06gmabGkPfSoq3T78yV7FWDW2Z4gEymag75nUHT9wlPSiJNNOLyHGsGKfMib3OYVrkQN+GpfN4Ks7KvZEoV15BjIdykNPw0Ia/A+gc9wBa4v507anIwlZlnMUvcx8BA/Q==~1',
}),
};
return headers;
};
const applyJobsAPI = async (bodyStr) =>
fetch(
"https://www.naukri.com/cloudgateway-workflow/workflow-services/apply-workflow/v1/apply",
{
headers: getHeaders(true, true),
body: `${bodyStr},"logstr":"--drecomm_profile-2-F-0-1--17140801091455348-","flowtype":"show","crossdomain":true,"jquery":1,"rdxMsgId":"","chatBotSDK":true,"mandatory_skills":["CSS","HTML","React.Js"],"optional_skills":["Typescript","Angular"],"applyTypeId":"107","closebtn":"y","applySrc":"drecomm_profile","sid":"17140801091455348","mid":""}`,
method: "POST",
},
);
const searchJobsAPI = (pageNo, keywords) =>
fetch(
`https://www.naukri.com/jobapi/v3/search?noOfResults=20&urlType=search_by_key_loc&searchType=adv&location=pune%2C%20mumbai%2C%20bengaluru%2C%20bangalore&keyword=${keywords}&sort=p&pageNo=${pageNo}&experience=3&ctcFilter=6to10&ctcFilter=10to15&ctcFilter=15to25&ctcFilter=25to50&ctcFilter=50to75&ctcFilter=75to100&k=${keywords}&l=pune%2C%20mumbai%2C%20bengaluru%2C%20bangalore&nignbevent_src=jobsearchDeskGNB&experience=3&ctcFilter=6to10&ctcFilter=10to15&ctcFilter=15to25&ctcFilter=25to50&ctcFilter=50to75&ctcFilter=75to100&src=cluster&latLong=18.7506117_73.8764436&sid=17143714288347830_8`,
{
headers: getHeaders(true, false),
body: null,
method: "GET",
},
);
const getJobDetailsAPI = (jobId) =>
fetch(
`https://www.naukri.com/jobapi/v4/job/${jobId}?microsite=y&src=jobsearchDesk&sid=17563633043679150&xp=1&px=1`,
{
headers: getHeaders(true, true),
body: null,
method: "GET",
},
);
const getSimJobsAPI = (jobId) =>
fetch(
`https://www.naukri.com/jobapi/v2/search/simjobs/${jobId}?noOfResults=6&searchType=sim`,
{
headers: getHeaders(true, true),
body: null,
method: "GET",
},
);
const loginAPI = (creds) =>
fetch("https://www.naukri.com/central-login-services/v1/login", {
headers: {
...getHeaders(false, false),
systemid: "jobseeker",
},
body: `{"username": "${creds.username}","password":"${creds.password}"}`,
method: "POST",
});
const getRecommendedJobsAPI = async (clusterId) =>
fetch("https://www.naukri.com/jobapi/v2/search/recom-jobs", {
headers: getHeaders(true, true),
body: `{"clusterId":"${clusterId}","src":"recommClusterApi","clusterSplitDate":{"apply":"${getFormattedDate()}","preference":"${getFormattedDate()}","profile":"${getFormattedDate()}","similar_jobs":"${getFormattedDate()}"}}`,
method: "POST",
});
const getProfileDetailsAPI = async () =>
fetch(
"https://www.naukri.com/cloudgateway-mynaukri/resman-aggregator-services/v2/users/self?expand_level=4",
{
headers: getHeaders(true, false),
body: null,
method: "GET",
},
);
const matchScoreAPI = async (jobId) =>
fetch(`https://www.naukri.com/jobapi/v3/job/${jobId}/matchscore`, {
headers: getHeaders(true, false),
body: null,
method: "GET",
});
const incrementCounterAPI = async (useCase = "newJobApplied") =>
fetch(
`https://us-central1-easyledger-ed2ef.cloudfunctions.net/apiCounter?useCase=${useCase}`,
{
headers: {
"Content-Type": "application/json",
},
body: null,
method: "GET",
},
);
const getResumeAPI = async (profileId) =>
fetch(
`https://www.naukri.com/cloudgateway-mynaukri/resman-aggregator-services/v1/users/self/profiles/${profileId}/resume`,
{
headers: {
...getHeaders(true, false),
"content-type": "application/pdf",
},
method: "GET",
},
);
const getConstantsAPI = async (type) =>
fetch(`https://getdata-856678010611.us-central1.run.app?type=${type}`, {
headers: {
"Content-Type": "application/json",
},
body: null,
method: "GET",
});
module.exports = {
applyJobsAPI,
searchJobsAPI,
getJobDetailsAPI,
getSimJobsAPI,
loginAPI,
getRecommendedJobsAPI,
getProfileDetailsAPI,
incrementCounterAPI,
matchScoreAPI,
getResumeAPI,
getConstantsAPI,
};