JimmyLaurent / hcaptcha-solver

A library to solve hCaptcha challenges
194 stars 37 forks source link

Patched #13

Open l10r opened 3 years ago

l10r commented 3 years ago

Apparently the solver just got patched.

Anunayj commented 3 years ago

Nope apparently still seems to work (if you modify stuff a bit), the hsl.js location changed to https://assets.hcaptcha.com/c/53571876/hsl.js though

l10r commented 3 years ago

Nope apparently still seems to work (if you modify stuff a bit), the hsl.js location changed to https://assets.hcaptcha.com/c/53571876/hsl.js though

How did you find this, So I can solve this issue in the future. Thanks btw

l10r commented 3 years ago

Nope apparently still seems to work (if you modify stuff a bit), the hsl.js location changed to https://assets.hcaptcha.com/c/53571876/hsl.js though

Can you send me the modified version you did?

FatihAraz commented 3 years ago

in node_modules\hcaptcha-solver\index.js line 24 change: const hsl = await request.get('https://assets.hcaptcha.com/c/500c658/hsl.js'); to const hsl = await request.get('https://assets.hcaptcha.com/c/b147199/hsl.js');

or in the downloaded zip file change the index.js file

Anunayj commented 3 years ago

Well I got the hsl.js location just opening a website that uses hcaptcha and looking at the Network tab. It is loaded from a result of series of very heavily obfuscated code.(everything starts here) So the easiest way to automate the file location would be running that javascript in jail imo, since it doesn't change often and can be safely used for near future.

JustTalDevelops commented 3 years ago

Does anyone know what causes the invalid movement issues? I updated the HSL and everything and I still get them.

Klapkaak078 commented 3 years ago

Well I got the hsl.js location just opening a website that uses hcaptcha and looking at the Network tab. It is loaded from a result of series of very heavily obfuscated code.(everything starts here) So the easiest way to automate the file location would be running that javascript in jail imo, since it doesn't change often and can be safely used for near future.

Are you able to fork this repo and update? because I cant get it work.

FatihAraz commented 3 years ago

Is there any update? since yesterday i am not able to solve hcaptcha. TypeError: Cannot read property 'reduce' of undefined

FatihAraz commented 3 years ago

I was able to solve captchas after changing some codes BUT only let in work in the browser with Browserify. Because hcaptchas new JS uses window objects which are not available in nodejs.

JustTalDevelops commented 3 years ago

I was able to solve captchas after changing some codes BUT only let in work in the browser with Browserify. Because hcaptchas new JS uses window objects which are not available in nodejs.

HSW? You should make your findings public

roachadam commented 3 years ago

@FatihAraz have you had any progress?

FatihAraz commented 3 years ago

The new update is working fine but you get very fast ip rate limit. My solution is a big work around. Not so useful. You have to browserify the current version. And for sending post requests to your server start chrome in security disabled mode. As i said its a big workaround but its working fine

andress134 commented 3 years ago

The new update is working fine but you get very fast ip rate limit. My solution is a big work around. Not so useful. You have to browserify the current version. And for sending post requests to your server start chrome in security disabled mode. As i said its a big workaround but its working fine

Can u share your updates?

FatihAraz commented 3 years ago

take the new update. Take a look at http://browserify.org/. Create a html page and let it work in chrome browser (cors diabled). To start chrome with cors disabled "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/Chrome" Edit: Oh i see the update is gone :( I will post a detailed update. in 10 min.

