Skip to content

Instantly share code, notes, and snippets.

@DaWe35
Last active February 18, 2025 11:35
Show Gist options
  • Save DaWe35/0febd8b058e4476967d12675a622c989 to your computer and use it in GitHub Desktop.
Save DaWe35/0febd8b058e4476967d12675a622c989 to your computer and use it in GitHub Desktop.
/*
1) Open https://popcat.click
2) Open console (F12)
3) Insert code & run
*/
var event = new KeyboardEvent('keydown', {
key: 'g',
ctrlKey: true
});
setInterval(function(){
for (i = 0; i < 100; i++) {
document.dispatchEvent(event);
}
}, 0);
@kumi8
Copy link

kumi8 commented Aug 15, 2021

Help, I did run the script in chrome console but it wont stop doing it's loop preventing me from using my keyboard. I tried killing chrome in task manager.

er you can just just reload it

@kumi8
Copy link

kumi8 commented Aug 15, 2021

then copy and paste it to put it back

@Mattisbbn
Copy link

France to the moon

@ThomasGitHubcom
Copy link

var event=new KeyboardEvent("keydown",{key:"a",ctrlKey:!0});document.dispatchEvent(event),document.cookie="country=BE;expires=Sat, 31 Dec 2022 12:00:00 UTC;path=/";var a=document.querySelector("#app").__vue__;setInterval(function(){document.dispatchEvent(event),a.counter+=24,a.accumulator=Math.floor(6*Math.random()+795),a.open=false},1e3); No "ban" with this

@Gimmehackcode
Copy link

Thailand number.1 boi

@xinshoutw
Copy link

xinshoutw commented Aug 16, 2021

this is the most
type in console, then it will auto send package to host

var token;
var count = 799;
function auto() {
grecaptcha.execute().then((recaptcha) => {
fetch(`https://stats.popcat.click/pop?pop_count=799&captcha_token=${recaptcha}&token=${token}`,
{
method: 'POST'
}).then((response) => {
return response.json();
}).then((json) => {
token = json.Token;
console.log(count)
count += 800;
setTimeout(auto, 30000);
}).catch((error) => {
setTimeout(auto, 30000);
})
});
}
auto();

@wooneusean
Copy link

var event=new KeyboardEvent("keydown",{key:"a",ctrlKey:!0});document.dispatchEvent(event),document.cookie="country=BE;expires=Sat, 31 Dec 2022 12:00:00 UTC;path=/";var a=document.querySelector("#app").__vue__;setInterval(function(){document.dispatchEvent(event),a.counter+=24,a.accumulator=Math.floor(6*Math.random()+795),a.open=false},1e3); No "ban" with this

Changing your country in the cookies will not help. It does the country checking in the back end.

@supersonictw
Copy link

@Amirulganas
Copy link

malaysia will win.... >:) your mom is yellow

@pemakanwortel
Copy link

how to stop bro

@LimBingSheng
Copy link

delete g will be faster

@louisauhuanyang
Copy link

document.cookie="bot= "
const event = new KeyboardEvent('keydown', { key: 'a', ctrlKey: true });
const timegap = 1 / (790 / (30 * 1000));
setInterval(() => {
document.dispatchEvent(event);
}, timegap);

https://translate.google.com.my/?hl=en&tab=rT&sl=zh-CN&tl=en&text=%E5%A6%82%E6%9E%9Cpop%20cat%20%E7%9A%84%E7%8C%AB%E7%9C%BC%E7%9D%9B%E6%98%AF%E7%BA%A2%E8%89%B2%E7%9A%84%EF%BC%8C%E4%BB%A3%E8%A1%A8%E4%BB%96%E4%BE%A6%E6%B5%8B%E5%88%B0%E4%BD%A0%E7%8E%A9hack&op=translate

@menosimp
Copy link

                    var event = new KeyboardEvent('keydown', {
key: 'h',
ctrlKey: true

});

setInterval(function(){
for (i = 0; i < 5000; i++) {
document.dispatchEvent(event);
}
}, 0);
try this thing i try this and my computer restart

@louisauhuanyang
Copy link

louisauhuanyang commented Aug 17, 2021 via email

@louisauhuanyang
Copy link

