new logic of site tasks
This commit is contained in:
parent
d8632f5d41
commit
0dd715917e
|
@ -57,98 +57,90 @@ export const doSitesTasks=async function (client: telegram.TelegramClient,worker
|
|||
await hero.goto(urlButton.url!,{timeoutMs:1300_000});
|
||||
await hero.waitForLoad('AllContentLoaded',{timeoutMs:1180_000});
|
||||
|
||||
|
||||
let captchaButton=hero.document.querySelector('button.g-recaptcha.btn.btn-primary');
|
||||
if (isNull(captchaButton)){
|
||||
|
||||
|
||||
if (isNull(captchaButton) && (await hero.activeTab.url).includes('hkbots')){
|
||||
if (prevTask.task.message==task.message){
|
||||
logger.warn(`Same tasks detected on ${worker.phoneNumber}... Skipping due captcha isnt detected......`);
|
||||
await skipButton.click({sharePhone: false});
|
||||
await waitNewMessages(client,worker,botEntity,task.id);
|
||||
prevTask.task=task;
|
||||
prevTask.lastMessage=(await client.getMessages(botEntity,{
|
||||
minId:task.id
|
||||
}))[0];
|
||||
minId:task.id
|
||||
}))[0];
|
||||
} else {
|
||||
prevTask.task=task;
|
||||
logger.warn(`Captcha isnt detected... | ${worker.phoneNumber}`);
|
||||
}
|
||||
|
||||
continue mainLoop;
|
||||
}
|
||||
prevTask.task=task;
|
||||
if (urlButton.url!.includes('hkbots')==true){
|
||||
if (await captchaButton.$isClickable!=true){
|
||||
// timer page
|
||||
logger.warn(`Found timer... | ${worker.phoneNumber}`)
|
||||
if (settings.bypassMode==true){
|
||||
logger.warn(`Bypassing timer... | ${worker.phoneNumber}`)
|
||||
try {
|
||||
await hero.executeJs("document.getElementById('form').setAttribute('style', '')");
|
||||
} catch (err){
|
||||
logger.error(`Something went wrong due bypass`);
|
||||
}
|
||||
} else {
|
||||
while (hero.document.querySelector("i[id='timer']")!=null && await captchaButton.$isClickable!=true){
|
||||
await sleep(1000);
|
||||
}
|
||||
} else {
|
||||
prevTask.task=task;
|
||||
if ((await hero.activeTab.url).includes('hkbots')){
|
||||
if (await captchaButton.$isClickable!=true){
|
||||
// timer page
|
||||
logger.warn(`Found timer... | ${worker.phoneNumber}`);
|
||||
if (settings.bypassMode==true){
|
||||
logger.warn(`Bypassing timer... | ${worker.phoneNumber}`);
|
||||
try{
|
||||
await hero.executeJs("document.getElementById('form').setAttribute('style', '')");
|
||||
} catch (err){
|
||||
logger.error(`Something went wrong due bypass`);
|
||||
}
|
||||
|
||||
} else {
|
||||
while (hero.document.querySelector("i[id='timer']")!=null && await captchaButton.$isClickable!=true){
|
||||
await sleep(1000);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const now=new Date();
|
||||
while (await hero.activeTab.url==urlButton.url!){
|
||||
if ((+(new Date())-+now)/1000>2*60){
|
||||
if ( (await captchaButton.$isClickable)==false){
|
||||
|
||||
const now=new Date();
|
||||
while (await hero.activeTab.url==urlButton.url!){
|
||||
if ((+(new Date())-+now)/1000>2*60){
|
||||
await skipButton.click({sharePhone: false});
|
||||
await waitNewMessages(client,worker,botEntity,task.id);
|
||||
prevTask.task=task;
|
||||
prevTask.lastMessage=(await client.getMessages(botEntity,{
|
||||
minId:task.id
|
||||
}))[0];
|
||||
minId:task.id
|
||||
}))[0];
|
||||
logger.warn(`Anomaly activity in browser. Please checkout`);
|
||||
continue mainLoop;
|
||||
|
||||
}
|
||||
|
||||
logger.warn(`Anomaly activity in browser. Please checkout`);
|
||||
await hero.reload();
|
||||
}
|
||||
const isCaptchaPassed=hero.document.querySelector("input[id='recaptcha-token']");
|
||||
|
||||
if ((isCaptchaPassed==null || await isCaptchaPassed.$isVisible==false) ){
|
||||
if (await captchaButton.$isClickable){
|
||||
try {
|
||||
await hero.interact({click:{element: captchaButton, verification: 'exactElement'}});
|
||||
} catch( err){
|
||||
|
||||
logger.warn(`Some error due clicking | ${worker.phoneNumber}`);
|
||||
continue mainLoop;
|
||||
} else {
|
||||
const isCaptchaPassed=hero.document.querySelector("input[id='recaptcha-token']");
|
||||
if ((isNull(isCaptchaPassed) || (await isCaptchaPassed.$isVisible)==false) ){
|
||||
if (await captchaButton.$isClickable){
|
||||
try{
|
||||
await hero.interact({click:{element: captchaButton, verification: 'exactElement'}});
|
||||
} catch (err){
|
||||
logger.warn(`Some error due clicking | ${worker.phoneNumber}`);
|
||||
continue mainLoop;
|
||||
}
|
||||
}
|
||||
await sleep(1000);
|
||||
captchaButton=hero.document.querySelector('button.g-recaptcha.btn.btn-primary');
|
||||
} else {
|
||||
logger.error(`Captcha detected | ${worker.phoneNumber}`);
|
||||
throw new Error("Captcha detected");
|
||||
}
|
||||
}
|
||||
await sleep(1000);
|
||||
captchaButton=hero.document.querySelector('button.g-recaptcha.btn.btn-primary');
|
||||
} else {
|
||||
logger.error("catpcha detected");
|
||||
throw new Error("Auhtung captcha detected");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
await waitNewMessages(client,worker,botEntity,task.id);
|
||||
|
||||
const afterTask:telegram.Api.Message=(await client.getMessages(botEntity,{
|
||||
minId:task.id,
|
||||
reverse:true,
|
||||
limit:100
|
||||
})).filter((value)=>{return value.message.includes(settings.botMessages.taskComplete)})[0];
|
||||
prevTask.lastMessage=(await client.getMessages(botEntity,{
|
||||
minId:task.id
|
||||
minId:task.id
|
||||
}))[0];
|
||||
if (afterTask!=null){
|
||||
if (afterTask!=null){ // need update
|
||||
if (afterTask.message.includes(settings.botMessages.taskComplete)==true){
|
||||
logger.info(`Site task complete | ${worker.phoneNumber}`);
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} else if (task.message.includes(settings.botMessages.taskOver)==true){
|
||||
|
|
15
index.ts
15
index.ts
|
@ -8,7 +8,7 @@ import { AccountInterface } from './interfaces/databaseInterface';
|
|||
import { sleep } from 'telegram/Helpers';
|
||||
import findFreePorts from 'find-free-ports';
|
||||
import { waitNewMessages, startNewTorDocker, getIP, getMessagesByEntity, isBannedByClient, randomAB } from './utils';
|
||||
import { connect, tor } from "node-tor-control";
|
||||
import TorControl from "tor-control";
|
||||
import Miner from '@ulixee/miner';
|
||||
import Hero from '@ulixee/hero';
|
||||
import { portsInterface, usedIPInterface } from "./interfaces/otherInterfaces"
|
||||
|
@ -148,12 +148,13 @@ const farm: () => Promise<void> = async () => {
|
|||
for (const worker of workersGroups) {
|
||||
logger.info(`Current worker:${worker.phoneNumber}\nBalance:${worker.balance}`);
|
||||
{
|
||||
let torConnection: any
|
||||
let tor: any
|
||||
try{
|
||||
torConnection= await connect({
|
||||
host: '127.0.0.1',
|
||||
tor=new TorControl({
|
||||
host:'127.0.0.1',
|
||||
port: ports.control,
|
||||
password: 'qwerty',
|
||||
password: 'qwerty', // Your password for tor-control
|
||||
persistent: false // Keep connection (persistent)
|
||||
});
|
||||
} catch( err){
|
||||
logger.error(`Cant connect to tor control via ${ports.control}\n${err}`)
|
||||
|
@ -178,7 +179,7 @@ const farm: () => Promise<void> = async () => {
|
|||
usedIPs.filter((value) => { return _.isEqual(worker, value.worker) })[0].usedIps.push(currentIP);
|
||||
break;
|
||||
} else {
|
||||
await tor.signalNewNYM(torConnection);
|
||||
await tor.signalNewnym();
|
||||
await sleep(3_000);
|
||||
}
|
||||
|
||||
|
@ -416,7 +417,7 @@ const farm: () => Promise<void> = async () => {
|
|||
await miner.listen({port:(await findFreePorts(1))[0]});
|
||||
|
||||
const _ports = await findFreePorts(workers.length * 3);
|
||||
logger.debug(`Is there port of miner:${_ports.indexOf(await miner.port)}, ${await miner.port}`)
|
||||
// logger.debug(`Is there port of miner:${_ports.indexOf(await miner.port)}, ${await miner.port}`)
|
||||
let containers: Docker.Container[] = [];
|
||||
|
||||
{
|
||||
|
|
|
@ -10,10 +10,10 @@
|
|||
"fingerprint-generator": "^2.1.7",
|
||||
"lodash": "^4.17.21",
|
||||
"node-json-db": "^2.1.3",
|
||||
"node-tor-control": "^0.0.2",
|
||||
"prompts": "^2.4.2",
|
||||
"socks5-https-client": "^1.2.1",
|
||||
"telegram": "^2.14.7",
|
||||
"tor-control": "^0.0.3",
|
||||
"typescript": "^4.9.4",
|
||||
"winston": "^3.8.2"
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue