2captcha / 2captcha-python

Python 3 package for easy integration with the API of 2captcha captcha solving service to bypass recaptcha, сloudflare turnstile, funcaptcha, geetest and solve any other captchas.
https://pypi.org/project/2captcha-python
MIT License
568 stars 95 forks source link

Cloudflare Turnstile solver giving ERROR_BAD_PARAMETERS #60

Closed Binit-Dhakal closed 2 months ago

Binit-Dhakal commented 1 year ago

Hello there, I am trying to use this library to solve Cloudflare turnstile captcha for one of the sites. But I am getting ERROR BAD PARAMETERS as the error. Here is the full log.

result = solver.turnstile(
   ...:         sitekey='0x4AAAAAAAAjq6WYeRDKmebM',
   ...:         url='https://recorder.maricopa.gov/recdocdata/'
   ...: )
---------------------------------------------------------------------------
ApiException                              Traceback (most recent call last)
Cell In[3], line 1
----> 1 result = solver.turnstile(
      2         sitekey='0x4AAAAAAAAjq6WYeRDKmebM',
      3         url='https://recorder.maricopa.gov/recdocdata/'
      4 )

File ~/.local/lib/python3.8/site-packages/twocaptcha/solver.py:443, in TwoCaptcha.turnstile(self, sitekey, url, **kwargs)
    429 def turnstile(self, sitekey, url, **kwargs):
    430     '''
    431     Wrapper for solving Cloudflare Turnstile
    432 
   (...)
    440 
    441     '''
--> 443     result = self.solve(sitekey=sitekey,
    444                         url=url,
    445                         method='turnstile',
    446                         **kwargs)
    447     return result

File ~/.local/lib/python3.8/site-packages/twocaptcha/solver.py:492, in TwoCaptcha.solve(self, timeout, polling_interval, **kwargs)
    475 def solve(self, timeout=0, polling_interval=0, **kwargs):
    476     '''
    477     sends captcha, receives result
    478 
   (...)
    489     result : string
    490     '''
--> 492     id_ = self.send(**kwargs)
    493     result = {'captchaId': id_}
    495     if self.callback is None:

File ~/.local/lib/python3.8/site-packages/twocaptcha/solver.py:546, in TwoCaptcha.send(self, **kwargs)
    542 params = self.rename_params(params)
    544 params, files = self.check_hint_img(params)
--> 546 response = self.api_client.in_(files=files, **params)
    548 if not response.startswith('OK|'):
    549     raise ApiException(f'cannot recognize response {response}')

File ~/.local/lib/python3.8/site-packages/twocaptcha/api.py:76, in ApiClient.in_(self, files, **kwargs)
     73 resp = resp.content.decode('utf-8')
     75 if 'ERROR' in resp:
---> 76     raise ApiException(resp)
     78 return resp

ApiException: ERROR_BAD_PARAMETERS

Any help will be appreciated.

Thank you

Jackson-Vieira commented 10 months ago

i have the same issue

dh12306 commented 10 months ago

me too @nathanielobrown @henry-swe

dh12306 commented 10 months ago

@Binit-Dhakal have you solved ?

Binit-Dhakal commented 10 months ago

Hello @dh12306, Sorry but I was not able to bypass Cloudflare for that website. I was able to bypass it using an "undetected chromedriver", but it made our project's overall structure complicated as we were primarily using playwright and scrapy so we had to unfortunately skip this site. There must be other solutions for Cloudflare which I am not aware of.

Thank you

mauricio-gg commented 7 months ago

This issue is still around -- any updates on it?

devnos commented 5 months ago

I also wonder when this will be fixed and how to solve it?

cg-tester commented 5 months ago

Hello, guys, have you solved that Bad parameter error issue while bypassing turnstile? If you have solution, please let me know.

cg-tester commented 5 months ago

@Binit-Dhakal I can't bypass even by using undetected_chromedriver. Can you help me?

mauricio-gg commented 5 months ago

I am having problems as well, but I think CF may have changed something on their end. It was working fine a few days ago

cg-tester commented 5 months ago

@mauricio-gg did you try it with 2captcha?

mauricio-gg commented 5 months ago

@cg-tester I switched from using their python wrapper to my own functions to call on their API because the wrapper does not support all captcha types.

Anyway, I use 2captcha and I can see that params are getting passed and that I am receiving a response and using it in the callback function, but then we just end up back in the CF page. This was working fine and just stopped working recently.

cg-tester commented 5 months ago

@mauricio-gg can we meet on skype?

heliyahasaniherculesai commented 4 months ago

i have the same issue any updates based on this issue ?

hadi-14 commented 4 months ago

Hey guys, I was randomly checking for other issues related to Cloudfare Turnstile. I figured I could help. I was getting the same issue some hours back took 2-3 days to get it to work but stuck on the last part.

First of all, make sure to submit it as a post sorry my requirements were in javascript so haven't tested with this module.

then I made a big URL with all the params:

https://2captcha.com/in.php?key={apiKey}&method=turnstile&json=1&sitekey=${siteKey}&pageurl=${pageUrl}&useragent=${userAgent}&action=${dataAction}&data=${dataData}&pagedata=${dataPagedata}

UserAgent, page URL, and siteKey are shown as compulsory officially but if action, data, and pagedata are present, we need to give them. can be found with this selector: [data-captcha-type="turnstile"]

There would be data-data parameters and many more refer to the table below:

image URL: https://2captcha.com/blog/bypass-cloudflare-turnstile-captcha

Then you would hopefully be getting a response ID which you can change for the solution and user agent.

I am here stuck unable to figure out how to get the captcha to be verified as there is no submit button I have tried attaching the input value by setting its value but still unable to submit. Can anyone help me?

heliyahasaniherculesai commented 4 months ago

i have the same issue any updates based on this issue ?

I solved the issue. There are two type of turnstile captcha which are standalone and challenge. For challenge a javascript code should be ingested otherwise it will throw some errors.

hadi-14 commented 4 months ago

Could you guide me regarding both of them as I mentioned I am injecting the solution key into the captcha but it doesn't;t get solved or passed ie submitted.

heliyahasaniherculesai commented 4 months ago

Could you guide me regarding both of them as I mentioned I am injecting the solution key into the captcha but it doesn't;t get solved or passed ie submitted.

script = """ console.clear = () => console.log('Console was cleared') const i = setInterval(() => { console.log(window.turnstile) if (window.turnstile) { console.log("injected") clearInterval(i) window.turnstile.render = (a, b) => { let params = { sitekey: b.sitekey, pageurl: window.location.href, data: b.cData, pagedata: b.chlPageData, action: b.action, userAgent: navigator.userAgent, json: 1 } console.log('intercepted-params:' + JSON.stringify(params)) window.cfCallback = b.callback return } } }, 10) """ you should ingest this java script code based on the tool that you are using I hope this assists

hadi-14 commented 4 months ago

But I am getting the solution this gives me the required parameters such as sitekey, data, pagedata and more. How does it submit with the captcha response

heliyahasaniherculesai commented 4 months ago

But I am getting the solution this gives me the required parameters such as sitekey, data, pagedata and more. How does it submit with the captcha response

The code that I have shared is to get those parameters please check the documentation for it for further functions to retrive those. They wrote an article about it.