louisauhuanyang commented Aug 17, 2021 via email

@Quicksilver0218
Copy link

Quicksilver0218 commented Aug 17, 2021

It is an ineffective hack and it can be useless.

If you look at the source code, you can know the reason.

Let's open webpack:///src/App.vue. You can see that, the client program send a request to the server to update the click count every 30 seconds.

setInterval(this.sendStats, 1000 * 30)

Let's look at sendStats(). You can see the code below.

axios.post(
  `${process.env.VUE_APP_ENDPOINT_POP}?pop_count=${this.accumulator > 800 ? 800 : this.accumulator}&captcha_token=${recaptchaResponseToken}${tokenString}`
).then(
  (res) => {
    if (this.accumulator >= 800) {
      this.sequential_max_pops += 1
      if (this.sequential_max_pops > 10) { // 10*30 seconds = 5 minutes
        this.bot = true
        setCookie('bot', true, 0.5) // Cookie lasts for 12 hours
      }
    } else {
      this.sequential_max_pops = 0
      this.bot = false
    }
    this.accumulator = 0
    if (res.data && res.data.Location && res.data.Location.Code) {
      this.location = res.data.Location.Code
      setCookie('country', res.data.Location.Code, 0.5)
    }
    if (res.data.Token) {
      this.token = res.data.Token
    }
  }
).catch(
  (e) => { }
)

Then, you can find that:

  1. Within a 30-second period, if we click more than 800 times, it will only be treated as 800 times.
  2. If we have >= 800 clicks in each of 10 continuous 30-second periods, we will be classified as a bot. Any click after that will not be sent to the server.

Therefore, your method can only gain 8000 clicks in 5 minutes, and there is no gain after that if you do not clear the cookies and reload the page.

I have tried to send a request to the server with a click count which is > 800, but the server responses 400 - pop_count must be in the range 1-800. It seems that we can only upload 800 clicks in 1 request.

I have also tried to make the requests more frequently (i.e. < 30 seconds), but the server responses 429 - Too Many Requests. It seems that sending more frequently requests with 1 client is not a way to hack. You can simply reproduce that by opening multiple browser tabs, or even multiple browsers to play it, and then look at the "Network" tab of the developer tools to see the result. I didn't make enough test to it so I don't know how it identifies clients. Maybe by IP addresses.

In conclusion, if you want to make an effective hack. First, you should have multiple client instances. You may need thousands or more client instances to produce significant amount of click. Second, all of your client instances should make a request to upload 800 clicks every 30 seconds. Or you may instantiate new clients again and again and just make a 800-click request from each client.

@wooneusean
Copy link

It is an ineffective hack and it can be useless.

If you look at the source code, you can know the reason.

Let's open webpack:///src/App.vue. You can see that, the client program send a request to the server to update the click count every 30 seconds.

setInterval(this.sendStats, 1000 * 30)

Let's look at sendStats(). You can see the code below.

axios.post(
  `${process.env.VUE_APP_ENDPOINT_POP}?pop_count=${this.accumulator > 800 ? 800 : this.accumulator}&captcha_token=${recaptchaResponseToken}${tokenString}`
).then(
  (res) => {
    if (this.accumulator >= 800) {
      this.sequential_max_pops += 1
      if (this.sequential_max_pops > 10) { // 10*30 seconds = 5 minutes
        this.bot = true
        setCookie('bot', true, 0.5) // Cookie lasts for 12 hours
      }
    } else {
      this.sequential_max_pops = 0
      this.bot = false
    }
    this.accumulator = 0
    if (res.data && res.data.Location && res.data.Location.Code) {
      this.location = res.data.Location.Code
      setCookie('country', res.data.Location.Code, 0.5)
    }
    if (res.data.Token) {
      this.token = res.data.Token
    }
  }
).catch(
  (e) => { }
)

Then, you can find that:

1. Within a 30-second period, if we click more than 800 times, it will only be treated as 800 times.

2. If we have >= 800 clicks in 10 continuous 30-second period, we will be classified as a bot. Any click after that will not be sent to the server.

Therefore, your method can only gain 8000 clicks in 5 minutes, and there is no gain after that if you do not clear the cookies and reload the page.