FatihAraz commented 3 years ago
  1. create a folder in your local server: "C:\xampp\htdocs\hcapthchaForGithub"
  2. cd the folder "cd C:\xampp\htdocs\hcapthchaForGithub"
  3. npm install hcaptcha-solver
  4. Create "app.js" with the example content in the repository
  5. open the file: "node_modules\hcaptcha-solver\index.js"
  6. Line 55: "url: https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=0" change to: "url: https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=1"
  7. Line 67: "n: await hsl(response.c.req)," change to: "n: await hsw(response.c.req),"
  8. install Browserify http://browserify.org/ (if not already installed on your system)
  9. in your working dir. "browserify app.js -o bundle.js"
  10. in your working dir ceate a new index.html file with default html content. https://gist.github.com/MrChuffmanSnippets/2043416
  11. in your html index file add: AND
  12. Start Chrome in security disabled mode: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/Chrome"
  13. In the new chrome session visit your local server. http://localhost/hcapthchaForGithub/
  14. voila check your console you will see the result
andress134 commented 3 years ago
  1. create a folder in your local server: "C:\xampp\htdocs\hcapthchaForGithub"
  2. cd the folder "cd C:\xampp\htdocs\hcapthchaForGithub"
  3. npm install hcaptcha-solver
  4. Create "app.js" with the example content in the repository
  5. open the file: "node_modules\hcaptcha-solver\index.js"
  6. Line 55: "url: https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=0" change to: "url: https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=1"
  7. Line 67: "n: await hsl(response.c.req)," change to: "n: await hsw(response.c.req),"
  8. install Browserify http://browserify.org/ (if not already installed on your system)
  9. in your working dir. "browserify app.js -o bundle.js"
  10. in your working dir ceate a new index.html file with default html content. https://gist.github.com/MrChuffmanSnippets/2043416
  11. in your html index file add: AND
  12. Start Chrome in security disabled mode: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/Chrome"
  13. In the new chrome session visit your local server. http://localhost/hcapthchaForGithub/
  14. voila check your console you will see the result

Do u have any ideea how can solve it if im using agouti and chromedriver ?

matukaking commented 3 years ago

Does anyone know how can I submit the hCaptcha form after i get the Token?

Anunayj commented 3 years ago

submit the form with h-captcha-response field set to the token.

matukaking commented 3 years ago

submit the form with h-captcha-response field set to the token.

Im working with Chromedriver, and I can submit the form in reCaptcha with this line of code: driver.execute_script('___grecaptcha_cfg.clients[0].o.o.callback("'+captcha+'")')

but when I'm trying to solve hCaptcha, i dont know how to submit after i set the response like: driver.execute_script(""" let [captcha] = arguments document.querySelector('[name="h-captcha-response"]').innerHTML = captcha document.querySelector('[name="g-captcha-response"]').innerHTML = captcha document.querySelector('#challenge-form').submit() """, captcha) but its not working ..

Anunayj commented 3 years ago

Change that to

document.querySelector('[name="h-captcha-response"]').value = captcha
document.querySelector('[name="g-captcha-response"]').value = captcha
matukaking commented 3 years ago

Change that to

document.querySelector('[name="h-captcha-response"]').value = captcha
document.querySelector('[name="g-captcha-response"]').value = captcha

And it will submit automatically?

Anunayj commented 3 years ago

Change that to

document.querySelector('[name="h-captcha-response"]').value = captcha
document.querySelector('[name="g-captcha-response"]').value = captcha

And it will submit automatically?

no, keep the rest of your code, just change the innerHTML to value

matukaking commented 3 years ago

Change that to

document.querySelector('[name="h-captcha-response"]').value = captcha
document.querySelector('[name="g-captcha-response"]').value = captcha

And it will submit automatically?

no, keep the rest of your code, just change the innerHTML to value

still nothing happening, probably this line: document.querySelector('#challenge-form').submit() aint do nothing

Anunayj commented 3 years ago

does the form have challenge-form as it's id? Use the correct ID/class/whatever way you can reference it

matukaking commented 3 years ago

does the form have challenge-form as it's id? Use the correct ID/class/whatever way you can reference it

No, i have just copied it from somewhere else, but there is no form at all on the page

andress134 commented 3 years ago

Change that to

document.querySelector('[name="h-captcha-response"]').value = captcha
document.querySelector('[name="g-captcha-response"]').value = captcha

