Aggiornato cloudscraper

This commit is contained in:
Alhaziel01
2020-04-05 10:45:28 +02:00
parent 34be96127b
commit 55c6ac7c8f
7 changed files with 178 additions and 81 deletions

View File

@@ -2,7 +2,6 @@ from __future__ import absolute_import
import requests
from ..exceptions import (
reCaptchaServiceUnavailable,
reCaptchaAPIError,
@@ -81,7 +80,7 @@ class captchaSolver(reCaptcha):
}
}
if response.json().get('status') is False and response.json().get('request') in errors.get(request_type):
if response.json().get('status') == 0 and response.json().get('request') in errors.get(request_type):
raise reCaptchaAPIError(
'{} {}'.format(
response.json().get('request'),
@@ -113,7 +112,8 @@ class captchaSolver(reCaptcha):
'action': 'reportbad',
'id': jobID,
'json': '1'
}
},
timeout=30
),
check_success=_checkRequest,
step=5,
@@ -149,7 +149,8 @@ class captchaSolver(reCaptcha):
'action': 'get',
'id': jobID,
'json': '1'
}
},
timeout=30
),
check_success=_checkRequest,
step=5,
@@ -165,7 +166,7 @@ class captchaSolver(reCaptcha):
# ------------------------------------------------------------------------------- #
def requestSolve(self, site_url, site_key):
def requestSolve(self, captchaType, url, siteKey):
def _checkRequest(response):
if response.ok and response.json().get("status") == 1 and response.json().get('request'):
return response
@@ -174,18 +175,29 @@ class captchaSolver(reCaptcha):
return None
data = {
'key': self.api_key,
'pageurl': url,
'json': 1,
'soft_id': 5507698
}
data.update(
{
'method': 'userrcaptcha',
'googlekey': siteKey
} if captchaType == 'reCaptcha' else {
'method': 'hcaptcha',
'sitekey': siteKey
}
)
response = polling.poll(
lambda: self.session.post(
'{}/in.php'.format(self.host),
data={
'key': self.api_key,
'method': 'userrecaptcha',
'googlekey': site_key,
'pageurl': site_url,
'json': '1',
'soft_id': '5507698'
},
allow_redirects=False
data=data,
allow_redirects=False,
timeout=30
),
check_success=_checkRequest,
step=5,
@@ -201,7 +213,7 @@ class captchaSolver(reCaptcha):
# ------------------------------------------------------------------------------- #
def getCaptchaAnswer(self, site_url, site_key, reCaptchaParams):
def getCaptchaAnswer(self, captchaType, url, siteKey, reCaptchaParams):
jobID = None
if not reCaptchaParams.get('api_key'):
@@ -215,7 +227,7 @@ class captchaSolver(reCaptcha):
self.session.proxies = reCaptchaParams.get('proxies')
try:
jobID = self.requestSolve(site_url, site_key)
jobID = self.requestSolve(captchaType, url, siteKey)
return self.requestJob(jobID)
except polling.TimeoutException:
try: