new logic of site tasks

This commit is contained in:
minicx 2022-12-11 01:27:49 +03:00
parent d8632f5d41
commit 0dd715917e
3 changed files with 59 additions and 66 deletions

View File

@ -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){

View File

@ -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[] = [];
{

View File

@ -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"
},