And it will submit automatically?

no, keep the rest of your code, just change the innerHTML to value

still nothing happening, probably this line: document.querySelector('#challenge-form').submit() aint do nothing

does the form have challenge-form as it's id? Use the correct ID/class/whatever way you can reference it

Do u have any ideea if some wrong here, i tried with this go code, and doest work

for html, _ := page.HTML(); strings.Contains(html, "__cf_chl_captcha_tk_"); html, = page.HTML() { if pageurl, err := page.URL(); err == nil { answer := strings.Trim(getAnswer(pageurl, userAgent), "\n") page.RunScript(document.getElementsByName("h-captcha-response")[0].value = " + answer + ", nil, nil) page.RunScript("document.querySelector('.challenge-form').submit()", nil, nil)

matukaking commented 3 years ago

Change that to

document.querySelector('[name="h-captcha-response"]').value = captcha
document.querySelector('[name="g-captcha-response"]').value = captcha

And it will submit automatically?

no, keep the rest of your code, just change the innerHTML to value

still nothing happening, probably this line: document.querySelector('#challenge-form').submit() aint do nothing

does the form have challenge-form as it's id? Use the correct ID/class/whatever way you can reference it

Do u have any ideea if some wrong here, i tried with this go code, and doest work

for html, _ := page.HTML(); strings.Contains(html, "cf_chl_captcha_tk"); html, _ = page.HTML() { if pageurl, err := page.URL(); err == nil { answer := strings.Trim(getAnswer(pageurl, userAgent), "\n") page.RunScript(document.getElementsByName("h-captcha-response")[0].value = " + answer + ", nil, nil) page.RunScript("document.querySelector('.challenge-form').submit()", nil, nil)

We need to find the function from the network panel and use that to submit our token. but I dont know how to find it

matukaking commented 3 years ago

When I solved reCaptcha I had to call the callback function to submit the form like: driver.execute_script('___grecaptcha_cfg.clients[0].K.K.callback("'+captca+'")')

Anunayj commented 3 years ago

If you don't mind me asking, can you link to the page you're trying to submit? You can encrypt it with my GPG key: 0xCCAFEFCCCCCCCCCC, if you don't want to share it publicly.

matukaking commented 3 years ago

If you don't mind me asking, can you link to the page you're trying to submit? You can encrypt it with my GPG key: 0xCCAFEFCCCCCCCCCC, if you don't want to share it publicly.

discord.com/register

Anunayj commented 3 years ago

doesn't discord use recaptcha?

On Fri, Feb 19, 2021 at 6:51 PM albrechtmate notifications@github.com wrote:

If you don't mind me asking, can you link to the page you're trying to submit? You can encrypt it with my GPG key: 0xCCAFEFCCCCCCCCCC http://keys.gnupg.net/pks/lookup?op=get&search=0xCCAFEFCCCCCCCCCC, if you don't want to share it publicly.

discord.com/register

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/JimmyLaurent/hcaptcha-solver/issues/13#issuecomment-782069903, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGKKVAA2JWPASK6FCGF6VSTS7ZQT5ANCNFSM4UZRSWRA .

--

Regards, Anunay

matukaking commented 3 years ago

doesn't discord use recaptcha? On Fri, Feb 19, 2021 at 6:51 PM albrechtmate @.***> wrote: If you don't mind me asking, can you link to the page you're trying to submit? You can encrypt it with my GPG key: 0xCCAFEFCCCCCCCCCC http://keys.gnupg.net/pks/lookup?op=get&search=0xCCAFEFCCCCCCCCCC, if you don't want to share it publicly. discord.com/register — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#13 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGKKVAA2JWPASK6FCGF6VSTS7ZQT5ANCNFSM4UZRSWRA . -- Regards, Anunay yeah it was until today

Anunayj commented 3 years ago

It's kinda weird cause it still uses re-captcha for me.

matukaking commented 3 years ago

It's kinda weird cause it still uses re-captcha for me. Fck, did you try it from chrome browser?

Anunayj commented 3 years ago

no, in Firefox.

On Fri, Feb 19, 2021 at 7:04 PM albrechtmate notifications@github.com wrote:

It's kinda weird cause it still uses re-captcha for me. Fck, did you try it from chrome browser?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/JimmyLaurent/hcaptcha-solver/issues/13#issuecomment-782078734, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGKKVAG2XID7MCTPAXCIGQTS7ZSH7ANCNFSM4UZRSWRA .

--

Regards, Anunay

matukaking commented 3 years ago

no, in Firefox. On Fri, Feb 19, 2021 at 7:04 PM albrechtmate @.***> wrote: It's kinda weird cause it still uses re-captcha for me. Fck, did you try it from chrome browser? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#13 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGKKVAG2XID7MCTPAXCIGQTS7ZSH7ANCNFSM4UZRSWRA . -- Regards, Anunay

for me on Firefox is the same hCaptcha..:(

Anunayj commented 3 years ago

Ok i dug in a little, and Discord actually uses both recaptcha and hcaptcha. It should be fairly easy to automate account creation. and there is no need to involve the chromedriver here for submitting the form. Though I'm not really sure if i wanna help with this.

matukaking commented 3 years ago

no, in Firefox. On Fri, Feb 19, 2021 at 7:04 PM albrechtmate @.***> wrote: It's kinda weird cause it still uses re-captcha for me. Fck, did you try it from chrome browser? — You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub <#13 (comment)>, or unsubscribe https://github.com/notifications/unsubscribe-auth/AGKKVAG2XID7MCTPAXCIGQTS7ZSH7ANCNFSM4UZRSWRA . -- Regards, Anunay

for me on Firefox is the same hCaptcha..:(

If discord receive hcaptcha u can use code like this

for html, _ := page.HTML(); strings.Contains(html, "cf_chl_captcha_tk"); html, _ = page.HTML() { if pageurl, err := page.URL(); err == nil { answer := strings.Trim(getAnswer(pageurl, userAgent), "\n") page.RunScript(document.getElementsByName("h-captcha-response")[0].value = " + answer + ", nil, nil) page.RunScript("document.querySelector('.challenge-form').submit()", nil, nil)

but there is no ".challange-form" on the page, and i dont know how to translate it to python

andress134 commented 3 years ago

Anyone know how can bypass the recaptcha from ddos-guard using this lib? for cf im using chromedriver and a script like

for html, _ := page.HTML(); strings.Contains(html, "cf_chl_captchatk"); html, = page.HTML() { if pageurl, err := page.URL(); err == nil { answer := strings.Trim(getAnswer(pageurl, userAgent), "\n") page.RunScript(document.getElementsByName("h-captcha-response")[0].value = " + answer + ", nil, nil) page.RunScript("document.querySelector('.challenge-form').submit()", nil, nil

But for recaptcha i dont know how can find the html page? on cloudflare i can see '' cf_chl_captcha_tk '' for recaptcha on ddos-guard i can't

lehfernandes commented 3 years ago
  1. create a folder in your local server: "C:\xampp\htdocs\hcapthchaForGithub"
  2. cd the folder "cd C:\xampp\htdocs\hcapthchaForGithub"
  3. npm install hcaptcha-solver
  4. Create "app.js" with the example content in the repository
  5. open the file: "node_modules\hcaptcha-solver\index.js"
  6. Line 55: "url: https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=0" change to: "url: https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=1"
  7. Line 67: "n: await hsl(response.c.req)," change to: "n: await hsw(response.c.req),"
  8. install Browserify http://browserify.org/ (if not already installed on your system)
  9. in your working dir. "browserify app.js -o bundle.js"
  10. in your working dir ceate a new index.html file with default html content. https://gist.github.com/MrChuffmanSnippets/2043416
  11. in your html index file add: AND
  12. Start Chrome in security disabled mode: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/Chrome"
  13. In the new chrome session visit your local server. http://localhost/hcapthchaForGithub/
  14. voila check your console you will see the result

making the changes I have the error: ReferenceError: hsw is not defined

How can I solve please?

FatihAraz commented 3 years ago
  1. create a folder in your local server: "C:\xampp\htdocs\hcapthchaForGithub"
  2. cd the folder "cd C:\xampp\htdocs\hcapthchaForGithub"
  3. npm install hcaptcha-solver
  4. Create "app.js" with the example content in the repository
  5. open the file: "node_modules\hcaptcha-solver\index.js"
  6. Line 55: "url: https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=0" change to: "url: https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=1"
  7. Line 67: "n: await hsl(response.c.req)," change to: "n: await hsw(response.c.req),"
  8. install Browserify http://browserify.org/ (if not already installed on your system)
  9. in your working dir. "browserify app.js -o bundle.js"
  10. in your working dir ceate a new index.html file with default html content. https://gist.github.com/MrChuffmanSnippets/2043416
  11. in your html index file add: AND
  12. Start Chrome in security disabled mode: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/Chrome"
  13. In the new chrome session visit your local server. http://localhost/hcapthchaForGithub/
  14. voila check your console you will see the result

making the changes I have the error: ReferenceError: hsw is not defined

How can I solve please?

are you shure you include the js link in your index html? <script src="https://assets.hcaptcha.com/c/b84668aa/hsw.js"></script>

lehfernandes commented 3 years ago
  1. create a folder in your local server: "C:\xampp\htdocs\hcapthchaForGithub"
  2. cd the folder "cd C:\xampp\htdocs\hcapthchaForGithub"
  3. npm install hcaptcha-solver
  4. Create "app.js" with the example content in the repository
  5. open the file: "node_modules\hcaptcha-solver\index.js"
  6. Line 55: "url: https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=0" change to: "url: https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=1"
  7. Line 67: "n: await hsl(response.c.req)," change to: "n: await hsw(response.c.req),"
  8. install Browserify http://browserify.org/ (if not already installed on your system)
  9. in your working dir. "browserify app.js -o bundle.js"
  10. in your working dir ceate a new index.html file with default html content. https://gist.github.com/MrChuffmanSnippets/2043416
  11. in your html index file add: AND
  12. Start Chrome in security disabled mode: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="C:/Chrome"
  13. In the new chrome session visit your local server. http://localhost/hcapthchaForGithub/
  14. voila check your console you will see the result

making the changes I have the error: ReferenceError: hsw is not defined How can I solve please?

are you shure you include the js link in your index html? <script src="https://assets.hcaptcha.com/c/b84668aa/hsw.js"></script>

Yes, but when running app.js the ReferenceError is displayed

nayde-fr commented 3 years ago

Thanks @FatihAraz for the trick. Now my turn to contribute !

You can embed the hsw function into puppeteer and execute it in fully headless mode :grinning: I give you some code snippets :

let response = (await axios.get(`https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=1`)).data;

const browser = await puppeteer.launch({
    headless: true, 
    args: ['--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36']
});`

const [page] = await browser.pages();
await page.addScriptTag({url: 'https://assets.hcaptcha.com/c/f1430c5c/hsw.js'});
let hswResponse = await page.evaluate(response => hsw(response.c.req), response);

If you got this far you should be able to manage the rest without too many problems !

awxlfy commented 3 years ago

Thanks @FatihAraz for the trick. Now my turn to contribute !

You can embed the hsw function into puppeteer and execute it in fully headless mode 😀 I give you some code snippets :

let response = (await axios.get(`https://hcaptcha.com/checksiteconfig?host=${host}&sitekey=${sitekey}&sc=1&swa=1`)).data;

const browser = await puppeteer.launch({
    headless: true, 
    args: ['--user-agent=Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.97 Safari/537.36']
});`

const [page] = await browser.pages();
await page.addScriptTag({url: 'https://assets.hcaptcha.com/c/f1430c5c/hsw.js'});
let hswResponse = await page.evaluate(response => hsw(response.c.req), response);

If you got this far you should be able to manage the rest without too many problems !

Thanks @nayde-fr I apppreciate this! Unfortunately it seems like the response I'm getting is not the correct response format. When I test it on hcaptcha test sites like https://2captcha.com/demo/hcaptcha or http://democaptcha.com/demo-form-eng/hcaptcha.html I get the response: { "success": false, "error-codes": [ "invalid-input-response" ] }

Any ideas on what I could be doing wrong? I'm more than willing to share code if necessary.

Edit: After hours of messing with my code it seems like the response I'm getting is equivalent to await hsw(response.c.req) that is used in the request made from:

response = await request({
  method: 'post',
  headers,
  json: true,
  url: 'https://hcaptcha.com/getcaptcha',
  form: {
    sitekey,
    host,
    n: await hsw(response.c.req),
    c: JSON.stringify(response.c),
    motionData: {
      st: timestamp,
      dct: timestamp,
      mm: getMouseMovements(timestamp)
    }
  }
});

I've tried manually recreating that request using the data I have since it isn't super hard but this is where I noticed the original code breaks since it is looking for response.key, response.tasklist, etc. after but they doesn't exist within the response. Using the initial fix I have no issues getting a proper response that I can manually put into an hcatpcha form and submit, however, I am trying to fully automate this process using puppeteer so that won't really be that helpful for me.

dinohorvat commented 3 years ago

I just came across this repo. I'm using my own solution in Python which is very similar from what I've seen here.

Is It me or hcaptcha updated something today? Seems like the 'n' token I've been generating is no longer good - I always get No bypass_token found message now. Just wanted to check if you guys were affected as well. I'm working on a fix now.

dinohorvat commented 3 years ago

Update:

There was a change which now requires a version to be sent to /getcaptcha

So just attach v=e0a51cf to form data (or what ever the current version is).

Also as a side note, motionData is completely irrelevant - you don't have to send it.

awxlfy commented 3 years ago

Update:

There was a change which now requires a version to be sent to /getcaptcha

So just attach v=e0a51cf to form data (or what ever the current version is).

Also as a side note, motionData is completely irrelevant - you don't have to send it.

@dinohorvat Thanks for the heads up on that, seems like I'm getting a better response when I add the version. Were you able to get it working?

dinohorvat commented 3 years ago

@aw1875 Yes its working perfectly on my end. (Note that I'm not using this repo, I have my own solution in Python).

awxlfy commented 3 years ago

@dinohorvat I'm not really using it anymore either as I'm trying to automate the process using puppeteer, any chance I can take a peak at what you did and see if I can make sense of it for what I'm trying to do in JS? Seems like I've been able to get most of the way as I'm able to finally get this response after adding the version like you mentioned:

{
  c: {
    type: 'hsw',
    req: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzIjoyLCJ0IjoidyIsImQiOiI1MTgyOTY0Mi0yY2RhLTRiMDktODk2Yy01OTRmODlkNzAwY2MiLCJsIjoiaHR0cHM6Ly9hc3NldHMuaGNhcHRjaGEuY29tL2MvMGY3NTU1OGQiLCJlIjoxNjE1ODE4ODg3fQ.G2J9qzif8nFNek9tlN1ouw3kDZU3i4zqaQvggO33dUo'
  },
  challenge_uri: 'https://hcaptcha.com/challenge/grid/challenge.js',
  key: 'e73e06e5-d305-4417-8c74-5a8434905bfa',
  request_config: {
    version: 0,
    shape_type: null,
    min_points: null,
    max_points: null,
    min_shapes_per_image: null,
    max_shapes_per_image: null,
    restrict_to_coords: null,
    minimum_selection_area_per_shape: null,
    multiple_choice_max_choices: 1,
    multiple_choice_min_choices: 1
  },
  request_type: 'image_label_binary',
  requester_question: { en: 'Please click each image containing a boat' },
  requester_question_example: [
    'https://imgs.hcaptcha.com/27/SlmTCy7Lz4LCAjahpQA54SfVboig/6fDwZgoCAA6zpWjRVRFLLrlmxSwhw3I4vheI7G5EsEhOiH1iNBU90vekFjfYtbdvi7hYehYV3w8fL1e+0GXsvhf9jg==rnAfShy+KprfU9l4',
    'https://imgs.hcaptcha.com/aF61+Uvq8hb+/bEdex6Gw/R7xvQS8bZlgHjQSCT52s9pMA95zTMcPlaMmu44MxBk+dWtvdpvWn7J6iQPhki9XWFfv5wgQbW6cMbpubFu5x5CQRJ6JVk0AETxZQ==FWODtehyavCQPCEu',
    'https://imgs.hcaptcha.com/d1WlCaCp7S/Jv7zyer6CGHHqDNXSLgrryePvx+zeA4SNjKIjTGj+G+qduezfsOpE7DOYGkK8yc9TVxYZhR1eX01Y1mHHV7udskSomDZGL+QeV1iCA5ilZfnPRqcLyMUSyq9WhKBB'
  ],
  tasklist: [
    {
      datapoint_uri: 'https://imgs.hcaptcha.com/PEgweRKSKDJ9Jsb45VOiWrK+AD6ZlKtBQpEWpl2f8s1QTYHhcKirVd0Zvuga0t5iyYBTwiNP/j38Ealhfe+Wrp2UJhvfzvS5kRVSjCgphd3RjuoouIWI/gyreTq5+9Qr4hS14tqOZJu1ZqdVe5h9mIu3Z3/CQ3iLToOjPl5apxF6PPCX4Yka6ieNP9alkRKLLxQxZteqP1DK4V5PVTZp',
      task_key: 'dd5bc33d-923b-4f43-8423-4916e7d6ed6b'
    },
    {
      datapoint_uri: 'https://imgs.hcaptcha.com/qmIIDmNL60vS/i8nzkS7FSXCcHybuLy5o9G+iqgsQZ1vAf65rQTRWiwzXUgr+ZgW4km8Pbmtp4yMGtIYjghQoT3bDAqnjDgWAnGmY7FRuT3/4ZghK4fks1ck1PQlp94huMh9rlguKZpU5W8GILl4zdY7mOPuO4aDDRb5vHaBcFfpYuNHKHlya5d3Qr9dWRSqLOx/ChvrZrchz8UOQrjm',
      task_key: 'ddbbd309-dc94-4d1a-bfb1-a448d7418a15'
    },
    {
      datapoint_uri: 'https://imgs.hcaptcha.com/3tuDvaYNlxEUiP2ca2gMbXZ6CuZVVxKrBw395ekJIGZO5JDzgoSNBMeVvdnbJY+rwCsbxnoRWKYamf/kAz2KZmwCw5DKHzOt8cJ5C1DvydwxS7xKpgY/Lx9kja4tFmuUo63tzGP8ijcMthMy1L8d2D2m8g3MYjSgCPNvZfpgieqRoP3DFCiJmmdQCnFHUpPfnZARA4bBcyI6bGAZccMv',
      task_key: '595b5186-2efb-45f8-b7f0-a15c89b70f0a'
    },
    {
      datapoint_uri: 'https://imgs.hcaptcha.com/br4eWv9ThWoFCARzzVByH30bbWRCp+kPJz5CXU3toLl1R6tdjOiSXAEbGyanzxhy19AVQbFD2KzqBsR3O2rCsWJwN4NqVfEgrIgdQGw15dfJZoxZYaBVIdOKK4m9eO3UFlb7GIve0Fmhwrjwb2aaTR0AL2mw6gD37fyg5CwKEPiSaia/WA808/CSbWVwDflrON0=SteNR1UzZcF+2mhS',
      task_key: 'a900f277-b8c6-4c81-a7ae-3254a55c32af'
    },
    {
      datapoint_uri: 'https://imgs.hcaptcha.com/CTqkR6FyUJ5YfieNQvprIsozKUa+VRNfNMQ7wr2oMLlKAlWpbykOWB+2EJyrXaj8HIlbQMMOfqonKphB/gcTpNGqYaqKgqgbGFK3snVnjE6PKPOKZ7hLLmrqv3AKlZVJgltPIIANVNb4nnC6ws6TCIMIy3PPRv4jIjO0NXJpDiPKvHwK69O1ijAx86tzx41elkSOg3Vxdm2dQmIB1UA1',
      task_key: '7759204f-d94b-427b-89d6-2babd1e040d2'
    },
    {
      datapoint_uri: 'https://imgs.hcaptcha.com/wehOa9egBxS6rvlTPpvcMD/NL6rr14y0klso4c1vNGo5XrMBRlAuiRIZazwoRYXQaCeFHk7zUG3aMZYKKc0LUVDC6esTYgxEn4DxWClF+Mogobfb9WjkW2yniEGtSTr0MGJo9nyy2lJ2aDJ0b7DQnA2qVFTpKhb8if7WasYC7Tam9xVIddo6aYIDUX2049b8Fy0LCqnAeCxxcCZ6PczD',
      task_key: '248eef61-ddc1-4ad1-9777-29c7f592a39b'
    },
    {
      datapoint_uri: 'https://imgs.hcaptcha.com/0oenP4E3kfYdi61gBMKqATZOT1i+1UusLSvlRUZksEnJqpjdnaXzhzK4t8PS+oSo8vkXcQcYHgG5eoHLlnTfT92qb5iAzT4QrhxiAuYtstcGqj5PXVzl2LyOF5wL5npogaENTREXwSTXkOnVLZ8ZlVUiLFbR6+h9vmDg1r4Xx8hX7k4TenTRReuxqjRnwXa+B2M=t5S5zLqeMGRjyTjW',
      task_key: '93dffb80-f1f2-4bf6-bf85-0d7cde55b0cc'
    },
    {
      datapoint_uri: 'https://imgs.hcaptcha.com/57c8WXlALONMDJ1dUXGb7/AD2uZybutSU0kMTMK/mXjRIMZLVHOVtUvf5UbTG2ODVhJ99e8gM7XUCrlSdZw0P5G2cVk2C5C5/S7e4jvxw3gUONjMnPHT5FhH1UPiXi5aGYZRfuzNOZqdznXSDTzGnLZNayMgQba5IrUh+KughRVa6dqJSA/jia5Dt/3PzcsHUG/GrhJN/NRi4X2a3ioz',
      task_key: '0c16663e-e7fd-47f9-90f2-fff9bf426974'
    },
    {
      datapoint_uri: 'https://imgs.hcaptcha.com/7TD28mrtWK1IUr4btDxTTC5hxc6O2/z5NsKZVx/3JKuFC38LMrAIaeAeNoJqKIr4eMTTvR7E2CFWIEarZsKg0SMgUCxUXRofHh+Z9YqnuRNQkzDLAwqESk2+LGpSRiyz76JbMD0O/IlDTti8325eHLq1MELyzVvAAn2hPx/qMUgep3zXHymvaTPdvQ9rMPd63cY/SzLUeyCflnFG8tES',
      task_key: '4fed70fd-2a46-4a94-ba47-774fd2b93337'
    }
  ],
  'bypass-message': 'No bypass_token found.'
}

So I'm assuming the next thing I'd need to do is actually solve it so I can get the response token?

dinohorvat commented 3 years ago

@aw1875 From my experience 'bypass-message': 'No bypass_token found.' means that the n token supplied is wrong.

How do you generate the n token and how does your /getcaptcha call look like?