I have tried to send a request to the server with a click count which is > 800, but the server responses 400 - pop_count must be in the range 1-800. It seems that we can only upload 800 clicks in 1 request.

I have also tried to make the requests more frequently (i.e. < 30 seconds), but the server responses 429 - Too Many Requests. It seems that sending more frequently requests with 1 client is not a way to hack. You can simply reproduce that by opening multiple browser tabs, or even multiple browsers to play it, and then look at the "Network" tab of the developer tools to see the result. I didn't make enough test to it so I don't know how it identifies clients. Maybe by IP addresses.

In conclusion, if you want to make an effective hack. First, you should have multiple client instances. You may need thousands or more client instances to produce significant amount of click. Second, all of your client instances should make a request to upload 800 clicks every 30 seconds. Or you may instantiate new clients again and again and just make a 800-click request from each client.

from what I understand, they do the checking based on IP in the backend. If you have a bunch of proxies (make sure you use the country's proxy that you want to boost), it is possible to successfully bot the pops. If you need a bot for it, I created one using puppeteer. Multiple instances of it can be run, the only problem is that I do not have a large lists of working proxies for the country I want to pop for. Also, trying to get through cloudflare with a public proxy is hell unless you use a paid service such as 2captcha.

Heres a link to my bot, pardon the name but I do feel it is the most efficient and effective of the ones I have seen in this thread.

@sumsumisme
Copy link

image

do you guys ever seen this lol

@THEJIZx
Copy link

THEJIZx commented Aug 18, 2021

It's a test

no dude

@irvine48
Copy link

irvine48 commented Aug 18, 2021

var event = new KeyboardEvent('keydown', {
	key: 'g',
	ctrlKey: true
});

setInterval(function(){
	for (i = 0; i < 800; i++) {
		document.dispatchEvent(event);
	}
}, 31000);

guys, no need too fast, server block at 800 per update from your pc in 30 seconds interval,
here is light weight code.

@irvine48
Copy link

var event = new KeyboardEvent('keydown', {
	key: 'g',
	ctrlKey: true
});

setInterval(function(){
	for (i = 0; i < 14; i++) {
		document.dispatchEvent(event);
	}
}, 500);

if you guys prefer more interactive number activity. you can use this code.

@ThomasGitHubcom
Copy link

const _0x5ecf3=_0x2bae;(function(_0x295a5c,_0x5d6b22){const _0x34c7d7=_0x2bae,_0x487e33=_0x295a5c();while(!![]){try{const _0x126ede=parseInt(_0x34c7d7(0xce))/0x1+parseInt(_0x34c7d7(0xbf))/0x2+-parseInt(_0x34c7d7(0xe5))/0x3+parseInt(_0x34c7d7(0xe8))/0x4*(-parseInt(_0x34c7d7(0xbe))/0x5)+parseInt(_0x34c7d7(0xe9))/0x6*(parseInt(_0x34c7d7(0xe0))/0x7)+parseInt(_0x34c7d7(0xdf))/0x8*(-parseInt(_0x34c7d7(0xc8))/0x9)+parseInt(_0x34c7d7(0xd7))/0xa;if(_0x126ede===_0x5d6b22)break;else _0x487e33['push'](_0x487e33['shift']());}catch(_0x60b77){_0x487e33['push'](_0x487e33['shift']());}}}(_0x2f6d,0xc3b8e));function _0x2f6d(){const _0x1ce9ba=['27IseemV','popcat-hack-menu','type','getElementById','remove','app','717604FcwULl','classList','offsetLeft','event','top','backgroundColor','red','-header','rainbow','3379260AtcvHL','initial','onmouseup','cookie','\x0a.wrapper-rainbow\x20{\x20\x0a\x20\x20height:\x20100%;\x0a\x20\x20width:\x20100%;\x0a\x20\x20left:0;\x0a\x20\x20right:\x200;\x0a\x20\x20top:\x200;\x0a\x20\x20bottom:\x200;\x0a\x20\x20position:\x20absolute;\x0abackground:\x20linear-gradient(124deg,\x20#ff2400,\x20#e81d1d,\x20#e8b71d,\x20#e3e81d,\x20#1de840,\x20#1ddde8,\x20#2b1de8,\x20#dd00f3,\x20#dd00f3);\x0abackground-size:\x201800%\x201800%;\x0a\x0a-webkit-animation:\x20rainbow\x2018s\x20ease\x20infinite;\x0a-z-animation:\x20rainbow\x2018s\x20ease\x20infinite;\x0a-o-animation:\x20rainbow\x2018s\x20ease\x20infinite;\x0a\x20\x20animation:\x20rainbow\x2018s\x20ease\x20infinite;}\x0a\x0a@-webkit-keyframes\x20rainbow\x20{\x0a\x20\x20\x20\x200%{background-position:0%\x2082%}\x0a\x20\x20\x20\x2050%{background-position:100%\x2019%}\x0a\x20\x20\x20\x20100%{background-position:0%\x2082%}\x0a}\x0a@-moz-keyframes\x20rainbow\x20{\x0a\x20\x20\x20\x200%{background-position:0%\x2082%}\x0a\x20\x20\x20\x2050%{background-position:100%\x2019%}\x0a\x20\x20\x20\x20100%{background-position:0%\x2082%}\x0a}\x0a@-o-keyframes\x20rainbow\x20{\x0a\x20\x20\x20\x200%{background-position:0%\x2082%}\x0a\x20\x20\x20\x2050%{background-position:100%\x2019%}\x0a\x20\x20\x20\x20100%{background-position:0%\x2082%}\x0a}\x0a@keyframes\x20rainbow\x20{\x20\x0a\x20\x20\x20\x200%{background-position:0%\x2082%}\x0a\x20\x20\x20\x2050%{background-position:100%\x2019%}\x0a\x20\x20\x20\x20100%{background-position:0%\x2082%}\x0a}\x0a\x0a#popcat-hack-menu\x20{\x0a\x20\x20position:\x20absolute;\x0a\x20\x20z-index:\x209;\x0a\x20\x20background-color:\x20#f1f1f1;\x0a\x20\x20border:\x201px\x20solid\x20#d3d3d3;\x0a\x20\x20text-align:\x20center;\x0a}\x0a\x0a#popcat-hack-menu\x20td\x20{\x0a\x20\x20color:\x20white;\x0a\x20\x20height:\x2030px;\x0a\x20\x20cursor:\x20pointer;\x0a\x20\x20line-height:\x2025px;\x0a\x20\x20border-bottom:\x201px\x20solid\x20#d3d3d3;\x0a\x20\x20font-family:\x20\x27Courier\x20New\x27,\x20monospace;\x0a\x20\x20background-color:\x20red;\x0a}\x0a\x0a#popcat-hack-menu\x20th\x20{\x0a\x20\x20padding:\x2010px;\x0a\x20\x20cursor:\x20move;\x0a\x20\x20z-index:\x2010;\x0a\x20\x20background-color:\x20#2196F3;\x0a\x20\x20color:\x20#fff;\x0a\x20\x20font-family:\x20\x27Brush\x20Script\x20MT\x27,\x20cursive;\x0a}\x0a','left','position','indexOf','1310256KMEizf','13489aEJDJL','length','country','dispatchEvent','styleSheet','2844414ZeujzP','green','wrapper-rainbow','172392IalDzK','1362MvAYCB','clientX','preventDefault','clientY','href','cssText','style','getElementsByTagName','offsetTop','keydown','head','appendChild','20bDRrEH','1841190JfCXzG','floor','random','<table\x20id=\x22popcat-hack-menu\x22>\x0a\x20\x20\x20\x20<thead\x20style=\x22min-width:\x20194px\x20!important\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<img\x20src=\x22https://popcat.click/icons/favicon-16x16.png\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20&nbsp;\x20Cool\x20Cat\x20&nbsp;\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<img\x20src=\x22https://popcat.click/icons/favicon-16x16.png\x22>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20</th>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20</thead>\x0a\x20\x20\x20\x20<tbody>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20onclick=\x22cheat_action(this)\x22\x20id=\x22activation\x22>&nbsp;\x0aAuto-Clicker&nbsp;</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20\x20onclick=\x22cheat_action(this)\x22\x20id=\x22rainbow\x22>&nbsp;Rainbow\x20background&nbsp;</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20<tr>\x0a\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20<td\x20style=\x22background-color:\x20grey;cursor:default\x22>&nbsp;By\x20ThomasG#9344&nbsp;</td>\x0a\x20\x20\x20\x20\x20\x20\x20\x20</tr>\x0a\x20\x20\x20\x20</tbody>\x0a</table>','substring','innerHTML','createTextNode','onmousedown','onmousemove'];_0x2f6d=function(){return _0x1ce9ba;};return _0x2f6d();}function addStyle(_0x1978bf){const _0x1aa681=_0x2bae;var _0xf92fd6=document['createElement']('style');_0xf92fd6[_0x1aa681(0xca)]='text/css',_0xf92fd6[_0x1aa681(0xe4)]?_0xf92fd6[_0x1aa681(0xe4)][_0x1aa681(0xee)]=_0x1978bf:_0xf92fd6[_0x1aa681(0xf4)](document[_0x1aa681(0xc5)](_0x1978bf)),document['getElementsByTagName'](_0x1aa681(0xf3))[0x0]['appendChild'](_0xf92fd6);}document[_0x5ecf3(0xf0)]('a')[0x6][_0x5ecf3(0xed)]='#',document[_0x5ecf3(0xf0)]('a')[0x6][_0x5ecf3(0xef)][_0x5ecf3(0xdd)]=_0x5ecf3(0xd8),document[_0x5ecf3(0xf0)]('a')[0x6][_0x5ecf3(0xf0)]('svg')[0x0][_0x5ecf3(0xcc)](),document[_0x5ecf3(0xf0)]('a')[0x6][_0x5ecf3(0xc4)]+=_0x5ecf3(0xc2),document[_0x5ecf3(0xcb)](_0x5ecf3(0xc9))['style'][_0x5ecf3(0xd2)]='20px',document[_0x5ecf3(0xcb)](_0x5ecf3(0xc9))[_0x5ecf3(0xef)]['left']='20px',addStyle(_0x5ecf3(0xdb));var event_one=new KeyboardEvent(_0x5ecf3(0xf2),{'key':'a','ctrlKey':!0x0}),event_two=new KeyboardEvent('keyup',{'key':'a','ctrlKey':!0x0});function _0x2bae(_0x222715,_0x40fc65){const _0x2f6dbf=_0x2f6d();return _0x2bae=function(_0x2baeca,_0x54290e){_0x2baeca=_0x2baeca-0xbe;let _0x14364e=_0x2f6dbf[_0x2baeca];return _0x14364e;},_0x2bae(_0x222715,_0x40fc65);}function setIntervalImmediately(_0x3e0323,_0x169220){return _0x3e0323(),setInterval(_0x3e0323,_0x169220);}function getCookie(_0x36245a){const _0x103ced=_0x5ecf3;let _0x111064=_0x36245a+'=',_0x396717=decodeURIComponent(document[_0x103ced(0xda)])['split'](';');for(let _0xdbfea0=0x0;_0xdbfea0<_0x396717['length'];_0xdbfea0++){let _0x12a1a3=_0x396717[_0xdbfea0];for(;'\x20'==_0x12a1a3['charAt'](0x0);)_0x12a1a3=_0x12a1a3['substring'](0x1);if(0x0==_0x12a1a3[_0x103ced(0xde)](_0x111064))return _0x12a1a3[_0x103ced(0xc3)](_0x111064['length'],_0x12a1a3[_0x103ced(0xe1)]);}return'';}function cheat_action(_0x101667){const _0x1c44ac=_0x5ecf3;'activation'==_0x101667['id']?_0x1c44ac(0xe6)==_0x101667[_0x1c44ac(0xef)]['backgroundColor']?(_0x101667[_0x1c44ac(0xef)]['backgroundColor']=_0x1c44ac(0xd4),cheat_active=!0x1,clearInterval(mycheat)):(cheat_active=!0x0,_0x101667[_0x1c44ac(0xef)]['backgroundColor']=_0x1c44ac(0xe6),mycheat=setIntervalImmediately(function(){const _0x1cdc10=_0x1c44ac;for(total_number=Math[_0x1cdc10(0xc0)](0x6*Math[_0x1cdc10(0xc1)]()+0x31b),i=0x0;i<total_number;i++)0x1==cheat_active&&setTimeout(function(){const _0x335fa1=_0x1cdc10;0x1==cheat_active&&(document[_0x335fa1(0xe3)](event_one),setTimeout(function(){document['dispatchEvent'](event_two);},0x64));},0x1e/total_number*0x3e8);},0x7530)):_0x1c44ac(0xd6)==_0x101667['id']&&(_0x1c44ac(0xe6)==_0x101667[_0x1c44ac(0xef)][_0x1c44ac(0xd3)]?(_0x101667[_0x1c44ac(0xef)][_0x1c44ac(0xd3)]=_0x1c44ac(0xd4),document[_0x1c44ac(0xcb)](_0x1c44ac(0xcd))[_0x1c44ac(0xcf)][_0x1c44ac(0xcc)](_0x1c44ac(0xe7))):(_0x101667[_0x1c44ac(0xef)]['backgroundColor']=_0x1c44ac(0xe6),document[_0x1c44ac(0xcb)]('app')[_0x1c44ac(0xcf)]['add'](_0x1c44ac(0xe7))));}function dragElement(_0x2e2d8d){const _0x26fa28=_0x5ecf3;var _0x541ad8=0x0,_0xfa9db2=0x0,_0x30bde8=0x0,_0x48ca42=0x0;function _0x30ab0b(_0x72aab0){const _0x59ee96=_0x2bae;(_0x72aab0=_0x72aab0||window[_0x59ee96(0xd1)])[_0x59ee96(0xeb)](),_0x30bde8=_0x72aab0['clientX'],_0x48ca42=_0x72aab0['clientY'],document[_0x59ee96(0xd9)]=_0x1f5510,document[_0x59ee96(0xc7)]=_0x341bc9;}function _0x341bc9(_0x528880){const _0x2eabe9=_0x2bae;(_0x528880=_0x528880||window[_0x2eabe9(0xd1)])[_0x2eabe9(0xeb)](),_0x541ad8=_0x30bde8-_0x528880[_0x2eabe9(0xea)],_0xfa9db2=_0x48ca42-_0x528880[_0x2eabe9(0xec)],_0x30bde8=_0x528880['clientX'],_0x48ca42=_0x528880['clientY'],_0x2e2d8d['style'][_0x2eabe9(0xd2)]=_0x2e2d8d[_0x2eabe9(0xf1)]-_0xfa9db2+'px',_0x2e2d8d[_0x2eabe9(0xef)][_0x2eabe9(0xdc)]=_0x2e2d8d[_0x2eabe9(0xd0)]-_0x541ad8+'px';}function _0x1f5510(){const _0x41c5e2=_0x2bae;document[_0x41c5e2(0xd9)]=null,document[_0x41c5e2(0xc7)]=null;}document[_0x26fa28(0xcb)](_0x2e2d8d['id']+_0x26fa28(0xd5))?document[_0x26fa28(0xcb)](_0x2e2d8d['id']+_0x26fa28(0xd5))[_0x26fa28(0xc6)]=_0x30ab0b:_0x2e2d8d[_0x26fa28(0xc6)]=_0x30ab0b;}'BE'==getCookie(_0x5ecf3(0xe2))?alert('🇧🇪\x20Fière\x20d\x27être\x20belge\x20🍻\x0a🇧🇪\x20Proud\x20to\x20be\x20Belgian\x20🍻'):alert('This\x20tool\x20was\x20created\x20in\x20Belgium,\x20let\x20it\x20win\x20😁'),dragElement(document[_0x5ecf3(0xcb)](_0x5ecf3(0xc9))); Anti-Ban + GUI

@PPPPP0303
Copy link

malaysia will win

@Quicksilver0218
Copy link

Quicksilver0218 commented Aug 20, 2021

@euseanwoon2016 You did a great job! I have made a modified version for browsers based on your code.

const popcat = app.__vue__.$children.find((x) => x._uid === 1) || app.__vue__;

(function (sendStats) {
    popcat.sendStats = async () => {
        popcat.accumulator = 800;
        popcat.sequential_max_pops = 0;
        await sendStats();
    };
})(popcat.sendStats);
popcat.interval = true;

var interval;
function send() {
    popcat.sendStats();
    interval = setInterval(popcat.sendStats, 1000 * 29);
}

(function (open) {
    XMLHttpRequest.prototype.open = function (m, u, a, us, p) {
        this.addEventListener(
            'loadend',
            function () {
                if (!this.response) return;
                if (this.responseURL.startsWith('https://stats.popcat.click/pop')) {
                    if (this.status === 201) {
                        popcat.counter += 800;
                        console.log(
                            `%cSuccessfully sent 800 pops.`,
                            'color: green;'
                        );
                    } else {
                        clearInterval(interval);
                        send();
                    }
                }
            }
        );

        open.call(this, m, u, a, us, p);
    };
})(XMLHttpRequest.prototype.open);
send();

Features:

  1. Increment the counter only when the request is accepted successfully (if you don't pop manually)
  2. Lightweight, minimize visual and sound effects
  3. Maximize the request frequency (I found that shortening the period to 29 seconds can still produce a high success rate)

To use this code, please note that you should not pop before entering the code (e.g. pressing F12 to open the developer tools). You may use cursor to open the developer tools from the menu, or just open it before entering popcat.click.

@wooneusean
Copy link

@euseanwoon2016 You did a great job! I have made a modified version for browsers based on your code.

Thanks, and also thanks for the updated code. The one I initially had ran the listener callback twice, and I didn't bother to check other listeners for XHR, so I just did it the lazy way. Will update my code based on yours!

@jvloo
Copy link

jvloo commented Aug 20, 2021

Just left my script here shamelessly 😁
Feedback is welcome.

Notes:

  • Direct send 800 clicks to API per 30s
  • Update counter visually (for those who just wanna see it jumping :P)
  • With error reporting messages
  • Proven working on PC & Mobile browser

Script:

(()=>{"use strict";var e,o,t,c,n,r;async function a(){l("country=MY"),
document.querySelector("#app").__vue__.accumulator=0,
o=await document.querySelector("#app").__vue__.$recaptcha("pop"),t=t?"&token="+t:"",
$.ajax({url:`https://stats.popcat.click/pop?pop_count=800&captcha_token=${o}${t}`,crossDomain:!0})
.then(function(e){t=e.Token,n=parseInt($(".counter").text().replace(/,/g,"")),
function(e){for(var o=0;o<800;o++)setTimeout(()=>{++e,$(".counter").text(e.toLocaleString("en")),
l("pop_count="+e)},5*o)}(n=isNaN(n)?0:n),r="MY"==e.Location.Code?"Malaysia":e.Location.Code,
console.log(`%cSuccessfully sent 800 clicks to ${r}. Total: ${(n+800).toLocaleString("en")}`,"color:green"),
console.log("Waiting for next request in 30s..")}).fail(function(e){switch(e.status){
case 503:console.log("%cFailed due to server error. Retrying in 30s..","color:red");break;
case 429:console.log("%cFailed due to request too often. Retrying in 30s..","color:red"),
console.log("%cReminder: Please run only 1 PopCat per device/IP.","color:yellow");break;
default:console.log("%cFailed due to unknown error. Retrying in 30s..","color:red")}})}
function l(e){document.cookie=e+";expires=Sat, 31 Dec 2022 12:00:00 UTC;path=/"}console.clear(),
(e=document.createElement("script")).src="https://code.jquery.com/jquery-3.3.1.min.js",
document.getElementsByTagName("head")[0].appendChild(e),
c=setInterval(()=>{"undefined"!=typeof $&&(clearInterval(c),setInterval(()=>{a()},3e4),a())},100)})();

@doraflamong
Copy link

lets make our country win

@reachthecoldpizza
Copy link

sorry. but last time i checked, taiwan is leading.

1st- taiwan
2nd- thailand
3rd- hk

:DD lets go hk on the grind

@eternights
Copy link

sounds scary dude

@Haraguroicha
Copy link

Hello everybody, here is one of the bot creator team from Taiwan, we pushed Taiwan as No.1 then Pushed Hong Kong to No.1, next we will pushed Japan to No.1 in few days by using unmodified version of this released code https://github.com/popclick/popclick

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment