Skip to content

Commit

Permalink
Release 1.1.40
Browse files Browse the repository at this point in the history
  • Loading branch information
VeNoMouS committed Aug 11, 2019
1 parent c48b25d commit faa50f3
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 37 deletions.
37 changes: 12 additions & 25 deletions cloudscraper/__init__.py
Expand Up @@ -11,7 +11,6 @@

from requests.sessions import Session
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.ssl_ import create_urllib3_context

from .interpreters import JavaScriptInterpreter
from .reCaptcha import reCaptcha
Expand All @@ -34,7 +33,7 @@

##########################################################################################################################################################

__version__ = '1.1.39'
__version__ = '1.1.40'

BUG_REPORT = 'Cloudflare may have changed their technique, or there may be a bug in the script.'

Expand All @@ -44,17 +43,11 @@
class CipherSuiteAdapter(HTTPAdapter):

def __init__(self, cipherSuite=None, **kwargs):
self.cipherSuite = cipherSuite

self.ssl_context = create_urllib3_context(
ssl_version=getattr(ssl, 'PROTOCOL_TLS', ssl.PROTOCOL_TLSv1_2),
ciphers=self.cipherSuite
)
self.ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
self.ssl_context.set_ciphers(cipherSuite)

self.ssl_context.options |= ssl.OP_NO_SSLv2
self.ssl_context.options |= ssl.OP_NO_SSLv3
self.ssl_context.options |= ssl.OP_NO_TLSv1
self.ssl_context.options |= ssl.OP_NO_TLSv1_1
self.ssl_context.options |= (ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3 | ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1)

super(CipherSuiteAdapter, self).__init__(**kwargs)

Expand All @@ -80,8 +73,8 @@ def __init__(self, *args, **kwargs):
self.delay = kwargs.pop('delay', None)
self.interpreter = kwargs.pop('interpreter', 'js2py')
self.recaptcha = kwargs.pop('recaptcha', {})
self.user_agent = User_Agent(allow_brotli=self.allow_brotli, browser=kwargs.pop('browser', None))
self.cipherSuite = None
self.user_agent = User_Agent(allow_brotli=self.allow_brotli, browser=kwargs.pop('browser', None))

super(CloudScraper, self).__init__(*args, **kwargs)

Expand All @@ -106,13 +99,11 @@ def loadCipherSuite(self):
if self.cipherSuite:
return self.cipherSuite

if hasattr(ssl, 'PROTOCOL_TLS') or hasattr(ssl, 'PROTOCOL_TLSv1_2'):
if hasattr(ssl, 'Purpose') and hasattr(ssl.Purpose, 'SERVER_AUTH'):
for cipher in self.user_agent.cipherSuite[:]:
try:
create_urllib3_context(
getattr(ssl, 'PROTOCOL_TLS', ssl.PROTOCOL_TLSv1_2),
ciphers=cipher
)
context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
context.set_ciphers(cipher)
except (OpenSSL.SSL.Error, ssl.SSLError):
self.user_agent.cipherSuite.remove(cipher)
pass
Expand All @@ -121,7 +112,7 @@ def loadCipherSuite(self):
self.cipherSuite = ':'.join(self.user_agent.cipherSuite)
return self.cipherSuite

raise RuntimeError("Your SSL compiled in python does not meet the minimum cipher suite requirements.")
raise RuntimeError("The SSL compiled into python does not meet the minimum cipher suite requirements.")

##########################################################################################################################################################

Expand Down Expand Up @@ -262,13 +253,9 @@ def create_scraper(cls, sess=None, **kwargs):
# Functions for integrating cloudscraper with other applications and scripts
@classmethod
def get_tokens(cls, url, **kwargs):
scraper = cls.create_scraper(
debug=kwargs.pop('debug', False),
delay=kwargs.pop('delay', None),
interpreter=kwargs.pop('interpreter', 'js2py'),
allow_brotli=kwargs.pop('allow_brotli', True),
recaptcha=kwargs.pop('recaptcha', {})
)
scraper = cls.create_scraper(**kwargs)

[kwargs.pop(field, None) for field in ['allow_brotli', 'browser', 'debug', 'delay', 'interpreter', 'recaptcha']]

try:
resp = scraper.get(url, **kwargs)
Expand Down
22 changes: 10 additions & 12 deletions cloudscraper/user_agent/browsers.json
Expand Up @@ -8,22 +8,21 @@
"Accept-Encoding": "gzip, deflate, br"
},
"cipherSuite": [
"TLS13-AES-128-GCM-SHA256",
"TLS13-AES-256-GCM-SHA384",
"TLS13-CHACHA20-POLY1305-SHA256",
"TLS_AES_128_GCM_SHA256",
"TLS_AES_256_GCM_SHA384",
"TLS_CHACHA20_POLY1305_SHA256",
"ECDHE-ECDSA-AES128-GCM-SHA256",
"ECDHE-RSA-AES128-GCM-SHA256",
"ECDHE-ECDSA-AES256-GCM-SHA384",
"ECDHE-RSA-AES256-GCM-SHA384",
"ECDHE-ECDSA-CHACHA20-POLY1305",
"ECDHE-RSA-CHACHA20-POLY1305-OLD",
"ECDHE-RSA-CHACHA20-POLY1305",
"ECDHE-RSA-AES128-SHA",
"ECDHE-RSA-AES256-SHA",
"AES128-GCM-SHA256",
"AES256-GCM-SHA384",
"AES128-SHA",
"AES256-SHA",
"DES-CBC3-SHA"
"AES256-SHA"
],
"releases": {
"Chrome/50.0.0.0": {
Expand Down Expand Up @@ -10945,13 +10944,13 @@
"DNT": "1"
},
"cipherSuite": [
"TLS13-AES-128-GCM-SHA256",
"TLS13-CHACHA20-POLY1305-SHA256",
"TLS13-AES-256-GCM-SHA384",
"TLS_AES_128_GCM_SHA256",
"TLS_CHACHA20_POLY1305_SHA256",
"TLS_AES_256_GCM_SHA384",
"ECDHE-ECDSA-AES128-GCM-SHA256",
"ECDHE-RSA-AES128-GCM-SHA256",
"ECDHE-ECDSA-CHACHA20-POLY1305",
"ECDHE-RSA-CHACHA20-POLY1305-OLD",
"ECDHE-RSA-CHACHA20-POLY1305",
"ECDHE-ECDSA-AES256-GCM-SHA384",
"ECDHE-RSA-AES256-GCM-SHA384",
"ECDHE-ECDSA-AES256-SHA",
Expand All @@ -10961,8 +10960,7 @@
"DHE-RSA-AES128-SHA",
"DHE-RSA-AES256-SHA",
"AES128-SHA",
"AES256-SHA",
"DES-CBC3-SHA"
"AES256-SHA"
],
"releases": {
"Firefox/50.0": {
Expand Down

0 comments on commit faa50f3

Please sign in to comment.