Skip to content

Search for Deployment and PrivatelyLinkAction IDs#12

Open
FubyCutie wants to merge 2 commits intoxyzeva:mainfrom
FubyCutie:main
Open

Search for Deployment and PrivatelyLinkAction IDs#12
FubyCutie wants to merge 2 commits intoxyzeva:mainfrom
FubyCutie:main

Conversation

@FubyCutie
Copy link

Remove hardcoded IDs, in favour of searching for them.

Remove hardcoded IDs, in favour of searching for them
@Northernside
Copy link

image image

unfortunately it doesnt verify on my end (despite it stating it does) :( any recommendations? already restarted the client

@unknownsrc
Copy link

unknownsrc commented Feb 12, 2026

The K_ID_PRIVATELY_ACTION_ID parsing logic seems flawed. You're returning 408838ce2bed4d4db2ae2194cc41cc46d6008d187 while it's actually 408838ce2bed4d4db2ae2194cc41cc46d6008d1872.

Replacing the i-1 in favour of i on the last line fixes that.

@DidiDidi129
Copy link

How can I use this code in place of the url in the script

@FubyCutie
Copy link
Author

The K_ID_PRIVATELY_ACTION_ID parsing logic seems flawed. You're returning 408838ce2bed4d4db2ae2194cc41cc46d6008d187 while it's actually 408838ce2bed4d4db2ae2194cc41cc46d6008d1872.

Replacing the i-1 in favour of i on the last line fixes that.

good catch, I was just visually verifying the functions returned what I expected in a console, not proper testing (not sure how, never really done web dev), and must've missed that

@ColdCookies
Copy link

The K_ID_PRIVATELY_ACTION_ID parsing logic seems flawed. You're returning 408838ce2bed4d4db2ae2194cc41cc46d6008d187 while it's actually 408838ce2bed4d4db2ae2194cc41cc46d6008d1872.
Replacing the i-1 in favour of i on the last line fixes that.

good catch, I was just visually verifying the functions returned what I expected in a console, not proper testing (not sure how, never really done web dev), and must've missed that

what do i replace in the original script to use this, if that's possible? trying to use this before its too late

@DidiDidi129
Copy link

You dont have to be rude about it lol. I am a developer who doesn't have experience in this

@FubyCutie
Copy link
Author

The K_ID_PRIVATELY_ACTION_ID parsing logic seems flawed. You're returning 408838ce2bed4d4db2ae2194cc41cc46d6008d187 while it's actually 408838ce2bed4d4db2ae2194cc41cc46d6008d1872.
Replacing the i-1 in favour of i on the last line fixes that.

good catch, I was just visually verifying the functions returned what I expected in a console, not proper testing (not sure how, never really done web dev), and must've missed that

what do i replace in the original script to use this, if that's possible? trying to use this before its too late

I unfortunately, have no idea, as mentioned, I don't actually know how to run this, I just made sure what I wrote matches what was there before (incorrectly at first 🙁), and left it at that. I wish you luck, maybe look at the top screenshot?

@emi-YFcz5XDj
Copy link

You dont have to be rude about it lol. I am a developer who doesn't have experience in this

The commands in the first screenshot shown in #12 (comment) are basically all you need to run a local instance of this.

@Northernside
Copy link

Northernside commented Feb 12, 2026

The K_ID_PRIVATELY_ACTION_ID parsing logic seems flawed. You're returning 408838ce2bed4d4db2ae2194cc41cc46d6008d187 while it's actually 408838ce2bed4d4db2ae2194cc41cc46d6008d1872.
Replacing the i-1 in favour of i on the last line fixes that.

good catch, I was just visually verifying the functions returned what I expected in a console, not proper testing (not sure how, never really done web dev), and must've missed that

what do i replace in the original script to use this, if that's possible? trying to use this before its too late

You, and EVERYONE ELSE who is not a dev, should pipe down and let them do their jobs instead of asking when the PR's going to be merged or pestering them about doing it yourself. It does not help. Nobody cares that you specifically need to age-verify.

EDIT: Yes, I'm going to be hostile about this. You are wasting other peoples' time. If you are a dev who has no relevant experience, then you admit to being of no help and just wanting to get ahead of the game because you're selfish.

what an insane bullshit to post. you should seriously reconsider your attitude, ffs

im lazy myself but im going to explain it very basically:

  1. install nodejs or bun
  2. download https://github.com/FubyCutie/k-id-age-verifier/archive/refs/heads/main.zip and extract
  3. open cmd or terminal in that extracted folder
  4. run npm i (or bun i if youre using bun)
  5. run npm run dev (or bun run dev)
  6. once it says its ready, open discord.com/app
  7. press f12, optionally type in allow pasting
  8. copy paste the code from the original page (https://age-verifier.kibty.town/) (or http://localhost:5173, doesnt matter)
  9. replace the https://age-verifier.kibty.town/ at the bottom of the code with http://localhost:5173/
  10. run the code in your browser
  11. proceed as usual

if this is isnt specific enough, paste my steps into any LLM (chatgpt/whatever) and let it help you

@DidiDidi129
Copy link

Just saw the edit to the message above

Nothing to do with being selfish, if I came across that way then thats on me and I apologies.

I have asked for help once and I clearly got ignored (thanks to the people who just commented, statement no longer true). I am ok with that. If a dev who knows what they are doing responds to me, great. I am not wasting anyone's time by posting a message that people can chose not to ignore.

@DidiDidi129
Copy link

Thank you guys for helping me lmao

@DidiDidi129
Copy link

DidiDidi129 commented Feb 12, 2026

The K_ID_PRIVATELY_ACTION_ID parsing logic seems flawed. You're returning 408838ce2bed4d4db2ae2194cc41cc46d6008d187 while it's actually 408838ce2bed4d4db2ae2194cc41cc46d6008d1872.
Replacing the i-1 in favour of i on the last line fixes that.

good catch, I was just visually verifying the functions returned what I expected in a console, not proper testing (not sure how, never really done web dev), and must've missed that

what do i replace in the original script to use this, if that's possible? trying to use this before its too late

You, and EVERYONE ELSE who is not a dev, should pipe down and let them do their jobs instead of asking when the PR's going to be merged or pestering them about doing it yourself. It does not help. Nobody cares that you specifically need to age-verify.
EDIT: Yes, I'm going to be hostile about this. You are wasting other peoples' time. If you are a dev who has no relevant experience, then you admit to being of no help and just wanting to get ahead of the game because you're selfish.

what an insane bullshit to post. you should seriously reconsider your attitude, ffs

im lazy myself but im going to explain it very basically:

1. install nodejs or bun

2. download https://github.com/FubyCutie/k-id-age-verifier/archive/refs/heads/main.zip and extract

3. open cmd or terminal in that extracted folder

4. run npm i (or bun i if youre using bun)

5. run npm run dev (or bun run dev)

6. once it says its ready, open discord.com/app

7. press f12, optionally type in allow pasting

8. copy paste the code from the original page (https://age-verifier.kibty.town/) (or http://localhost:5173, doesnt matter)

9. replace the https://age-verifier.kibty.town/ at the bottom of the code with http://localhost:5173/

10. run the code in your browser

11. proceed as usual

if this is isnt specific enough, paste my steps into any LLM (chatgpt/whatever) and let it help you

Thank you for your guide, very helpful!

Just wanted to share that the script doesn't work, for me at least.

image

Edit: fixed an issue with the quote message

@Northernside
Copy link

unfortunately doesnt work for me too :x
as i stated in my comment earlier

@DidiDidi129
Copy link

Ohh ok yes sorry haha

@ColdCookies
Copy link

unfortunately doesnt work for me too :x as i stated in my comment earlier

damn, didn't work for me either. although thanks to you I managed to get through all the steps after a couple tries, and now I have some tiny amount of knowledge on how this stuff works, so thanks!

@Chuborn
Copy link

Chuborn commented Feb 12, 2026

check you haven't just been ratelimited and now it does nothing, after trying a few time i'm getting 429d {"message": "Ton nombre d'actions est limité.", "retry_after": 5264.733, "global": false}

@DidiDidi129
Copy link

Nope, mine says that it has worked successfully but it doesnt.

Maybe we have to wait for a maintainer to solve this?

@Chuborn
Copy link

Chuborn commented Feb 12, 2026

As of rn they only switched to persona in the UK I believe so we probably have a bit more time

@DidiDidi129
Copy link

Do you have a source on that?

I thought it was just regular a/b testing

@Chuborn
Copy link

Chuborn commented Feb 12, 2026

I saw it on twitter 😭 but it would probably make sense due to their harsher regulation

@DidiDidi129
Copy link

Would make sense

@DidiDidi129 DidiDidi129 mentioned this pull request Feb 12, 2026
const randomChoice = <T>(arr: T[]): T => arr[Math.floor(Math.random() * arr.length)];

async function getDeploymentId() {
const body = await fetch('https://assets.k-id.com/family-portal/_next/static/chunks/f5d8702bf5f6d23d.js').then(function(response) { return response.text(); });

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

When k-id updates things on their end, the chunk hash will change, no? Seems like the JS URLs would also need to be fetched dynamically for this to be effective

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

100%

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these are included directly in the discord source as far as I could tell, which led me to believe they might be fixed per file, as otherwise they would have to update every time, however I could be mistaken. If you have any idea where these might be fetched from if so, I'll try and figure that out, for now I have no lead on that

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these are included directly in the discord source as far as I could tell, which led me to believe they might be fixed per file, as otherwise they would have to update every time, however I could be mistaken. If you have any idea where these might be fetched from if so, I'll try and figure that out, for now I have no lead on that

links actually come from the HTML source for the https://family.k-id.com/verify? ... page; (also their all prefixed with ?dpl=20260212022457-12a036e-production
which makes some of it easier, no idea how you'd find which one specifically contains the deployment id

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't see any reason I couldn't just search every file to find generatePrivatelyLinkAction, however I am currently struggling to even get at the HTML to do that, but I think that is purely a skill issue

Copy link

@younesaassila younesaassila Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these are included directly in the discord source as far as I could tell, which led me to believe they might be fixed per file, as otherwise they would have to update every time, however I could be mistaken. If you have any idea where these might be fetched from if so, I'll try and figure that out, for now I have no lead on that

links actually come from the HTML source for the https://family.k-id.com/verify? ... page; (also their all prefixed with ?dpl=20260212022457-12a036e-production which makes some of it easier, no idea how you'd find which one specifically contains the deployment id

Just FYI, the deployment ID can also be retrieved from the x-release-version response header of the /verify request.
The private action ID however seems harder to retrieve. Brute forcing, i.e. fetching all JS assets, would work but I think this should be used only if no other solution is found.

Does anyone with Next.js experience know if server action IDs can be retrieved in a smarter way? (Is the asset file defining them findable deterministically?)

@LiEnby
Copy link

LiEnby commented Feb 12, 2026

The K_ID_PRIVATELY_ACTION_ID parsing logic seems flawed. You're returning 408838ce2bed4d4db2ae2194cc41cc46d6008d187 while it's actually 408838ce2bed4d4db2ae2194cc41cc46d6008d1872.
Replacing the i-1 in favour of i on the last line fixes that.

good catch, I was just visually verifying the functions returned what I expected in a console, not proper testing (not sure how, never really done web dev), and must've missed that

what do i replace in the original script to use this, if that's possible? trying to use this before its too late

You, and EVERYONE ELSE who is not a dev, should pipe down and let them do their jobs instead of asking when the PR's going to be merged or pestering them about doing it yourself. It does not help. Nobody cares that you specifically need to age-verify.
EDIT: Yes, I'm going to be hostile about this. You are wasting other peoples' time. If you are a dev who has no relevant experience, then you admit to being of no help and just wanting to get ahead of the game because you're selfish.

what an insane bullshit to post. you should seriously reconsider your attitude, ffs

im lazy myself but im going to explain it very basically:

1. install nodejs or bun

2. download https://github.com/FubyCutie/k-id-age-verifier/archive/refs/heads/main.zip and extract

3. open cmd or terminal in that extracted folder

4. run npm i (or bun i if youre using bun)

5. run npm run dev (or bun run dev)

6. once it says its ready, open discord.com/app

7. press f12, optionally type in allow pasting

8. copy paste the code from the original page (https://age-verifier.kibty.town/) (or http://localhost:5173, doesnt matter)

9. replace the https://age-verifier.kibty.town/ at the bottom of the code with http://localhost:5173/

10. run the code in your browser

11. proceed as usual

if this is isnt specific enough, paste my steps into any LLM (chatgpt/whatever) and let it help you

honestly this should probably be documented in the readme or something; even if you are vaiguely a 'dev' per-se you might not have ever dealt with Svelte or node before, and it just makes sense to include it ig.. anyway might make a pr for that ,

@sillyhatday
Copy link

Tried all suggested. It doesn't work. I tried Node.js and Bun. It all appears to work successfully but it doesn't seem to do anything to your account.

@CardboardBoxmoore
Copy link

Tried all suggested. It doesn't work. I tried Node.js and Bun. It all appears to work successfully but it doesn't seem to do anything to your account.

i'm also having the same issue, but with node.js and npm. maybe it's because i'm in the UK and they've switched AV providers?

@sillyhatday
Copy link

Tried all suggested. It doesn't work. I tried Node.js and Bun. It all appears to work successfully but it doesn't seem to do anything to your account.

i'm also having the same issue, but with node.js and npm. maybe it's because i'm in the UK and they've switched AV providers?

No idea. I'm also in that location. Wonder if doing it over VPN would make it work. Can't try it right now though

@DADESUPER
Copy link

DADESUPER commented Feb 12, 2026

Tried all suggested. It doesn't work. I tried Node.js and Bun. It all appears to work successfully but it doesn't seem to do anything to your account.

i'm also having the same issue, but with node.js and npm. maybe it's because i'm in the UK and they've switched AV providers?

same issue here, tried through different countries via VPN, when i start the process manually i am redirected to K-id so i don't think it's due to a different provider being used. If it's any help the browser console outputs error 400 when starting the script complaining about "Bad request" to /age-verification/verify. I can't paste the exact error because i'm getting rate limited now.

To clarify: despite the error output in console the script continues and says it verified successfully, however the status does not change in the account and no message is received confirming the verification.

I am using the local version of the script, it may be that i set it up wrong but i'm fairily sure i followed the guide and wouldn't know how to check. the node.js console doesn't output any errors other than a 404 on favicon.ico which shouldn't matter

@LiEnby
Copy link

LiEnby commented Feb 12, 2026

digging through the correct ID is

const K_ID_DEPLOYMENT_ID = '20260212022457-12a036e-production';
const K_ID_PRIVATELY_ACTION_ID = '408838ce2bed4d4db2ae2194cc41cc46d6008d1872';

which also is what the thing to automatically get the ids is giving;

they seem to match what im getting on the offical site requests/body wise; however despite that, its still not verifiyng, suggesting some other change was made on k-id side-

im trying to figure out what exactly .. but this site is so trash it keeps crashing my firefox as soon as i open camera ..

@DADESUPER
Copy link

digging through the correct ID is

const K_ID_DEPLOYMENT_ID = '20260212022457-12a036e-production'; const K_ID_PRIVATELY_ACTION_ID = '408838ce2bed4d4db2ae2194cc41cc46d6008d1872';

which also is what the thing to automatically get the ids is giving;

they seem to match what im getting on the offical site requests/body wise; however despite that, its still not verifiyng, suggesting some other change was made on k-id side-

im trying to figure out what exactly .. but this site is so trash it keeps crashing my firefox

if it's any help, i tried both firefox and chrome and still no dice, also tried disabling ublock just in case

@LiEnby
Copy link

LiEnby commented Feb 12, 2026

digging through the correct ID is
const K_ID_DEPLOYMENT_ID = '20260212022457-12a036e-production'; const K_ID_PRIVATELY_ACTION_ID = '408838ce2bed4d4db2ae2194cc41cc46d6008d1872';
which also is what the thing to automatically get the ids is giving;
they seem to match what im getting on the offical site requests/body wise; however despite that, its still not verifiyng, suggesting some other change was made on k-id side-
im trying to figure out what exactly .. but this site is so trash it keeps crashing my firefox

if it's any help, i tried both firefox and chrome and still no dice, also tried disabling ublock just in case

image i've apparently reached the maximum amount of attempts for creating a selfie, rate limited on discords side, my main account is already verified (did this earlier and it worked .. ) my alters accounts seem to not even have the verify option in the menu;

the site worked a total of 0 times ever, while trying to test it, fun.

@DADESUPER
Copy link

DADESUPER commented Feb 12, 2026

i've apparently reached the maximum amount of attempts for creating a selfie, rate limited on discords side, my main account is already verified (did this earlier and it worked .. ) my alters accounts seem to not even have the verify option in the menu;
the site worked a total of 0 times ever, while trying to test it, fun.

rate limit on selfies may be temporary, i only tried on my alt for this reason, and i suggest other people do the same unless the script is confirmed working, and don't try more than once on accounts you care about if it fails

@LiEnby
Copy link

LiEnby commented Feb 12, 2026

image

looking in devtools i seem to have a failure reason of "PAYLOAD_BYPASS_ATTEMPT" so yeah i think their fingerprinting this script somehow,

its also got a 'max_attempts" and a "attempts", seemingly at 3;
image

anyone who can actually still access the thing (again for some reason all my discord accounts dont seem to have the age verify """feature""" at all; preferably on an alt or throwaway account ... can you try the obvious stuff (i.e changing user agent strings, device stats it sends, etc :? ) .. i thought maybe they changed the aes encryption stuff, because that seems the most logical thing to try change .. but alas i dont know typescript that well to look at anything and well the official site doesn't even fucking work for me;

@DADESUPER
Copy link

DADESUPER commented Feb 12, 2026

I'm as much a fan of open source software as anybody. But in this case, since they're clearly looking at this and trying to patch it i believe if the script devs get it working again they should keep the backend private. at the very least until a few days after discord officially rolls AV out worldwide to give as many people as possible the chance to use this script before it gets patched, and make it as hard as possible for discord/kid to break it

Security through obscurity is considered bad practice, but revealing your hand to someone while they keep theirs hidden is not a good play. So in my opinion working bypass script backends should stay secret for the time being, to make it harder to patch them out

@LiEnby
Copy link

LiEnby commented Feb 12, 2026

I'm as much a fan of open source software as anybody. But in this case, since they're clearly looking at this and trying to patch it i believe if the script devs get it working again they should keep the backend private. at the very least until a few days after discord officially rolls AV out worldwide to give as many people as possible the chance to use this script before it gets patched, and make it as hard as possible for discord/kid to break it

to be clear, there is no secure way to do "on device processing" for this sort of thing, it will always be some bullshit obfuscation, but i dont know maybe, but that also can make it look more suspicious. / less trustworthy to users,

also worth noting that said there are other tools that have been repeatididly attempted to be blocked by the big company running them, such as (e.g; yt-dlp) , and they still generally work .. these kinds of cat-and-mouse games are usually a loosing battle for the companies trying to push them in the long term every so often youtube tried to block youtube downloaders, and yt-dlp gets updated quickly, .. so i dunno 🤷‍♀️ but then there are anti-features like Google Device Attestation, which typically have all the bypasses be closed source following this reasoning

@DADESUPER
Copy link

DADESUPER commented Feb 12, 2026

to be clear, there is no secure way to do "on device processing" for this sort of thing, it will always be some bullshit obfuscation, but i dont know maybe, but that also can make it look more suspicious. / less trustworthy to users,

i mean, what is more suspicious / less trustworthy: sending your face to someone that promises to keep it secret or potentially sending your discord info to a malicious guy that could steal your account?

I know what i'd rather do. It's true that closed source code is sus, but that's the whole reason why we're here isn't it?

If kid open sourced the face verification such that users could actually verify it's entirely client side and could compile and run it locally there would be much less opposition to it. But they won't do that

@DADESUPER
Copy link

DADESUPER commented Feb 12, 2026

This is getting off topic so let's just make a recap of things for anyone checking this out:

  • The script is currently broken, both the website and self hosted version.
  • Attempting to run it may get your account flagged stopping you from trying face verification either temporarily or permanently, forcing you to use your ID.
  • DO NOT ATTEMPT TO USE THE SCRIPT NOW as it will not work and may prevent you from being able to use it on the account once it's fixed.

@Chuborn
Copy link

Chuborn commented Feb 12, 2026

Last I checked it said the acc was ratelimited for 2h due to too many test but it's useless to try rn anyway

@LiEnby
Copy link

LiEnby commented Feb 12, 2026

to be clear, there is no secure way to do "on device processing" for this sort of thing, it will always be some bullshit obfuscation, but i dont know maybe, but that also can make it look more suspicious. / less trustworthy to users,

i mean, what is more suspicious / less trustworthy: sending your face to someone that promises to keep it secret or potentially sending your discord info to a malicious guy that could steal your account?

I know what i'd rather do. It's true that closed source code is sus, but that's the whole reason why we're here isn't it?

no no you see their a company so therefore its totally fine and okay now xS,- please don't think for 5 seconds what the real reaosn behind these """"'safety"""" features are, also don't think too hard about our press release where we say were doing this to .. ' give them agency over their experience.' by denying them agency, and 'safety features that work with teens' that work completley against them and what they'd want; that would be silllyy

anyway back on-topic:

but also i dont know you can always just do the stupid analog-hole attack of just having a photo of someone else; or like a pic from google, that is assuming you can even get the site to work (i couldn't, lmao) .. they have a camera blacklist so you probably cant use obs, (for i wanted to try use udcd_uvc on the ps vita which is probably not on the blacklist lol) but also i suspect you could just fake the webcam name to be like "HP True Vision HD" or something- or photoshop a picture of some id idfk

@DADESUPER
Copy link

DADESUPER commented Feb 12, 2026

but also i dont know you can always just do the stupid analog-hole attack of just having a photo of someone else; or like a pic from google, that is assuming you can even get the site to work (i couldn't, lmao) .. they have a camera blacklist so you probably cant use obs, (for i wanted to try use udcd_uvc on the ps vita which is probably not on the blacklist lol) but also i suspect you could just fake the webcam name to be like "HP True Vision HD" or something- or photoshop a picture of some id idfk

There are fake image verification tools available of varying quality. I have not tested them personally. While they're probably a more robust way to pass the check (as in harder to root out) they're not full bypass scripts as they still require an image, even if it's a 3D model on a screen.

@LiEnby
Copy link

LiEnby commented Feb 12, 2026

but also i dont know you can always just do the stupid analog-hole attack of just having a photo of someone else; or like a pic from google, that is assuming you can even get the site to work (i couldn't, lmao) .. they have a camera blacklist so you probably cant use obs, (for i wanted to try use udcd_uvc on the ps vita which is probably not on the blacklist lol) but also i suspect you could just fake the webcam name to be like "HP True Vision HD" or something- or photoshop a picture of some id idfk

There are fake image verification tools available of varying quality. I have not tested them personally. While they're probably a more robust way to pass the check (as in harder to root out) they're not full bypass scripts as they still require an image, even if it's a 3D model on a screen.

hence my comparison to the analog-hole (i,e breaking video DRM by pointing a camera at the screen) .. it might work, but it kinda sucks too

@mlemlody
Copy link

just use gmans face or citizen007 from hl2 🔥

@NoFileFound
Copy link

What about not just use AI such as thispersondoesnotexist.com and using photoshop's new Smart Portrait to adjust the face?

@emi-YFcz5XDj
Copy link

emi-YFcz5XDj commented Feb 12, 2026

What about not just use AI such as thispersondoesnotexist.com and using photoshop's new Smart Portrait to adjust the face?

This requires either a fake video stream or some way to fool a real camera. Both are a lot less accessible than just paste some code into the console and slip through their verifier.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.