linkedin-crawler
Version:
Automated crawling and messaging for LinkedIn
164 lines (155 loc) • 8.33 kB
JavaScript
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new window.bootstrap.Tooltip(tooltipTriggerEl))
let rabotaetTochkaa = null
let udatscheck = null
document.getElementById('textarea0').addEventListener('input', ()=>{updateTAcounter()});
let isDarkMode = true
function darkMode(){
if(isDarkMode){
isDarkMode = !isDarkMode
document.querySelector('html').setAttribute('data-bs-theme', 'light')
document.getElementById('darkMode').innerHTML = '🌙 Dark Mode'
document.getElementById('darkMode').classList.remove("btn-dark")
document.getElementById('darkMode').classList.add("btn-light")
} else {
isDarkMode = !isDarkMode
document.querySelector('html').setAttribute('data-bs-theme', 'dark')
document.getElementById('darkMode').innerHTML = '🌞 Light Mode'
document.getElementById('darkMode').classList.remove("btn-light")
document.getElementById('darkMode').classList.add("btn-dark")
}
}
function addField(value){
switch(value){
case 0:
document.getElementById('textarea0').value = document.getElementById('textarea0').value + `<<firstname>>`
updateTAcounter()
document.getElementById('textarea0').focus()
break;
case 1:
document.getElementById('textarea0').value = document.getElementById('textarea0').value + `<<lastname>>`
updateTAcounter()
document.getElementById('textarea0').focus()
break;
case 2:
document.getElementById('textarea0').value = document.getElementById('textarea0').value + `<<location>>`
updateTAcounter()
document.getElementById('textarea0').focus()
break;
case 3:
document.getElementById('textarea0').value = document.getElementById('textarea0').value + `<<currentjob>>`
updateTAcounter()
document.getElementById('textarea0').focus()
break;
default:
updateTAcounter()
break;
}
}
function updateTAcounter(){
document.getElementById('lenCounter').innerHTML = 300 - document.getElementById('textarea0').value.length
if(document.getElementById('textarea0').value.length >= 300){
document.getElementById('start').classList.add('disabled')
} else {
document.getElementById('start').classList.remove('disabled')
}
}
function rabotaetTochka(){
document.getElementById('workingMsg').innerHTML.split("").filter(x => x == ".").length == 0 ? document.getElementById('workingMsg').innerHTML = ' Working. ' :
document.getElementById('workingMsg').innerHTML.split("").filter(x => x == ".").length == 1 ? document.getElementById('workingMsg').innerHTML = ' Working.. ':
document.getElementById('workingMsg').innerHTML.split("").filter(x => x == ".").length == 2 ? document.getElementById('workingMsg').innerHTML = ' Working...':
document.getElementById('workingMsg').innerHTML = ' Working '
}
let completion = 50
let countNoUpdates = 0
function updatesChecker(){
fetch('http://localhost:3333/updates', {headers: {'Content-Type':'text/plain'}, }).then((res)=>{return res.json()}).then((res)=> {
if(res=='noUpdates'&&countNoUpdates>=6){document.getElementById('scriptRet').innerHTML += `<p>${res}</p>`;countNoUpdates++;clearInterval(udatscheck);return}
if(res=='noUpdates'){document.getElementById('scriptRet').innerHTML += `<p>${res}</p>`;countNoUpdates++;return}
res=JSON.parse(res)
document.getElementById('progText').innerHTML = `📧 Sending Customized Messages...`
res.forEach((item)=>{
if(item.indexOf('ChallengeException: CHALLENGE')!=-1){haltProcess(true)}
if(item != 'noUpdates'){
document.getElementById('scriptRet').innerHTML += `<p>${item}</p>`
document.getElementById('pbar').style.width = `${completion}%`
++completion
}
})
}).catch((err)=>{
document.getElementById('scriptRet').innerHTML += `<p>Error Fetching Update...${err}</p>`
clearInterval(udatscheck)
})
}
function haltProcess(isChallenge = false){
clearInterval(udatscheck)
clearInterval(rabotaetTochkaa)
document.getElementById('endButton').style.display = 'none'
document.getElementById('pbar').style.display = 'none'
fetch('http://localhost:3333/pkill').then((res)=>{return res.json()}).then((res)=>{
if(res.message=="child killed successfully"){
if(isChallenge){
document.getElementById('progText').innerHTML = `⚠️🤖 ROBOT DETECTION CHALLENGE DETECTED 🤖⚠️</h3><h3>LOG IN FROM YOUR BROWSER</h3><h3>THEN REFRESH AND RUN AGAIN</h3><h3>TO WHITELIST YOUR IP`
document.getElementById('pbar').style.width = '100%'
document.getElementById('start').style.display = 'none'
} else {
document.getElementById('progText').innerHTML = `❌ All Processes Halted`
document.getElementById('pbar').style.width = '100%'
document.getElementById('start').style.display = 'none'
}
} else {
if(isChallenge){
document.getElementById('progText').innerHTML = `⚠️🤖 ROBOT DETECTION CHALLENGE DETECTED 🤖⚠️</h3><h3>LOG IN FROM YOUR BROWSER</h3><h3>THEN REFRESH AND RUN AGAIN</h3><h3>TO WHITELIST YOUR IP`
document.getElementById('pbar').style.width = '100%'
document.getElementById('start').style.display = 'none'
} else {
document.getElementById('start').style.display = 'none'
document.getElementById('progText').innerHTML = `⚠️ Kill Child Failed`
document.getElementById('pbar').style.width = '100%'
}
}
}).catch((err)=>{
document.getElementById('start').style.display = 'none'
document.getElementById('progText').innerHTML = `⚠️ Problem Killing Child`
document.getElementById('pbar').style.width = '100%'
})
}
async function startBrowsin(){
document.getElementById('endButton').style.display = 'flex'
document.getElementById('pbar').style.display = 'flex'
document.getElementById('pbar').focus()
document.getElementById('start').innerHTML = `<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true" id="workingSpinner"> </span> <span id="workingMsg"> Working `
rabotaetTochkaa = setInterval(rabotaetTochka, 666)
// Start Searching
document.getElementById('progText').innerHTML = `✏️ Writing Files...`
document.getElementById('pbar').style.width = '10%'
const username = document.getElementById('emailField').value
const password = document.getElementById('passwordField').value
const message = document.getElementById('textarea0').value
const search = document.getElementById('inputSearchTerm1').value
fetch(`http://localhost:3333/writeFile`, {
method: "post",
headers: {'Content-Type':'text/plain'},
// headers: {'Content-Type':'application/json'},
body: JSON.stringify( {
'username':username,
'password': password,
'message':message,
'search':search
} )
}).then((resp)=>{
if(resp.status!=201){
clearInterval(rabotaetTochkaa)
innerHTML = `❌ File Write Failed! Exiting!`
document.getElementById('start').innerHTML = ''
return
}
document.getElementById('pbar').style.width = '25%'
document.getElementById('progText').innerHTML = `✏️ File Write Success!`
udatscheck = setInterval(updatesChecker,1000)
}).catch((err)=>{
clearInterval(rabotaetTochkaa)
document.getElementById('progText').innerHTML = `❌ File Write Failed!`
document.getElementById('start').innerHTML = ''
})
}