Too much work to support that site, the firewall is too powerful
I managed to solve their PoW , using pure python
I even attemted wiping their catalog
they use very heavy fingerprinting , as for spammer point of view
one of the ways they ban users is fingerprinting , I managed to solve the issue by using
const fingerPrintData = new FingerprintGenerator().getFingerprint({
devices: ['desktop'],
operatingSystems: ['windows'],
browsers: [{ name: 'chrome' }]
})
console.log(fingerPrintData);```
(not having this line for example is autobanned )
my timezone was set to Israel,
and they even hard code, when the timezone is in israle you get auto redirected to https://www.youtube.com/watch?v=vHSNZK4Je-Y
evalutate cost of spamming, is 2$ in proxy bandwith , and maybe some electricity used, but I am a laptop user
----
Side idea , you know like you can solve 4chan captchas? you can also do the same for users,
like have some Puppeteer server cloud , load some of the html or whatever in the site, and output cookies or whatever -- or for this annotying `integrity-v2`
lets be fair you can just, or get a cloud api , so anyone on the internet can request an intergrity v2 - is just run in a browser that isnt detected like ZenDrive or `rebrowser-puppeter-core`
**consider what I learned about fingerprinting I have two ideas which I wont share here, that can easily make me give up**
by far intergrity-v2 is very impressive
// margeService.jsconstaxios=require('axios');const{ wrapper }=require('axios-cookiejar-support');consttough=require('tough-cookie');constargon2=require('argon2');classMargeService{constructor(){this.baseUrl='https://soyjak.st';this.mcchallengeCookie=null;}_createSession(){// cookie jar + axios session (like requests.Session)constjar=newtough.CookieJar();constclient=wrapper(axios.create({
jar,withCredentials: true,headers: {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:141.0) Gecko/20100101 Firefox/141.0'},// do not follow more than default redirects - axios defaults are fine here}));// attach jar so other methods can inspect cookiesclient._cookieJar=jar;returnclient;}async_humanDelay(minMs=100,maxMs=500){constdelay=Math.random()*(maxMs-minMs)+minMs;returnnewPromise((resolve)=>setTimeout(resolve,delay));}// Helper: If you ever need to parse PHC (argon2 encoded) to raw hash_extractHashFromPHC(phcString){// phcString e.g. "$argon2id$v=19$m=4096,t=2,p=1$<salt_b64>$<hash_b64>"constparts=phcString.split('$');if(parts.length>=6){lethashB64=parts[parts.length-1];// fix paddingconstmissingPadding=hashB64.length%4;if(missingPadding)hashB64+='='.repeat(4-missingPadding);returnBuffer.from(hashB64,'base64');}else{thrownewError(`Invalid PHC format: ${phcString}`);}}asyncgetChallenge(session){consturl=`${this.baseUrl}/_challenge/pow`;constheaders={'User-Agent': session.defaults.headers['User-Agent'],'Accept': '*/*','Accept-Language': 'en-US,en;q=0.5','Accept-Encoding': 'gzip, deflate, br','Referer': `${this.baseUrl}/`,'Sec-Gpc': '1','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-origin','Priority': 'u=4','Te': 'trailers'};constresp=awaitsession.get(url,{ headers });if(resp.status!==200){thrownewError(`Failed to get challenge: ${resp.status}`);}returnresp.data;// assumed JSON}asyncsolveChallenge(challenge){consttimestamp=challenge.Timestamp;constdifficulty=challenge.Difficulty;// In original Python they used salt.encode('utf-8'), so we do same:constsaltStr=challenge.Salt;constsalt=Buffer.from(saltStr,'utf8');consttargetPrefix='0'.repeat(difficulty);letnonce=0;conststartTime=Date.now()/1000;while(true){constpasswordBuf=Buffer.from(`${timestamp}:${nonce}`,'utf8');// Use argon2.hash with raw: true to get Buffer// Options mirror the Python call: time_cost=2, memory_cost=4096, parallelism=1, hash_len=32, type=IDconstrawHash=awaitargon2.hash(passwordBuf,{
salt,timeCost: 2,memoryCost: 4096,parallelism: 1,hashLength: 32,type: argon2.argon2id,raw: true});// rawHash is a BufferconsthashHex=rawHash.toString('hex');if(hashHex.startsWith(targetPrefix)){constelapsed=(Date.now()/1000)-startTime;return{nonce: String(nonce),hashRate: elapsed>0 ? nonce/elapsed : 0};}nonce+=1;// Optionally yield control every few iterations to be cooperative (not strictly necessary)if((nonce&0xfff)===0){// yield to event loop occasionallyawaitnewPromise((r)=>setImmediate(r));}}}asyncverifySolution(session,challenge,solution){consturl=`${this.baseUrl}/_challenge/pow/verify`;constdata=newURLSearchParams({timestamp: challenge.Timestamp,salt: challenge.Salt,nonce: solution.nonce,signature: challenge.Signature,hashrate: String(solution.hashRate)});constheaders={'User-Agent': session.defaults.headers['User-Agent'],'Accept': '*/*','Accept-Language': 'en-US,en;q=0.5','Accept-Encoding': 'gzip, deflate, br','Referer': `${this.baseUrl}/`,'Origin': this.baseUrl,'Sec-Gpc': '1','Sec-Fetch-Dest': 'empty','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-origin','Priority': 'u=4','Te': 'trailers','Content-Type': 'application/x-www-form-urlencoded'};constresp=awaitsession.post(url,data.toString(),{ headers });if(resp.status!==200){thrownewError(`Verification failed: ${resp.status}`);}constbody=(typeofresp.data==='string') ? resp.data.trim() : String(resp.data).trim();if(body==='1'){// find cookie that contains '_____mcchallenge' in its nameconstjar=session._cookieJar;// jar.getCookies is callback-based; wrap with Promiseconstcookies=awaitnewPromise((resolve,reject)=>{jar.getCookies(this.baseUrl,(err,cookies)=>{if(err)reject(err);elseresolve(cookies||[]);});});for(constcofcookies){if(c.key&&c.key.includes('_____mcchallenge')){this.mcchallengeCookie=c.value;console.log(`saved challenge: ${this.mcchallengeCookie.substring(0,20)}...`);break;}}}returnbody==='1';}asyncsolvePowIfNeeded(session){console.log('Solving PoW challenge...');constchallenge=awaitthis.getChallenge(session);console.log('Challenge received:',challenge);// await this._humanDelay(200, 200); // optional human-like delayconstsolution=awaitthis.solveChallenge(challenge);// console.log('Solution found:', solution);// await this._humanDelay(2, 200);constsuccess=awaitthis.verifySolution(session,challenge,solution);if(success){console.log('PoW solved successfully');returntrue;}console.log('PoW failed');returnfalse;}}// Example usage (keeps same flow as your Python script)(async()=>{try{consta=newMargeService();constsession=a._createSession();// Solve PoW if neededawaita.solvePowIfNeeded(session);// Then check challenge-check page (like the Python example)constcheckResp=awaitsession.get('https://soyjak.st/challenge-check.html');console.log(checkResp.data);}catch(err){console.error('Error:',err&&err.stack ? err.stack : err);}})();
Too much work to support that site, the firewall is too powerful
The issue you are facing , is the intergity-v2 blocking either the embeded browser or just fingerprint-ban(aka someone on the CHAN-APP got banned, and got eveyrone using the service banned )
Activity
moffatman commentedon Oct 9, 2025
Too much work to support that site, the firewall is too powerful
Mahkhmood8 commentedon Oct 9, 2025
I managed to solve their PoW , using pure python
I even attemted wiping their catalog
they use very heavy fingerprinting , as for spammer point of view
one of the ways they ban users is fingerprinting , I managed to solve the issue by using
Mahkhmood8 commentedon Oct 9, 2025
nodejs version
Mahkhmood8 commentedon Oct 9, 2025
The issue you are facing , is the intergity-v2 blocking either the embeded browser or just fingerprint-ban(aka someone on the CHAN-APP got banned, and got eveyrone using the service banned )
Mahkhmood8 commentedon Oct 9, 2025
I am really saddne by it, because I was planning on making more powerful bot , using an antidetect browser,
the captchas are too aids to train an llm on tbh
i have done it before btw
https://github.com/8chanjikwatkinsQQQQQEdwardArthurKane/8coon-cooner/Mahkhmood8 commentedon Oct 9, 2025
I hate this captcha :(
if I had the skillset, I would have coded a simple
"detect the pepe" , and just type "pepe" and cick the "pepe"
another approch is to train a laguage model and detect some of the text,
but I dont really have the dataset,,
also do not need an LLM to solve it ,,
you can just use the "color range" that they use for "pepe" ,
which is just two base images
anyways , for what cost? So they replace the captcha the moment you start bot them
i ruined the element of surprised, could have used make a lot of users the repost the same message that would drive the pedophile-jannies insane
Mahkhmood8 commentedon Oct 9, 2025
@moffatman sorry for the new captcha thing ,
I should have making the posting more subtle , like mimking real users or whatever -- or ban evaders, not appear as bots :(