linkedin checks bypass 🔥
This commit is contained in:
45
index.js
45
index.js
@@ -7,12 +7,8 @@ module.exports.query = (queryObject) => {
|
||||
return query.getJobs();
|
||||
};
|
||||
|
||||
//transfers object values passed to our .query to an obj we can access
|
||||
function Query(queryObj) {
|
||||
//query vars
|
||||
this.host = queryObj.host || "www.linkedin.com";
|
||||
|
||||
//api handles strings with spaces by replacing the values with %20
|
||||
this.keyword = queryObj.keyword?.trim().replace(" ", "+") || "";
|
||||
this.location = queryObj.location?.trim().replace(" ", "+") || "";
|
||||
this.dateSincePosted = queryObj.dateSincePosted || "";
|
||||
@@ -21,17 +17,9 @@ function Query(queryObj) {
|
||||
this.salary = queryObj.salary || "";
|
||||
this.experienceLevel = queryObj.experienceLevel || "";
|
||||
this.sortBy = queryObj.sortBy || "";
|
||||
//internal variable
|
||||
this.limit = Number(queryObj.limit) || 0;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*
|
||||
* Following get Functions act as object literals so the query can be constructed with the correct parameters
|
||||
*
|
||||
*
|
||||
*/
|
||||
Query.prototype.getDateSincePosted = function () {
|
||||
const dateRange = {
|
||||
"past month": "r2592000",
|
||||
@@ -85,16 +73,6 @@ Query.prototype.getSalary = function () {
|
||||
return salaryRange[this.salary.toLowerCase()] ?? "";
|
||||
};
|
||||
|
||||
/*
|
||||
* EXAMPLE OF A SAMPLE QUERY
|
||||
* https://www.linkedin.com/jobs/search/?f_E=2%2C3&f_JT=F%2CP&f_SB2=1&f_TPR=r2592000&f_WT=2%2C1&geoId=90000049&keywords=programmer&location=Los%20Angeles%20Metropolitan%20Area
|
||||
* Date Posted (Single Pick) f_TPR
|
||||
* Job Type (Multiple Picks) f_JT
|
||||
* Experience Level(Multiple Picks) f_E
|
||||
* On-Site/Remote (Multiple Picks) f_WT
|
||||
* Salary (Single Pick) f_SB2
|
||||
*
|
||||
*/
|
||||
Query.prototype.url = function (start) {
|
||||
let query = `https://${this.host}/jobs-guest/jobs/api/seeMoreJobPostings/search?`;
|
||||
if (this.keyword !== "") query += `keywords=${this.keyword}`;
|
||||
@@ -124,37 +102,40 @@ Query.prototype.getJobs = async function () {
|
||||
allJobs = [];
|
||||
|
||||
while (resultCount > 0) {
|
||||
//fetch our data using our url generator with
|
||||
//the page to start on
|
||||
const { data } = await axios.get(this.url(start));
|
||||
const { data } = await axios.get(this.url(start), {
|
||||
headers: {
|
||||
"User-Agent":
|
||||
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36",
|
||||
Accept:
|
||||
"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
|
||||
"Accept-Language": "en-US,en;q=0.9",
|
||||
"Accept-Encoding": "gzip, deflate, br",
|
||||
Connection: "keep-alive",
|
||||
"Upgrade-Insecure-Requests": "1",
|
||||
},
|
||||
});
|
||||
|
||||
//select data so we can check the number of jobs returned
|
||||
const $ = cheerio.load(data);
|
||||
const jobs = $("li");
|
||||
//if result count ends up being 0 we will stop getting more jobs
|
||||
resultCount = jobs.length;
|
||||
console.log("I got ", jobs.length, " jobs");
|
||||
|
||||
//to get the job data as objects with the desired details
|
||||
parsedJobs = parseJobList(data);
|
||||
allJobs.push(...parsedJobs);
|
||||
|
||||
//increment by 25 bc thats how many jobs the AJAX request fetches at a time
|
||||
start += 25;
|
||||
|
||||
//in order to limit how many jobs are returned
|
||||
//this if statment will return our function value after looping and removing excess jobs
|
||||
if (jobLimit != 0 && allJobs.length > jobLimit) {
|
||||
while (allJobs.length != jobLimit) allJobs.pop();
|
||||
return allJobs;
|
||||
}
|
||||
}
|
||||
//console.log(allJobs)
|
||||
return allJobs;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
|
||||
function parseJobList(jobData) {
|
||||
const $ = cheerio.load(jobData);
|
||||
const jobs = $("li");
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "linkedin-jobs-api",
|
||||
"version": "1.0.3",
|
||||
"version": "1.0.4",
|
||||
"description": "advanced node.js package for getting job listings from LinkedIn",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
|
||||
Reference in New Issue
Block a user