Skip to content

Instantly share code, notes, and snippets.

@gaelgerard
Forked from bertolo1988/connect_linkedin.js
Last active October 6, 2023 12:52
Show Gist options
  • Save gaelgerard/d0a78a1ac08187bdc754a3e2cc433ddb to your computer and use it in GitHub Desktop.
Save gaelgerard/d0a78a1ac08187bdc754a3e2cc433ddb to your computer and use it in GitHub Desktop.
Quickly your LinkedIn network
// 1. load https://www.linkedin.com/mynetwork/
// 2. make sure your LinkedIn is in English
// 3. paste this script on chrome dev tools at your own risk
async function moreConnectionsPlease() {
// maximum limit of Connect buttons clicked
const LIMIT = 500;
// wait in ms before each scroll
const SCROLL_TIMEOUT = 600;
// bulk scroll will scroll this amount of times
const BULK_SCROLL_COUNT = 15;
// wait in ms before each click
const CLICK_DELAY = 300;
// if this amount of connections in the page, time to click
const MINIMUM_CONNECTS_TO_CLICK = 60;
// if this amount of connections in the page, time to scroll
const MINIMUM_CONNECTS_TO_SCROLL = 10;
var connects = 0;
var fails = 0;
var tentative = 0;
// retrieves array "Connect" buttons
function selectButtonElements() {
return [...document.querySelectorAll("button span")].filter(a =>
a.textContent.includes("Se connecter")
);
}
// scrolls to the bottom of the page
async function singleScroll() {
return new Promise(resolve => {
setTimeout(() => {
window.scrollTo(0, document.body.scrollHeight);
console.log("scroll!");
resolve();
}, SCROLL_TIMEOUT);
});
}
// delays an html element click
async function singleClick(elem) {
return new Promise(resolve => {
setTimeout(() => {
elem.click();
resolve();
}, CLICK_DELAY);
});
}
// scroll to the bottom of the page several times
async function bulkScroll() {
for (let i = 0; i < BULK_SCROLL_COUNT; i++) {
await singleScroll();
}
}
// click on all but a few Connect buttons
async function bulkClick() {
let elements = selectButtonElements();
console.log("elements length:", elements.length);
for (let i = 0; i < elements.length - MINIMUM_CONNECTS_TO_SCROLL; i++) {
tentative++;
try {
await singleClick(elements[i]);
console.log("click!");
connects++;
} catch (err) {
fails++;
}
}
}
// the list of people to connect to must keep a minimum amount of people
function isManyConnects(amount) {
return selectButtonElements().length >= amount;
}
do {
if (isManyConnects(MINIMUM_CONNECTS_TO_CLICK)) {
console.log("There are plenty of connections, time to click...");
await bulkClick();
} else {
console.log("Out of connections, need to scroll...");
await bulkScroll();
}
console.log(`New Connections:${connects} Failed clicks:${fails} tentatives :${tentative}`);
} while (connects < LIMIT);
}
moreConnectionsPlease();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment